关于型号选择的协助

Assistance regarding model choice

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

我的主要问题是:

  1. 当结果基于随时间累积的分数时,是否可以将模型设计为 运行 在连续的基础上,以便它始终给出最佳猜测,是它 运行 在学期的第一天或第 3 个月?

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

用例详细信息

学徒学习学期化课程,4 个学期,每 6 个月。在一个学期的过程中,学徒执行各种操作和流程,并对他们的表现进行评分。每个学期结束后,学徒要么有足够的分数进入第二学期,要么不及格。

我们正在研究建立一个模型,以帮助识别有失败危险的学徒,并为他们提供足够的时间来获得帮助。

每个程序都分配了一个简单、中级或高级的复杂性代码,并按复杂性加权。

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

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

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

这绝对像是一个分类模型问题:

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

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

有大量的 ML 分类模型,如朴素贝叶斯、神经网络、决策树等,可根据数据类型使用。如果您正在寻找建议特定 ML 模型的答案,那么我需要更多相同的数据。不过一般来说,这个flow-chart can be helpful in selection of the same. You can also read about Model Selection from Andrew-Ng's CS229's 5th lecture.

现在回到基本方法论,其中一些特征,如初始面试分数、入学考试分数等,您已经提前知道了。然而,他们中的一些人喜欢在整个学期中的程序表现。

因此,可以说模型总是会在每个学期结束时做出更好的预测

不过,我可以提出一些建议,让它变得更好:

  • 不是将初始程序分数作为 0,而是将它们作为对象学徒过去在其他程序中的表现的mean/median。
  • 您甚至可以构建一个子模型来分析程序分数和面试分数之间的关系,因为它们并不完全独立。 (我会在后面的回答中解释这句话)
  • 但是,如果该学期是学徒科目的第一个学期,那么您将不会为该学徒提供此类数据。在这种情况下,您可能需要考虑与主题学徒具有相似概况的其他学徒的平均表现。如果数据集不是很大,K Nearest Neighbors approach can be quite useful here. However, for large data-sets, KNN suffers from the curse of dimensionality.
  • 此外,绘制 y 和不同变量 x[i] 之间的图形,以查看 y 相对于每个变量的独立变化。
  • 很可能(虽然这只是一个假设),与后来实现的变量相比,y 将更多地依赖于初始变量。原因是后面的变量并不完全独立于前面的变量
  • 我的观点是,如果可以创建一个模型来预测一个学期的输出,那么可以创建一个类似的模型来预测第一个程序测试的输出。
  • 最后,由于该模型可能在很大程度上基于人口因素和其他因素,因此它可能不是一个非常成功的模型。出于同样的原因,我们无法准确预测选举结果、足球比赛结果等,因为它们严重依赖于实时动态数据。
  • 对于基于不同程序性能的动态预测,Time Series Analysis 可能有点帮助。但无论如何,最终的结果将在很大程度上取决于学徒在动机和表现上的连续性,这将在每个学期结束时变得更加明显。