第三章-线性模型
线性模型是机器学习中常见的判别工具,其试图学的一个通过属性的线性组合来进行预测的函数,其基本形式为:
也就是说,通过输入x,代入公式计算,即可得到其对应的预测结果
问题在于:如何获得w和b?
计算机可以通过计算f(x)与真实的y的差值,来获得对当前w和b的评价(代价函数),进而不断优化w和b。
在代价函数中,分别对w和b求导,另导数为0,可以得到最小化代价函数的公式。
分类任务
同样的,我们也可以利用线性模型,解决分类问题。经典函数为“单位阶跃函数”。
将线性模型输入x,可得到判别结果,结果大于零为一类,小于零为一类,等于零随机判别。
LDA(Linear Discriminant Analysis)线性判别分析
思路:设法画出一条直线,将样例投影到直线上,使得同类的投影点尽可能相近,异类样例的投影点尽可能远离,对新样本进行分类时,将其投影到这条直线上,再根据投影点的位置来确定新样本的类别。思路如下图,
优化过程为:最小化样本投影点的协方差,最大化类中心之间的距离
多分类学习
拆分策略可分为:One vs One, One vs Rest, Many vs Many 三类
One vs One:将样例每两个类为一组,构成学习器,测试时将每一个学习器的结果汇总,进行投票,票数多的则为预测结果。
One vs Rest:将N类样例分为N组,每一个为Ni和剩余样例进行比较,预测结果分为正例和反例,正例则为预测结果,若有多个正例,则选择置信度较高的作为预测结果。
Many vs Many:将若干个类作为正类,若干个其他类作为反类。可利用纠错输出码(ECOC:Error Correcting Output Codes),有N个学习器,其每次将一个或多个类别判定为正例或反例,从而可以得出“编码矩阵”。在输入时,可根据其通过输入的矩阵得到判定编码,计算其与各个类别的判定编码的海明距离(汉明距离)和欧式距离(空间距离),选取距离最小的编码所对应的类别即为预测结果。
对于以上三种分类方式,OvR只需训练N个分类器,OvO需训练N(N-1)/2个分类器,因此OvO的存储开销和测试时间开销通常比OvR大。但在考虑训练量时,OvO每次只使用两个样例,OvR每次都使用全部样例,在类别较多时,OvO的训练时间较短。在预测性能方面,两者差不多,关键取决于具体的数据分布。
对于MvM,编码越长,纠错能力越好,但是所需的训练的分类器也将增加,计算、存储开销都会较大。不同的拆解方式所形成的的类别子集的区分难度不同,因此其性能很难判定。
类别不平衡的问题
有时在训练集中,类别分布不平均,导致其训练的分类器很难对正确情景进行判断。此时,我们能够使用如下手段(再缩放)
若 则预测为正
其中,m+,m-分别为训练集中正例、反例数量
除此之外,还可以通过“欠采样”、“过采样”的方式,主动对训练集中的正例、反例数量进行干预。其代表性算法为“EasyEnsemble” 和“SMOTE”,分别为欠采样、过采样。