本章继上一章中介绍的基本分类方法后,又介绍了分类的高级方法:

贝叶斯网络

在贝叶斯网络中,不强调变量之间的独立性。承认变量或属性间的依赖关系。
在给定的网络拓扑图中,给定概念。
一条弧由节点Y到Z,则Y是Z的双亲或直接前驱,而Z是Y的后代。
给定其双亲,每个变量条件独立于图中它的非后代。
这也说明对于每个变量,应考虑她的双亲节点的所有可能取值的组合情况下,变量取值的概率。
P ( Y P a r e n t s ( Y ) ) P(Y|Parents(Y)) P(YParents(Y))
由此给出,每个变量或属性对应的条件概率表CPT。

以上为肺癌患者属性的关系图。
其中以肺癌为例,该变量的CPT为:

- A,E A,-E -A,E -A,-E
B 0.8 0.5 0.7 0.1
-B 0.2 0.5 0.3 0.9

则可以得出:
P ( B = y e s A = y e s , E = y e s ) = 0.8 P(B=yes|A=yes,E=yes)=0.8 P(B=yesA=yes,E=yes)=0.8
P ( B = n o A = n o , E = n o ) = 0.9 P(B=no|A=no,E=no)=0.9 P(B=noA=no,E=no)=0.9
使用贝叶斯网络进行分类时,并不是返回单个类标号,而是返回概率分布,给出每个类的概率。
用以上例子,我们还可以用来回答实证式查询的概率(倘若给定一个人X光片有问题和呼吸困难,他患肺癌的概率有多大)和最可能的查询解释(哪些人群最有可能X光片有问题和呼吸困难)。
训练贝叶斯网络
步骤:

  1. 计算梯度
  2. 沿梯度方向前进一小步
  3. 重新规格化权重

后向传播

后向传播是神经网络的入门知识,包括前馈神经网络和后向传播更新权重和偏差。
而将后向传播应用于分类,则包括二分类和多分类,取决于输出层的函数(softmax或者relu)
优点
在缺乏属性与类之间的联系的知识时可以使用该方法,并且非常适合连续值的输入和输出
缺点
得到局部极小值。

SVM支持向量机

具体的解释和推导都应该在机器学习中学习。
在分类中,SVM是一种对线性和非线性数据进行分类的方法。
SVM最初对于线性可分的数据,是为了寻找一条“最好”的分离线。***即最佳分离平面。
而何为最佳?即具有最大边缘的超平面。
引入了支持向量的概念,即他们离最大边缘超平面的距离是一样的。
那么问题即转换成了如何求解支持向量和MNH
由于将低维数据变换到高维数据求解时,会遇到很多的点积计算,所需计算量很大,开销很大。于是提出了核函数
SVM的训练会产生全局解

使用频繁模式分类

  • Apriori CBA
  • FP-Growth CMAR
  • DDPMIne 直接从频繁模式树中挖掘具有高度区别能力的频繁模式的集合。

惰性学习法

K近邻分类

结果取决于距离的计算。

基于案例的推理

其他分类方法

遗传算法

在遗传算法中,每个规则使用二进位串表示,假设给定样本具有两个布尔属性A1,A2,并且有两个类C1和C2。即
i f A 1 a n d N O T A 2 = > t h e n C 2 if A_1 and NOTA_2 => then C_2 ifA1andNOTA2=>thenC2
可用二进位串“100”来编码。
接着规则总体通过交叉和变异操作“进化”,直到总体中所有的规则都满足指定的阈值。
关于遗传算法中的交叉、变异、进化、拟合度度量的概念,可以参考下文:
https://zhuanlan.zhihu.com/p/33042667
遗传算法同样可以用于评估其他算法的拟合度。

粗糙集方法

粗糙集理论可用于分类来发现不准确数据或噪声数据内的结构联系。它用于离散值属性,故连续值属性在使用前必须离散化。
同样可以用于属性子集选择(特征规约,识别和删除无助于给定训练数据分类的属性)
相关分析(评估每个属性的贡献或显著性)。
用来近似定义类,这些类基于可以用的属性是不可区分的。

模糊集方法

模糊集理论对于一些数值型属性很受用,对于分类和关联规则挖掘中,允许同一个样本属于多个分类,从分类结果的概率值进行后续挖掘。
用隶属度函数替换连续值属性的“脆弱的”阈值。

分类问题

多分类问题

在SVM中,我们知道是主要针对二分类问题,如果针对多分类问题。
SVM可以使用一对多和多对多的策略。

  1. 一对多,在所有的样本中,每次只分类出一种类别,标记为正样本,其余均为负样本。依此循环,直到全为正样本。
  2. 多对多,对于M个分类的样本集,构造M(M-1)/2个SVM分类器,额,这个对错误的敏感度较高,而且开销较大。

半监督分类

  • 自我训练
    自我将未标记分类的样本进行分类,容易造成强化错误。
  • 协同训练
    通过不同特征训练的分类器来进行协同参考训练,但很难将特征划分为互斥的、类条件独立的集合。

主动学习

主动学习是一种迭代的监督学习,它可能有目的地向用户询问类标号,以此进行模型的训练。
主动学习中大部分的研究在于如何选择被询问的元组

迁移学习

从一个或多个源任务提取知识,并把这些知识运用于目标任务。TrAdaBoost是基于实例的迁移学习方法,它对来自源任务的某些元组进行重新加权,并使用它们学习目标任务,因此只需要很少有标号的目标任务元组。
迁移学习后续将进行jupyter资源的学习。
https://github.com/jindongwang/transferlearning#0latest
https://github.com/dipanjanS/hands-on-transfer-learning-with-python/tree/master/notebooks