线性模型是一个通过在属性上的线性组合来进行预测的函数。
优点:
- 许多非线性模型可通过在线性模型的基础上引入层级结构或高维映射得到
- 模型参数直观表达了属性对于结果的重要性,线性模型具有很好的解释性
缺点:模型较简单,准确度有时较低。
普通线性模型:
y^=w1x1+w2x2+...+wnxn+b=wTx+by\hat{}=w_{1}x_{1}+w_{2}x_{2}+...+w_{n}x_{n}+b=\mathbf{w}^{T}\mathbf{x}+by^=w1x1+w2x2+...+wnxn+b=wTx+b
y^y\hat{}y^ 为预测值,x\mathbf{x}x是样本,w\mathbf{w}w是参数,bbb是截距(偏置项)。
设置损失函数:θ=∑i=1nyi−yi^=(yi−wTxi−b)2\theta=\sum_{i=1}^{n}y_{i}-y_{i}\hat{} =(y_{i}-\mathbf{w}^{T}\mathbf{x}_{i}-b)^{2}θ=i=1∑nyi−yi^=(yi−wTxi−b)2
这里的损失函数通常采用均方误差,然后通过最小二乘求解参数w\mathbf{w}w。
最小二乘法:基于均方误差最小化来进行模型求解的方法。
在线性回归中,最小二乘法就是试图找到一条直线,使所有样本到直线上的欧氏距离最小。
最小二乘参数估计:
∂θ∂w=2∑i=1n(xi(yi−wTxi−b))\frac{\partial\theta}{\partial \mathbf{w}}=2\sum_{i=1}^{n}(\mathbf{x}_{i}(y_{i}-\mathbf{w}^{T}\mathbf{x}_{i}-b))∂w∂θ=2i=1∑n(xi(yi−wTxi−b))
∂θ∂b=2∑i=1n(b−yi+wTxi)\frac{\partial\theta}{\partial \mathbf{b}}=2\sum_{i=1}^{n}(b-y_{i}+\mathbf{w}^{T}\mathbf{x}_{i})∂b∂θ=2i=1∑n(b−yi+wTxi)
令∂θ∂w=∂θ∂b=0\frac{\partial\theta}{\partial \mathbf{w}}=\frac{\partial\theta}{\partial \mathbf{b}}=0∂w∂θ=∂b∂θ=0可得到参数w和b\mathbf{w}和bw和b的解析解(闭式解):w=∑i=1nyi(xi−xˉ)∑i=1nxi2−1n(∑i=1nxi)2\mathbf{w}=\frac{\sum_{i=1}^{n}y_{i}(\mathbf{x}_{i}-\mathbf{x}\bar{} )}{\sum_{i=1}^{n}\mathbf{x}_{i}^{2}-\frac{1}{n}(\sum_{i=1}^{n}\mathbf{x}_{i})^{2}}w=∑i=1nxi2−n1(∑i=1nxi)2∑i=1nyi(xi−xˉ)
b=1n∑i=1n(yi−wTxi)b=\frac{1}{n}\sum_{i=1}^{n}(y_{i}-\mathbf{w}^{T}\mathbf{x}_{i})b=n1i=1∑n(yi−wTxi)
最小二乘法:
把数据集D表示为一个m∗nm*nm∗n的矩阵x\mathbf{x}x,www表示为一个n∗1n*1n∗1的向量w\mathbf{w}w,yyy表示为m∗1m*1m∗1样本的真实值。
y^=xw\hat{y}=\mathbf{x}\mathbf{w}y^=xw
误差θ=12(y−y^)2=12(y−xw)2=12(y−xw)T(y−xw)\theta=\frac{1}{2}(\mathbf{y}-\hat{y})^{2}=\frac{1}{2}(\mathbf{y}-\mathbf{x}\mathbf{w})^{2}=\frac{1}{2}(\mathbf{y}-\mathbf{x}\mathbf{w})^{T}(\mathbf{y}-\mathbf{x}\mathbf{w})θ=21(y−y^)2=21(y−xw)2=21(y−xw)T(y−xw),求误差的极小值,通过求导得到:
12(y−xw)T(y−xw)=12(yT−wTxT)(y−xw)=12(yTy−yTxw−wTxTy+wTxTxw)\frac{1}{2}(\mathbf{y}-\mathbf{x}\mathbf{w})^{T}(\mathbf{y}-\mathbf{x}\mathbf{w})=\frac{1}{2}(\mathbf{y}^{T}-\mathbf{w}^{T}\mathbf{x}^{T})(\mathbf{y}-\mathbf{x}\mathbf{w})
=\frac{1}{2}(\mathbf{y}^{T}\mathbf{y}-\mathbf{y}^{T}\mathbf{x}\mathbf{w}-\mathbf{w}^{T}\mathbf{x}^{T}\mathbf{y}+\mathbf{w}^{T}\mathbf{x}^{T}\mathbf{x}\mathbf{w})21(y−xw)T(y−xw)=21(yT−wTxT)(y−xw)=21(yTy−yTxw−wTxTy+wTxTxw)
∂θ∂w=xT(xw−y)\frac{\partial \theta}{\partial \mathbf{w}}=\mathbf{x}^{T}(\mathbf{x}\mathbf{w}-\mathbf{y})∂w∂θ=xT(xw−y)
令∂θ∂w=0\frac{\partial \theta}{\partial \mathbf{w}}=0∂w∂θ=0,得到参数w\mathbf{w}w的解析解:w∗=(xTx)−1xTy\mathbf{w}^{*}=(\mathbf{x}^{T}\mathbf{x})^{-1}\mathbf{x}^{T}\mathbf{y}w∗=(xTx)−1xTy
岭回归
在普通线性回归的最小二乘中,只有当矩阵为非奇异矩阵时,解w∗=(xTx)−1xTy\mathbf{w}^{*}=(\mathbf{x}^{T}\mathbf{x})^{-1}\mathbf{x}^{T}\mathbf{y}w∗=(xTx)−1xTy才有效,但是在大多数情况下矩阵都是不满秩的,这个时候可以用岭回归来解决。
岭回归就是在普通最小二乘后面加上2范数约束的正则化项:θ=12(y−xw)2+∥w∥22\theta=\frac{1}{2}(\mathbf{y}-\mathbf{x}\mathbf{w})^{2}+\left \| \mathbf{w} \right \|_{2}^{2}θ=21(y−xw)2+∥w∥22
再通过求导令其为0得到参数的更新:w∗=(xxT+λI)−1xTy\mathbf{w}^{*}=(\mathbf{x}\mathbf{x}^{T}+\lambda I)^{-1}\mathbf{x}^{T}\mathbf{y}w∗=(xxT+λI)−1xTy
岭回归的功能:
- 使矩阵变为满秩矩阵,有解析解。
- 可以通过调节参数λ\lambdaλ来解决变量的多重共线性问题
- 加入正则化项在一定程度上能防止过拟合
Lasso
在岭回归中,通过加入l2l2l2范数,来防止过拟合。Lasso使用l1l1l1范数:θ=12(y−xw)2+∥w∥1\theta=\frac{1}{2}(\mathbf{y}-\mathbf{x}\mathbf{w})^{2}+\left \| \mathbf{w} \right \|_{1}θ=21(y−xw)2+∥w∥1
l1l1l1是取绝对值,Lasso能使问题产生稀疏解。求解Lasso可以使用迭代加权、次梯度、ADMM等方法。
正则化为什么可以降低模型过拟合的风险
正则化可以降低模型复杂度,减少模型过拟合的风险,在回归问题中的解释是:当特征之间存在高度相关关系的时候,假设有两个特征高度负相关,那么不带正则化的回归问题可能会赋予二者近似相等的很大权重,这样加权起来的结果仍然较小,但是由于权重很大,就导致了过拟合问题。Ridge Regression会倾向于在相关特征之间均匀分布权重,Lasso则倾向于从相关特征中选取出一个,其余特征权值衰减为零。另外,正则化的目的也可以理解为使模型权重之间的方差较小,
逻辑回归模型:
逻辑回归算法虽然有回归两字,却是分类算法。
sigmoid函数:h(z)=h(z)=11+e−zh(z)=h(z)=\frac{1}{1+e^{-z}}h(z)=h(z)=1+e−z1,函数对于0-1之间的数值比较敏感,趋于正无穷或负无穷时,函数趋近平滑状态,当数值zzz趋于无穷小时,函数值趋于0;当数值zzz趋于无穷大时,函数值趋于1.
广义线性模型:y=g−1(wTx+b)y=g^{-1}(\mathbf{w}^{T}\mathbf{x}+b)y=g−1(wTx+b),函数g(.)g(.)g(.)称为联系函数。
对数线性回归:lny=wTx+bln y=\mathbf{w}^{T}\mathbf{x}+blny=wTx+b
一个事件的几率:指该事件发生的概率与该事件不发生的概率的比值。
对数几率函数:y=11+e−zy=\frac{1}{1+e^{-z}}y=1+e−z1,一种sigmoid函数。
对数几率回归(logistic-regression):y=11+e−(wTx+b)y=\frac{1}{1+e^{-(\mathbf{w}^{T}\mathbf{x}+b)}}y=1+e−(wTx+b)1,得到的值是样本取值为1的概率。
对数几率:lny1−y=wTx+bln\frac{y}{1-y}=\mathbf{w}^{T}\mathbf{x}+bln1−yy=wTx+b
设类标记有两类:0,1.属于二分类问题,有:P(y=1∣x)=11+e−(wTx+b)=ewTx+b1+ewTx+bP(y=1|\mathbf{x})=\frac{1}{1+e^{-(\mathbf{w}^{T}\mathbf{x}+b)}}=\frac{e^{\mathbf{w}^{T}\mathbf{x}+b}}{1+e^{\mathbf{w}^{T}\mathbf{x}+b}}P(y=1∣x)=1+e−(wTx+b)1=1+ewTx+bewTx+b
P(y=0∣x)=1−P(y=1∣x)=11+ewTx+bP(y=0|\mathbf{x})=1-P(y=1|\mathbf{x})=\frac{1}{1+e^{\mathbf{w}^{T}\mathbf{x}+b}}P(y=0∣x)=1−P(y=1∣x)=1+ewTx+b1
得到似然函数(似然函数类似于损失函数,但通常极大化似然函数,极小化损失函数):
∏i=1nP(yi∣xi;w,b)=∏i=1n[P(y=1∣xi;w,b)yiP(y=0∣xi;w,b)1−yi]=∏i=1n[(ewTxi+b1+ewTxi+b)yi(11+ewTx+b)1−yi]\prod_{i=1}^{n}P(y_{i}|\mathbf{x_{i}};\mathbf{w},b)=\prod_{i=1}^{n}[P(y=1|\mathbf{x}_{i};\mathbf{w},b)^{y_{i}}P(y=0|\mathbf{x}_{i};\mathbf{w},b)^{1-y_{i}}]=\prod_{i=1}^{n}[(\frac{e^{\mathbf{w}^{T}\mathbf{x}_{i}+b}}{1+e^{\mathbf{w}^{T}\mathbf{x}_{i}+b}})^{y_{i}}(\frac{1}{1+e^{\mathbf{w}^{T}\mathbf{x}+b}})^{1-y_{i}}]i=1∏nP(yi∣xi;w,b)=i=1∏n[P(y=1∣xi;w,b)yiP(y=0∣xi;w,b)1−yi]=i=1∏n[(1+ewTxi+bewTxi+b)yi(1+ewTx+b1)1−yi]
该似然函数的意义是:令每个样本属于其真实标记的概率越大越好。P(y=1∣xi;w,b)P(y=1|\mathbf{x}_{i};\mathbf{w},b)P(y=1∣xi;w,b)表示给定参数w,b\mathbf{w},bw,b的条件下,对于样本xi\mathbf{x}_{i}xi属于y=1y=1y=1的概率是多少。
对似然函数取对数得到对数似然函数:l(w,b)=∑i=1nlnP(yi∣xi;w,b)l(\mathbf{w},b)=\sum_{i=1}^{n}lnP(y_{i}|\mathbf{x_{i}};\mathbf{w},b)l(w,b)=i=1∑nlnP(yi∣xi;w,b)
令z=βTx=wTx+bz=\mathbf{\beta }^{T}\mathbf{x}=\mathbf{w}^{T}\mathbf{x}+bz=βTx=wTx+b,对数似然函数可化为:l(β)=∑i=1nyilnez1+ez+(1−yi)ln(1−11+ez)=∑i=1nyiz−ln(1+ez)l(\mathbf{\beta })=\sum_{i=1}^{n}y_{i}ln\frac{e^{z}}{1+e^{z}}+(1-y_{i})ln(1-\frac{1}{1+e^{z}})=\sum_{i=1}^{n}y_{i}z-ln(1+e^{z})l(β)=i=1∑nyiln1+ezez+(1−yi)ln(1−1+ez1)=i=1∑nyiz−ln(1+ez)
求l(β)l(\mathbf{\beta })l(β)的极大值通常转化为用梯度下降法求−l(β)-l(\mathbf{\beta })−l(β)的极小值。−l(β)=∑i=1n(−yiβTxi+ln(1+eβTx))-l(\mathbf{\beta })=\sum_{i=1}^{n}(-y_{i}\mathbf{\beta }^{T}\mathbf{x}_{i}+ln(1+e^{\mathbf{\beta }^{T}\mathbf{x}}))−l(β)=∑i=1n(−yiβTxi+ln(1+eβTx))
用梯度下降法:βt+1=βt−α∂l(β)∂β=βt−α∑i=1n(−yi+eβTxi1+eβTxi)xi\beta ^{t+1}=\beta^{t}-\alpha \frac{\partial l(\beta)}{\partial \beta}=\beta^{t}-\alpha \sum_{i=1}^{n}(-y_{i}+\frac{e^{\beta^{T}\mathbf{x}_{i}}}{1+e^{\beta^{T}\mathbf{x}_{i}}})\mathbf{x}_{i}βt+1=βt−α∂β∂l(β)=βt−α∑i=1n(−yi+1+eβTxieβTxi)xi
得到训练好的模型f(β∗)=11+e−(β∗x)f(\beta^{*})=\frac{1}{1+e^{-(\beta^{*}\mathbf{x})}}f(β∗)=1+e−(β∗x)1后,对于输入样本x\mathbf{x}x有一个0-1之间数值,当数值大于0.5时为类别1,否则为类别0
多分类的逻辑回归模型:
逻辑回归除了用于二分类问题外,稍微变化一下还能用于多分类。
通常情况下,多分类学习是由二分类学习方法推广来的,利用二分类学习器来解决多分类问题。将多分类任务拆分为若干个二分类任务求解,对每一个二分类任务训练一个分类器。
-
一对一(One vs One,ovo):
对于给定数据集,假设有kkk类,将这kkk类两两配对,从而训练产生k(k−1)/2k(k-1)/2k(k−1)/2个分类器,将测试样本同时提交给所有分类器,最后根据投票结果,即预测得最多的类别作为分类结果。 -
一对其余(One vs Rest,ovr):
每次将一个类别作为正例,其余类别作为反例训练kkk个分类器,将测试样本同时给所有分类器,最后根据值最大的作为分类结果。
softmax函数:δ(zj)=ezj∑i=1nezi\delta (z_{j})=\frac{e^{z_{j}}}{\sum_{i=1}^{n}e^{z_{i}}}δ(zj)=∑i=1neziezj
softmax函数能够把一列数值映射到0-1之间并突出最大值(使其趋于1),放低最小值(使其趋于0)
在二分类问题中,使用的是logstic-regression函数:y=11+e−(wTx+b)y=\frac{1}{1+e^{-(\mathbf{w}^{T}\mathbf{x}+b)}}y=1+e−(wTx+b)1,多分类问题中采用softmax函数。
有P(y=1∣x;β)=eβ1Tx∑i=1keβiTxP(y=1|\mathbf{x};\beta)=\frac{e^{\beta_{1}^{T}\mathbf{x}}}{\sum_{i=1}^{k}e^{{\beta_{i}^{T}\mathbf{x}}}}P(y=1∣x;β)=∑i=1keβiTxeβ1Tx
P(y=2∣x;β)=eβ2Tx∑i=1keβiTxP(y=2|\mathbf{x};\beta)=\frac{e^{\beta_{2}^{T}\mathbf{x}}}{\sum_{i=1}^{k}e^{{\beta_{i}^{T}\mathbf{x}}}}P(y=2∣x;β)=∑i=1keβiTxeβ2Tx
⋮\vdots ⋮
P(y=j∣x;β)=eβjTx∑i=1keβiTxP(y=j|\mathbf{x};\beta)=\frac{e^{\beta_{j}^{T}\mathbf{x}}}{\sum_{i=1}^{k}e^{{\beta_{i}^{T}\mathbf{x}}}}P(y=j∣x;β)=∑i=1keβiTxeβjTx
P(y=j∣x;β)P(y=j|\mathbf{x};\beta)P(y=j∣x;β)表示样本x\mathbf{x}x在参数θ\thetaθ的条件下属于类别jjj的概率;βj\beta_{j}βj表示在类别jjj下的参数,即每个类别都有自己的分类器(One vs Rest模式);kkk是类别总数。
得到似然函数:
∏i=1n∑j=1k(1{yi=j}eβjTx∑l=1keβlTx)\prod_{i=1}^{n}\sum_{j=1}^{k}(1\left \{ y^{i}=j \right \}\frac{e^{\beta_{j}^{T}\mathbf{x}}}{\sum_{l=1}^{k}e^{\beta_{l}^{T}\mathbf{x}}})i=1∏nj=1∑k(1{yi=j}∑l=1keβlTxeβjTx)
1{yi=j}1\left \{ y^{i}=j \right \}1{yi=j}表示当大括号内的表达式值为真时,取 1,为假时取 0。取对似然函数取对数得到对数似然函数:
l(β)=∑i=1n∑j=1k(1{yi=j}lneβjTx∑l=1keβlTx)l(\beta)=\sum_{i=1}^{n}\sum_{j=1}^{k}(1\left \{ y^{i}=j \right \}ln\frac{e^{\beta_{j}^{T}\mathbf{x}}}{\sum_{l=1}^{k}e^{\beta_{l}^{T}\mathbf{x}}})l(β)=i=1∑nj=1∑k(1{yi=j}ln∑l=1keβlTxeβjTx)
极大化对数似然函数即令每个样本属于其真实标记的概率最大。maxl(β)=min−l(β)max l(\beta)=min -l(\beta)maxl(β)=min−l(β)
上述对数似然函数是将所有分类器一起讨论,可以将单独的分类器进行讨论:
对于分类器jjj,有似然函数:l(βj)=∑i=1n(1{yi=j}lneβjTx∑l=1keβlTx)l(\beta_{j})=\sum_{i=1}^{n}(1\left \{ y^{i}=j \right \}ln\frac{e^{\beta_{j}^{T}\mathbf{x}}}{\sum_{l=1}^{k}e^{\beta_{l}^{T}\mathbf{x}}})l(βj)=∑i=1n(1{yi=j}ln∑l=1keβlTxeβjTx)
利用梯度下降法:
−∂l(βj)∂βj=−∑i=1nxi(1{yi=j}−eβjTx∑l=1keβlTx))-\frac{\partial l(\beta_{j})}{\partial \beta_{j}}=-\sum_{i=1}^{n}\mathbf{x}_{i}(1\left \{ y^{i}=j \right \}-\frac{e^{\beta_{j}^{T}\mathbf{x}}}{\sum_{l=1}^{k}e^{\beta_{l}^{T}\mathbf{x}}}))−∂βj∂l(βj)=−i=1∑nxi(1{yi=j}−∑l=1keβlTxeβjTx))
θjt+1=θjt−α(−∂l(βj)∂βj)\theta_{j}^{t+1}=\theta_{j}^{t}-\alpha(-\frac{\partial l(\beta_{j})}{\partial \beta_{j}}) θjt+1=θjt−α(−∂βj∂l(βj))
迭代求出kkk个最优分类器,把测试样本同时给所有的分类器,值最大的分类器的所属类别为最后的预测结果。
《机器学习》中对基础知识讲解得较为透彻,但是对公式的推导讲得不够详细,在《统计学习方法中》有较详细的推导。