8

在数据挖掘领域是否有关于对具有一对多关系的数据进行分类的研究?

例如像这样的问题,假设我试图根据他们的班级成绩和个人信息来预测哪些学生将辍学。显然,学生的个人信息与他们在课堂上取得的成绩之间存在一对多的关系。

明显的方法包括:

  1. 聚合- 可以以某种方式将多条记录聚合在一起,将问题简化为基本分类问题。在学生分类的情况下,他们的平均成绩可以与他们的个人数据相结合。虽然这个解决方案很简单,但关键信息通常会丢失。例如,如果大多数学习有机化学并且成绩低于 C- 的学生即使他们的平均成绩高于 B+ 也会辍学怎么办。

  2. 表决- 创建多个分类器(通常是弱分类器)并让它们投票以确定相关数据的整体类别。这就像如果构建了两个分类器,一个用于学生的课程数据,一个用于他们的个人数据。每个课程记录将被传递给课程分类器,并根据成绩和课程名称,分类器将预测学生是否会单独使用该课程记录退出。个人数据记录将使用个人数据分类器进行分类。然后将所有班级记录预测连同个人信息记录预测一起投票。这种投票可以通过多种不同的方式进行,但很可能会考虑分类器的准确度以及分类器的投票确定性。显然,该方案允许比聚合更复杂的分类模式,但涉及很多额外的复杂性。此外,如果投票表现不佳,准确性很容易受到影响。

因此,我正在寻找具有一对多关系的数据分类的其他可能解决方案。

4

4 回答 4

2

您为什么不将每个等级视为同一模型的单独功能?

student['age'] = 23
student['gender'] = 'male'
 ... 
student['grade_in_organic_chemistry'] = 'B+'
student['grade_in_classical_physics'] = 'A-'

我想我不明白为什么当成绩可能只是不同的特征时,你会想要“聚合”或将多个分类器连接在一起?

(请原谅上面蹩脚的伪代码,但只是想证明我的观点)

于 2011-01-21T22:24:41.973 回答
1

虽然与专门的方法相比,这可能不是最佳的,但您可能可以使用带有不平衡类校正的 SVM,如下例所示(使用 Python 库scikit-learn):

http://scikit-learn.sourceforge.net/auto_examples/svm/plot_weighted_classes.html

在实践中,我在相当不平衡的课程中取得了不错的成绩。

于 2011-01-24T20:25:09.300 回答
0

不知道更多就很难说,但是从贝叶斯的角度来看,您可能对缺少特征的情况感兴趣。我将笼统地讨论。更多信息,请参见 [Duda and Hart,第 2 版,第 54-55 页]。

对于任何分类器,贝叶斯决策规则是选择在观察到数据x的情况下最大化类i出现的概率的类i,即max P(i|x)。向量x包含特征,例如学生的成绩、年龄等。

不是所有的学生都上相同的课,所以特征向量x可能有空元素,即“缺失特征”。在这种情况下,您必须对缺失的特征进行边缘化,即仅对缺失的特征求和,然后对剩余的好的特征做出决定。

例子。假设一个学生学了生物学,但没有学化学:

P(student drops out | A+ in biology) 
= P(student drops out, A+ in biology)/P(A+ in biology) 
= P(student drops out, A+ in biology, A in chemistry)
  ---------------------------------------------------
  P(A+ in biology, A in chemistry) 
  + 
  P(student drops out, A+ in biology, B in chemistry)
  ---------------------------------------------------
  P(A+ in biology, B in chemistry) 
  + ... + 
  P(student drops out, A+ in biology, F in chemistry)
  ---------------------------------------------------
  P(A+ in biology, F in chemistry)
于 2011-01-22T03:48:02.687 回答
0

我设想了两条基本的前进道路:

  1. 正如你所说的,“综合”解决方案,它将利用每个学生情况的各种总结:上了多少课,有多少百分比的课是入门 101 课,平均成绩,最低四分位数等。

  2. 某种类型的证据累加器,例如朴素贝叶斯模型(史蒂夫已经建议)或模糊逻辑规则库。这样的解决方案自然地处理不同数量的传入数据。我想这可以通过足够的数据来实现,使用一个巨大的传统模型(神经网络等)和一组非常大的输入(其中大部分将被设置为“缺失”的中性值),但我对此表示怀疑会像其他选项一样工作。

抱歉,但我认为在这种特殊情况下,“简单解决方案帮”会很弱。这并不是说它不起作用,但我会从其他地方开始。

于 2011-01-22T12:05:14.097 回答