tips:注意下文中上下标的关系,当同时上下标出现,下标表示第几个样本,上标表示第几维特征。具体情况,具体分析。
1 线性模型
线性模型是机器学习模型中最基本的模型。许多强大的非线性模型都是在线性模型之上构建的。
给定一个有d个属性的样本x,x=(x^1,x^2,x^3,…,x^d),其中x^i为x在第i个属性上的取值,则线性模型就是通过将各个属性线性组合在一起的达到预测目的的函数。
向量形式为: f(x)=ωTx+b
关于线性模型常见的有线性回归,对数几率回归(逻辑回归),线性判别分析(Linear Discriminant Analysis)。接下来对这些模型进行简介。
2 线性回归(linear regression)
2.1 线性回归模型及其求解
令数据集 D={(x1,y1),(x2,y2),⋯,(xm,ym)} 。其中 xi=(x1i,x2i,..,xdi) 。线性回归模型就是要去学得
那 ω 如何取值才能使得这个模型最优呢?这里选用了均方误差来做为损失函数。也就是我们要使得 ∑mi=1(f(xi)−yi)2 最小。
那么如何求解这个式子呢?一般来说基于均方误差最小化来进行模型求解,常常使用的是最小二乘法。最小二乘法对应于线性回归而言就是找到条直线,使得所有样本点到直线距离之和最短。
下面我们进行一些公式的推导。
令:
那么 ω̂ ∗=argminω̂ (y−Xω̂ )T(y−Xω̂ ) ,我们对 ω̂ 求导得到:
令此式为0,则可求得 ω̂ ∗ 最优解。
如果 XTX 满秩或者正定: ω̂ =(XTX)−1XTy
那么可得到线性回归模型为:
但是事实上 XTX 经常出现不满秩的情况,这个时候就需要加入正则项,比如L1正则项。
这里插一个用拉格朗日来解决线性方程组最小二乘问题的方法
原问题:min: xTx,x∈Rn
subject: Ax=b
Lagrange函数: L(x,v)=xTx+υT(Ax−b)
对L求偏导带入L得到g
对g求 υ 偏导,求g最大值,作为原问题最小值。
求L的对偶函数 L(x,υ)=xTx+υT(Ax−b)
∂L∂x=2x+ATυ=0
∴x=−12ATυ
∴g(υ)=−14υTAATυ−υTb
求对偶函数极大值
令 ∂g∂υ=−12AATυ−b=0
∴−12ATυ=(ATA)−1ATb
∴x∗=(ATA)−1ATb
和通过线性回归计算得到的结论一致,因此线性回归具有强对偶性,此处的max min=min max。
2.2 梯度下降法求解线性回归
当 XTX 阶数很高的时候,计算量会很大,因此我们可以采用梯度下降法来做。
- 初始化,任意选择 ω , ω∈ℝd
- 沿梯度方向,不断改变 ω 从而减小
J=∑k=1m(yk−ωxk)2
具体做法就是:
ωi:=ωi−α∂∂ωiJ(ω)假设只有一个样本:∂∂ωiJ(ω)===2(ωx−y)∂∂ωi(ωx−y)2(ωx−y)∂∂ωi(∑i=1dωixi−y)2(ωx−y)xi- 是否收敛,不满足则继续迭代。
关于梯度下降还有随机梯度下降,批量梯度下降,mini-batch梯度下降等等,这里不一一介绍了。关于学习率 α ,我们可以利用插值法,线性搜索等等,关于梯度下降的方向,我们可以使用牛顿法, 拟牛顿法,这里不展开介绍。
2.3 二值化
因为某些特征是无序的,因此这里要进行特殊处理。比如有个特征是血型,取值可以是{O,A,B,AB},但是这些特征都是无序的。因此我们这里进行转换:
O{0,0,0,1}
A{0,0,1,0}
B{0,1,0,0}
AB{1,0,0,0}
以上的做法,我看到有许多叫法,二值化,One-Hot编码,虚拟变量(哑变量)等等。不过虚拟变量还不太一样,虚拟变量要注意的就是虚拟变量陷阱,这个就不细说了。
2.4 广义线性回归
若函数g可微,则:
称为广义线性模型,其中g函数称为联系函数,下面就介绍g=ln(*)时的例子。
3 对数几率回归(逻辑回归)
利用线性回归模型,我们可以进行回归学习,如果需要分类的时候,我们将采用对数几率回归(这里是书中的提法,也叫作逻辑回归,logistic regression)。
3.1 sigmod函数与对数几率回归
由上一节线性回归可知
f(x)∈R
,因此我们这里只需设计一个函数使得将f(x)转化为0/1即可。这里考察单位阶跃函数:
但是单位阶跃函数不连续,太生硬,需要能找一个函数来代替单位阶跃函数,这里就有了sigmoid函数:
这里我们简单看看几个式子的变换:
如果这里将y当做x为正例的可能性,则 y1−y 为几率,反映x作为正例的相对可能性。
3.2 参数的求解。
这里如何求解参数,我们可以用极大似然法,然后求解极大似然函数取得最大值时的参数。首先给出几个式子:
p(y=1∣x)=11+e−(ωTx)
p(y=0∣x)=11+e(ωTx)
这里我省略了b,是因为可以将x:=(x;1),w:=(w;b)。那么这里的对数似然函数就是:
那么参照线性回归梯度下降法继续求得,令:
则导数为:
最重要的导数已经求得,剩下的那部分就不用写出来了。
3.3 其他
实际应用中LR非常广泛,常常用LR作为base line,而且可以取得不错的效果。LR的计算也十分迅速,在广告点击率预估等等业务中,常常结合特征二值化,可以达到一定的效果。
4. 线性判别分析
线性判别分析的思想是:在训练样本中,将所有样本投影到一条直线,使得同类样本投影点尽可能接近,异类样本投影点尽可能元,对新样本分类就看这个样本投影点的位置来决定。
- 欲使同类样本投影点尽可能接近,那么就是让同类样本投影点的协方差尽可能小。
- 欲使异类样本的投影点尽可能远离,也就是让两类中心之间的距离增大。
针对这两个目标,我们令:
数据集
D={(xi,yi)}mi=1
,
yi∈{0,1}
,
Xi、μi、∑i
表示第i(i取值0或者1)类的集合、均值向量、协方差矩阵。
设直线为
ω
,我们可以得到:
ωTμ0 ,0类样本的中心
ωTμ1 ,1类样本的中心
ωT∑0ω ,0类样本协方差
ωT∑1ω ,1类样本协方差
则最大化的目标是 J=∥∥ωTμ0−ωTμ1∥∥22ωT∑0ω+ωT∑1ω
得到了J之后,我们就最大化J,然后求出J最大化时的 ω ,接下来将J进行变形。
Sb=(μ0−μ1)(μ0−μ1)T ,类间散度矩阵
Sω=∑0+∑1 ,类内散度矩阵
J=ωTSbωωTSωω
很明显这里我们需要归一化,令 ωTSωω=1
minω −ωTSbωs.t. ωTSωω=1
则由拉格朗日乘子法可得 ω=S−1(μ0−μ1) ,这里计算矩阵的逆的时候常常使用奇异值分解,来保证数值的稳定性。
tips:LDA原理从贝叶斯决策理论的角度来阐释,并可证明,当两类数据同先验、满足高斯分布且协方差相等时,LDA可达到最优分类。
那么如何将LDA推广到多分类呢?这里需要定义一个全局散度矩阵。 μ 是所有示例均值向量。
St==Sb+Sω∑i=1m(xi−μ)(xi−μ)TSω=∑i=1N∑x∈Xi(x−μi)(x−μi)T
常常我们需要优化的是
上式我们可以通过 SbW=λSωW 得到,W的解为 S−1ωSb 的N-1个最大广义特征值所对应的特征向量组成。很明显这里是一个降维的过程,降到N-1维。
5. 多分类学习
这里我们谈谈如何将二分类学习推广到多分类。一般来说是利用拆解法,将多分类任务拆为若干个二分类任务。如何拆解呢?有三种经典策略:一对一(One vs One),一对其余(One vs Rest),多对多(Many vs Many)。
OvO:两两类别训练一个分类器,则共有N(N-1)/2
OvR:一个对剩下的,则共有N个分类器
MvM:若干类为正例,若干类为反例。这里需要设计正反例,因此采用了ECOC技术。
下面重点说说ECOC技术:
编码:对N个类别做M次划分,每次划分将一部分类别划分为正类,一部分划分为反类,从而形成一个二分类训练集;这样一共产生M个训练集,M个分类器。
解码:M个分类器分别对测试样本进行预测,这些预测标记组成一个编码,将这个编码和每个类别各自比较,则返回其中距离最小的类别作为预测结果。
书中这里列出了两种编码方法,二元码和三元码,这里看图说话。(谈谈ECOC的纠错能力)
6 类别不平衡问题
- 再缩放技术
在实际的机器学习问题中,正反例往往是不平衡的,在LR模型中,我们用0.5作为正反例的阈值,但实际上0.5表达了分类器认为出现正反例的可能性是一样的。这个时候我们可以通过样本中正反例的比值来近似为真实几率(训练集是真实样本的无偏采样),则这里就可以令:
若y1−y>m+m−则预测为正例
当然实际应用常常这么处理:
y′1−y′=y1−y×m−m+ - 欠采样
EasyEnsemble:利用集成学习,将反例划分成不同集合供不同学习器使用,来保证信息不丢失。 - 过采样
SMOTE:对正例进行插值来产生额外的正例。
7 重要资料:
因为篇幅所限,很多东西没细说,这里的资料大家看看,很有用的。
LDA 线性判别分析:http://www.cnblogs.com/LeftNotEasy/archive/2011/01/08/lda-and-pca-machine-learning.html
机器学习中的范数规则化之(一)L0、L1与L2范数:http://blog.youkuaiyun.com/zouxy09/article/details/24971995
机器学习中常用的矩阵求导公式:http://blog.sina.com.cn/s/blog_8eac0b290101fsqb.html
梯度-牛顿-拟牛顿优化算法和实现:http://blog.youkuaiyun.com/u012176591/article/details/46225289
不平衡数据下的机器学习方法简介:http://www.jianshu.com/p/3e8b9f2764c8