Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Algorithm 是否存在以一对多(1:n)关系为目标的分类算法?_Algorithm_Machine Learning_Data Mining_Classification_Database Relations - Fatal编程技术网

Algorithm 是否存在以一对多(1:n)关系为目标的分类算法?

Algorithm 是否存在以一对多(1:n)关系为目标的分类算法?,algorithm,machine-learning,data-mining,classification,database-relations,Algorithm,Machine Learning,Data Mining,Classification,Database Relations,在数据挖掘领域,有没有关于对具有一对多关系的数据进行分类的研究 例如,对于这样一个问题,假设我试图根据学生的班级成绩和个人信息预测哪些学生将辍学。显然,学生的个人信息与他们在课堂上取得的成绩之间存在一对多的关系 显而易见的方法包括: 聚合-可以通过某种方式将多个记录聚合在一起,从而将问题简化为基本分类问题。在学生分类的情况下,他们的平均成绩可以与他们的个人数据相结合。虽然此解决方案很简单,但通常会丢失关键信息。例如,如果大多数选修有机化学且成绩低于C的学生即使平均成绩高于B+级,最终也会辍学,那

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

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

显而易见的方法包括:

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

  • 投票-创建多个分类器(通常是弱分类器),并让它们投票以确定所讨论数据的总体类别。这就像构建了两个分类器,一个用于学生的课程数据,另一个用于学生的个人数据。每个课程记录都将传递给课程分类器,并且基于分数和课程名称,分类器将仅使用该课程记录预测学生是否会退学。个人数据记录将使用个人数据分类器进行分类。然后,所有班级记录预测以及个人信息记录预测将一起投票。这种投票可以通过多种不同的方式进行,但最有可能的是考虑分类器的准确性以及分类器对投票的确定程度。很明显,这个方案允许使用比聚合更复杂的分类模式,但是还涉及很多额外的复杂性。此外,如果投票表现不好,准确性很容易受到影响


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

    为什么不将每个等级视为同一模型的单独特征

    student['age'] = 23
    student['gender'] = 'male'
     ... 
    student['grade_in_organic_chemistry'] = 'B+'
    student['grade_in_classical_physics'] = 'A-'
    
    我想我不明白为什么你想要“聚合”或将多个分类器连接在一起,而等级可以是不同的特征


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

    如果不知道更多,很难说,但是从贝叶斯的角度来看,您可能对缺少功能的情况感兴趣。我将一般地讨论。更多信息,请参见[杜达和哈特,第二版,第54-55页]

    对于任何分类器,Bayes决策规则都是选择类i,该类i在观察到数据x的情况下使类i出现的概率最大,即最大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)
    

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

  • 正如你所说的“聚合”解决方案,它将利用每个学生情况的各种摘要:上了多少课,有多少课是入门课,101课,平均成绩,最低四分位成绩,等等

  • 某些类型的证据累加器,例如朴素贝叶斯模型(如Steve所建议的)或模糊逻辑规则库。这样的解决方案自然会处理不同数量的传入数据。我认为这可以通过足够的数据来实现,使用一个巨大的传统模型(神经网络等)和一组非常大的输入(其中大多数将被设置为“缺失”的中性值),但我怀疑它是否能与其他选项一样起作用


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

    虽然与专门的方法相比,这可能是次优的,但您可能会使用SVM来纠正不平衡类,如以下示例所示(使用Python库):


    在实践中,我在相当不均衡的课程中取得了很好的成绩。

    如果我没有明确说明这一点,很抱歉,但并非所有学生都选修相同的课程。因此,要么我们在记录中留下大量空值,要么这些记录就不是使用您的解决方案进行分类的标准。我想我不清楚的是,您所说的“记录”是什么意思?您是在询问如何将此学生模型存储在RDBMS中,还是如何为学生的特征集建模以进行分类?如果是后者,我不知道为什么该功能集必须是所有学生的标准。一些学生会有“有机化学等级”的特点,其他学生不会。分类引擎将被设计为理解某些功能是可选的,甚至可能使用该信息来使用.1进行分类,因为您应该首先尝试简单的方法。很多空值可能不是问题——如果使用正确的算法,NLP中的单词包模型中就不会有空值。支持向量机可以很好地处理稀疏的、高维的输入。虽然我认为这种方法在某些情况下可以工作,比如我给出的示例问题,但我认为如果学生的课程记录有大量属性,它可能会遇到麻烦。如果是这种情况,那么每个记录中都会有大量空值(缺少特性)。例如,如果每门课程都有100个属性,那么我们最终可能会有数千个空值和dimensionalit诅咒