西瓜书3 线性模型
3.1 基本形式
给定由d个属性描述的示例,其中
向量形式:
w和b学得之后,模型即可确定。其中w还可以表示为属性的权重,下面是一个例子:
- 综合考虑色泽、根蒂和敲声来判断西瓜好不好
- 其中根蒂的系数最大,表明根蒂最要紧;而敲声的系数比色泽大,说明敲声比色泽更重要
3.2 线性回归
线性回归问题就是试图学到一个线性模型尽可能准确地预测新样本的输出值,
一元线性回归
线性回归试图学得一个线性函数,使得对于每个样本
通过最小化损失函数
损失函数定义为(均方误差):
其中,
均方误差有非常好的几何意义,它对应了常用的欧几里得距离或简称“欧氏距离”(Euclidean distance). 基于均方误差最小化来进行模型求解的方法称为“最小二乘法”(least square method). 在线性回归中,最小二乘法就是试图找到一条直线,使所有样本到直线上的欧氏距离之和最小。
求解过程
最优的
其中,
这等价于最小化以下表达式:
为了最小化损失函数
这里E (w, b) 是关于w和b的凸函数,当它关于w和b的导数均为零时,得到w和b的最优解。对实数集上的函数,可通过求二阶导数来判别:若二阶导数在区间上非负,则称为凸函数;若二阶导数在区间上恒大于0, 则称为严格凸函数。
对
对
令上述两个偏导数等于零,我们可以得到两个方程,解这个方程组就可以得到最优的
其中"arg"是"argument"(参数)的前三个字母,"min" 是"minimum"(最小值)的前三个字母,该符号表示求使目标函数达到最小值的参数取值。
"
为了能进行数学运算,样本中的非数值类属性都需要进行数值化。对于存在"序"关系的属性,可通过连续化将其转化为带有相对大小关系的连续值;对于不存在"序"关系的属性,可根据属性取值将其拆解为多个属性 (one-hot 编码)
"闭式解"或称为"解析解"。闭式解是指可以通过具体的表达式解出待解参数,机器学习算法很少有闭式解,线性回归是一个特例
多元线性回归
更一般的情形是样本由
对于多元问题,常常使用矩阵的形式来表示数据。在本问题中,将具有m个样本的数据集表示成矩阵X,将系数w与b合并成一个列向量,这样每个样本的预测值以及所有样本的均方误差最小化就可以写成下面的形式:
将参数向量
输入矩阵
将输入矩阵
最小二乘法的目标是最小化预测值与实际值之间的误差平方和:
*
- 含义:表示“使得后面的表达式最小化的
值”。 - 作用:这是一个数学符号,用于表示我们在所有可能的
值中寻找一个特定的值,这个值使得后面的误差函数最小。
- 含义:表示预测值与实际值之差的转置。
- 作用:
是实际值向量, 是预测值向量。它们的差 表示每个样本的预测误差。转置操作 是将向量或矩阵的行和列互换,为后续的矩阵乘法做准备。
*
- 含义:表示预测值与实际值之差。
- 作用:与上面的转置部分相乘,计算误差的平方和。
同样地,我们使用最小二乘法对w和b进行估计,令均方误差的求导等于0。
当一个矩阵的行列式不等于0时,我们才可能对其求逆,因此对于下式,我们需要考虑矩阵(X的转置*X)的行列式是否为0,若不为0,则可以求出其解,若为0,则需要使用其它的方法进行计算 (比如正则化)
对
解上述方程,得到最优解的闭式解:
其中,
使用最优解
对数线性回归
假设我们认为示例所对应的输出标记实在指数尺度上变化,那么可将输出标记的对数作为线性模型逼近的目标,也就是:
这就是对数线性回归,他实际上是试图让e的指数次方趋近于y,表示图如下:
更一般地,考虑所有y的衍生物的情形,就得到了“广义的线性模型”(generalized linear model),其中,g(*)称为联系函数(link function)。
对数线性回归是当
3.2 线性几率回归
如何将线性模型用于分类任务?
只需找一个单调函数将分类任务的真实标记与预测值联系起来。二分类中,我们可以利用阶跃函数进行理想分类:
但是有个缺陷就是阶跃函数不连续,由此我们找到一个符合上述条件的替代函数, 该函数也叫对数几率函数 (logistic functin) 这是一种“Sigmoid函数”(Sigmoid函数即形似S的函数)它将z值转化为一个接近0或1的y值,并且其输出值在z = 0附近变化很陡。
将对数几率函数作为g (•) 代入
若将 y 视为样本
称为”几率“(odds),反映了
因此这个模型称为“对数几率回归”(logistic regression),也有一些书籍称之为“逻辑回归”。虽然它的名字是“回归”,但实际却是一种分类学习方法。
这种方法有很多优点例如它是直接对分类可能性进行建模,无需事先假设数据分布,这样就避免了假设分布不准确所带来的问题;它不是仅预测出“类别”,而是可得到近似概率预测,这对许多需利用概率辅助决策的任务很有用;此外,对率函数是任意阶可导的凸函数,有很好的数学性质,现有的许多数值优化算法都可直接用于求取最优解。
我们可通过极大似然法” (maximum likelihood method) 来估计ωΤ和b。(详细推导 #待补充
3.3 线性判别分析
线性判别分析(Linear Discriminant Analysis,简称LDA),在二分类问题上因为最早由[Fisher,1936]提出,亦称"Fisher判别分析”。【严格说来LDA与Fisher判别分析稍有不同,前者假设了各类样本的协方差矩阵相同且满秩。】
其基本思想是:将训练样本投影到一条直线上,使得同类的样例尽可能近,不同类的样例尽可能远。如图所示:
线性判别分析也是一种降维方法,但不同于第10章介绍的无监督降维方法,线性判别分析是一种监督降维方法,即降维过程中需要用到样本类别标记信息。
给定数据集
欲使同样样例的投影点尽可能接近,可以让同类样例投影点的协方差尽可能小,即
定义“类内散度矩阵”(within-class scatter matrix)【同一类的样本之间的“紧密程度”。】
以及”类间散度矩阵“(between-class scatter matrix)【不同类别之间的“分开程度”。】
则式(3.32)可重写为
这就是LDA欲最大化的目标,即
3.4 多分类学习
现实中我们经常遇到不只两个类别的分类问题,即多分类问题,在这种情形下,我们常常运用“拆分”的策略,通过多个二分类学习器来解决多分类问题,即将多分类问题拆解为多个二分类问题,训练出多个二分类学习器,最后将多个分类结果进行集成得出结论。
最为经典的拆分策略有三种:“一对一”(OvO)、“一对其余”(OvR)和“多对多”(MvM),核心思想与示意图如下所示。
- OvO:给定数据集D,假定其中有N个真实类别,将这N个类别进行两两配对(一个正类/一个反类),从而产生N(N-1)/2个二分类学习器,在测试阶段,将新样本放入所有的二分类学习器中测试,得出N(N-1)个结果,最终通过投票产生最终的分类结果。
- OvM:给定数据集D,假定其中有N个真实类别,每次取出一个类作为正类,剩余的所有类别作为一个新的反类,从而产生N个二分类学习器,在测试阶段,得出N个结果,若仅有一个学习器预测为正类,则对应的类标作为最终分类结果。
- MvM:每次将若干个类作为正例,若干个其他类作为反例,OvO和OvR是MvM的特例。正反类的构造有特殊的设计,一种常用的方法:纠错输出码(ECOC),将编码的思想引入类别拆分,尽可能在解码过程中具有容错性,主要分为两步:
- 编码:对N个类做M次划分,每次划分将一部分类作为正类,一部分类作为反类,形成一个二分类训练集;一共产生M个训练集,可训练出M个分类器。
- 解码:M个分类器分别对测试样本进行预测,这些预测标记组成一个编码,将这个预测编码与每个类别各自的编码进行比较,返回其中距离最小的类别作为最终预测结果。
注:"海明距离"是指两个码对应位置不相同的个数,"欧式距离"则是指两个向量之间的欧氏距离
纠错输出码(Error-Correcting Output Codes)是把N个类别改写成M个二分类问题的密码系统。就像把汉字转成电报码,每个数字代表某个特征问题的答案。数学表达式就是:类别→密码本→分类器阵列→解码器→预测
(翻开密码本指着说)假设我们用5个问题来定义宠物:
- 会不会游泳?
- 有没有羽毛?
- 是不是哺乳动物?
- 能不能飞?
- 吃不吃鱼?
这时:
- 鱼的密码可能是[-1, -1, -1, -1, +1](不会飞但吃鱼)
- 鸟的密码是[-1, +1, -1, +1, -1]
(突然举起个毛绒玩具)现在有只未知生物,5个分类器给出[-1, +1, -1, +1, -1],和鸟的密码完全匹配!但如果有两个答案出错变成[-1, -1, -1, +1, -1],系统会发现它和鱼的差距是2,和鸟的差距是1,仍然能正确识别。 - 也就是说,每个分类器分两堆,有很多分类器,把这些分类结果用编码记录下来。这样形成了一个预测分类的向量,与真实的分类向量比较,看哪个更近。
3.5 类别不平衡问题
类别不平衡(class-imbanlance)就是指分类问题中不同类别的训练样本相差悬殊的情况,例如正例有900个,而反例只有100个,这个时候我们就需要进行相应的处理来平衡这个问题。常见的做法有三种:
- 在训练样本较多的类别中进行“欠采样”(undersampling),比如从正例中采出100个,常见的算法有:EasyEnsemble。
- 在训练样本较少的类别中进行“过采样”(oversampling), 例如通过对反例中的数据进行插值,来产生额外的反例,常见的算法有SMOTE。过采样不能简单地对初始正例样本进行重复采样,否则会招致严重的过拟合。
- 直接基于原数据集进行学习,对预测值进行“再缩放”处理。称为“阈值移动” (threshold-moving)。其中再缩放也是代价敏感学习的基础。
- 欠采样:让多数派裁员(抓出100个精英正例)
- EasyEnsemble秘术:把900正例分成9个100人议会,每个议会和100反例比武,最后九大门派投票
- 过采样:给少数派克隆大军(用SMOTE魔法造新反例)
- SMOTE炼金术:在现有反例间架设彩虹桥,在特征空间里变出新样本,就像用两杯咖啡勾兑出第三杯
- 阈值移动:修改判决门槛(原被告适用不同法律)
- 再缩放诡计:把分类阈值从0.5改成(反例数量/正例数量),好比法官说"原告证据需达到被告10倍强度才胜诉"
特征擂台
流派 | 必杀技 | 破绽 |
---|---|---|
裁员流 | 运算快如闪电 | 可能裁掉关键情报 |
克隆流 | 保留所有线索 | 容易制造替身攻击 |
改规流 | 不碰原始数据 | 需要精确概率估测 |
(突然展开张医院报告)假设我们要检测罕见病:
- 原始数据:健康人900例,患者100例
- 欠采样:随机选100健康人+100患者,但可能漏掉特殊病例
- 过采样:用患者数据生成900新病例,可能造出"长三只手"的虚假病人
- 阈值移动:告诉模型"只要30%概率就判定患病",但需确保概率计算准确