有关模型选择的帮助

时间:2017-03-29 10:21:50

标签: machine-learning data-science

我是新手和调查机器学习。我有一个用例&数据,但我不确定一些事情,主要是我的模型将如何运行,以及开始的模型。用例和问题的详细信息如下。任何建议都表示赞赏。

我的主要问题是:

  1. 当根据随时间累积的分数得出结果时,是否可以设计一个连续运行的模型,以便在任何时候给出最佳猜测,无论是在第一天还是第三个月运行进入学期?

  2. 我应该从什么型号开始?我在考虑分类器,但排名可能也很有趣。

  3. 用例详细信息

    学徒需要一个学期的课程,每学期4个学期,每个学期为6个月。在一个学期的过程中,学徒执行各种操作和过程。对他们的表现进行评分。每学期结束后,学徒要么有足够的分数才能进入第二学期,否则就会失败。

    我们正在调查建立一个模型,以帮助识别有失败危险的学徒,并有足够的时间接受帮助。

    为每个程序分配简单,中间或高级的复杂性代码,并按复杂程度进行加权。

    关于功能,我们有以下内容: -

    • 初次面试成绩
    • 入学考试成绩
    • 每个学徒执行的简单程序总数
    • 每个学徒执行的中间程序总数
    • 每个学徒执行的高级程序总数
    • 每个复杂程度的平均分数
    • 人口统计信息(国籍,年龄,性别)

    我不确定该模型将如何工作以及何时运行它。即 - 如果我们在学期的第一天运行它,我认为每个人都会失败,因为每个人的程序分数都是0

    目前的计划是每个学期运行模型2-3个月,因此有足够的分数数据和还有足够的时间来帮助任何有失败危险的学徒。

1 个答案:

答案 0 :(得分:1)

这看起来像分类模型问题:

y = f(x[0],x[1], ..., x[N-1])

其中y (boolean output) = {pass, fail}x[i]是不同的功能。

有许多ML分类模型,如朴素贝叶斯,神经网络,决策树等,可根据数据类型使用。如果您正在寻找建议特定ML模型的答案,那么我需要更多相同的数据。但是,一般情况下,此flow-chart可能有助于选择相同的内容。您还可以阅读Andrew-Ng的CS229 5th lecture中的模型选择。

现在回到基本方法,其中一些功能,如初步面试成绩,入学考试成绩等,你已事先知道。然而,他们中的一些人喜欢在程序中表现,而在整个学期中都知道。

所以,说这个模型在每个学期结束时总能更好地预测是没有害处的。

但是,我可以提出一些建议,使其更好:

  • 不是将初始程序分数作为0,而是将其作为主题学徒在其他程序中过去表现的平均值/中位数。
  • 您甚至可以建立一个子模型来分析程序分数和面试分数之间的关系,因为它们并非完全独立。 (我将在答案的后半部分解释这句话)
  • 但是,如果学期是学徒学徒的第一学期,那么你就不会有那些学徒的数据。在这种情况下,您可能需要考虑具有与主题学徒类似的配置文件的其他学徒的平均表现。如果数据集不是很大,K Nearest Neighbors方法在这里非常有用。但是,对于大型数据集,KNN会遇到curse of dimensionality
  • 此外,在y和不同变量x[i]之间绘制图表,以便查看y相对于每个变量的独立变化。
  • 最有可能(尽管这只是一个假设),y将更多地依赖于初始变量,以便比较后来获得的变量。原因是后面的变量并不完全独立于前变量
  • 我的观点是,如果可以创建一个模型来预测一个学期的输出,那么就可以创建一个类似的模型来预测第一个程序测试的输出。
  • 最后,由于该模型可能严重依赖于人口统计因素和其他因素,因此它可能不是一个非常成功的模型。出于同样的原因,我们无法准确预测选举结果,足球比赛结果等。因为他们严重依赖于实时动态数据。
  • 对于基于不同程序表现的动态预测,Time Series Analysis可能会有所帮助。但无论如何,最终结果将在很大程度上取决于学徒在动机和表现方面的连续性,这将在每个学期结束时变得更加清晰。