1、第三章:线性模型
多分类学习:不失一般性,考虑N个类别,多分类学习的基本思路是"拆解法",即将多分类任务拆为若干个二分类任务求解。具体来说,先对问题进行拆分,然后为拆出的每个二分类任务训练一个分类器;在测试时,对这些分类器的预测结果进行集成以获得最终的多分类结果。
最经典的拆分策略有三种:一对一,一对其余,多对多。
多分类学习:一对一策略(OvO):给定数据集D,其中有N个分类,那么一对一的策略将这N个类别两两配对,从而产生N(N-1)/2个二分类任务,例如OvO将为区分类别Ci和Cj训练一个分类器,该分类器把D中的Ci类样例作为正例,Cj类样例作为反例。在测试阶段,新样本将同时提交给所有分类器,于是我们会得到N(N-1)/2个结果,最终结果可通过投票产生:即把被预测的最多的类别作为最终的分类结果。
多分类学习:一对多策略(OvR):OvR则是每次讲一个类的样例作为正例,所有其他类的样例作为反例来训练N个分类器,在测试时若仅有一个分类器预测为正类,则对应的类别标记便是最终的分类结果,如果有多个分类器预测为正类,则通常考虑各分类器的预测置信度,选择置信度最大的类别标记作为分类结果。
下图展示了OvO和OvR策略的示意图:
多分类学习:多对赌策略(MvM):MvM每次将若干个类作为正类,若干个其他类作为反类,MvM的正反类构造必须有特殊的设计,不能随意选取,这里我们介绍一种最常用的MvM技术,“纠错输出码”(EOOC):
EOOC是将编码的思想引入类别拆分,并尽可能在解码过程中具有容错性,EOOC的工作过程主要分为两步:
编码:对N个类别做M次划分,每次划分将一部分类别划分为正类,一部分划分为反类,从而形成一个二分类训练集;这样一共产生M个训练集,可训练出M个分类器。
解码:M个分类器分别对测试样本进行预测,这些预测标记组成一个编码,将这个预测编码与每个类别各自的编码进行比较,返回其中距离最小的类别作为最终预测结果。
类别划分通过编码矩阵指定,编码矩阵有多种形式,最常见的是二元码和三元码,前者将每个类别分别指定为正类和反类,后者在这个基础上增加了停用类。如下是EOOC的示意图:
2、第四章:决策树
连续值处理:最简单的策略是采用二分法,连续属性如果有N个取值,则有N-1个分割点,然后就可以对这N-1个分割点分别计算其信息增益,以选取最好的分割点。
缺失值处理:直接上图:
3、第五章:神经网络
如何跳出局部极小:神经网络中容易陷入局部极小的问题,那么实际中如何跳出局部极小呢?主要有以下几种策略:
1)以多组不同的参数值初始化多个神经网络,按标准方法训练后,取其中误差最小的解作为最终参数,这相当于从多个不同的初始点开始搜索,这样就可能陷入不同的局部极小,从中进行选择有可能获得更接近全局最小的结果。
2)模拟退火,模拟退火在每一步都以一定的概率接受比当前解更差的结果,从而有助于跳出局部极小,在每步迭代过程中,接受次优解的概率要随着时间的推移而逐渐降低,从而保证算法的稳定性。
3)使用随机梯度下降,与标准梯度下降法精确计算梯度不同,随机梯度下降法在计算梯度时加入了随机因素,于是,即便陷入局部极小点,它计算出的梯度仍可能不为0,这样就有机会跳出局部极小继续搜索。
4)遗传方法也经常用来训练神经网络以更好的逼近全局最小。
4、第六章:支持向量机
支持向量机回归SVR
这样我们可以得到一个带正则项的损失函数:
可以看到,这个误差函数中后面一部分与SVM中的目标函数类似,我们再将二次误差函数替换为⼀个ϵ -不敏感误差函数,于是SVR问题可形式为:
ϵ -不敏感误差函数如下:
通过引入松弛变量的方式,我们可以重新表达最优化问题。对于每个数据点xn,我们现在需要两个松弛变量,如下图所示:
目标点位于上图管道中的条件为:
引入松弛变量之后,在上图中管道上下两侧的点满足的条件为:
这样,支持向量回归机的优化问题可以写为:
同样,使用拉格朗日乘子法将约束条件带入目标函数中:
同样使用SVM中求解对偶问题的思路,可以得到:
使用这些结果消去拉格朗日函数中对应的变量,得到SVR的对偶问题:
这样,得到的SVR回归模型为: