美文网首页
2019-02-21

2019-02-21

作者: jessica涯 | 来源:发表于2019-02-23 09:51 被阅读0次

ML——线性模型

基本形式

       线性模型就是用于预测的模型是线性的,模型形式如下:

                              f(x)=w_{1} x_{1} +w_{2} x_{2} +...w_{d}  x_{d} +b

其中x=(x_{1} ;x_{2} ;,,,x_{d} ),表示由d个属性描述的示例,x_{i} x在第i个属性上的取值。用向量形式可写成:

                                               f(x)=w^Tx+b

其中w=(w_{1};w_{2};...w_{d})。w和b学得之后,模型就得以确定。

线性回归

        线性回归试图学习一个线性模型以尽可能准确的预测实值输出标记。通过在数据集上建立线性模型,建立代价函数,最终以优化代价函数为目标确定模型参数w和b,并得到模型用于后续的预测。

确定w和b

         由于均方误差是回归任务中最常用的性能度量,因此可试图让均方误差最小化,此时要确定的参数为:

                                    (w^*,b^*)=\mathop{\arg\min}_{w,b}\sum_{i=1}^d(y_{i}-wx_{i}-b )^2

其中y_{i} x_{i} 对应真实标签值。这种基于均方误差最小化来进行模型求解的方法称为“最小二乘法”,求解w和b使代价函数最小化的过程,称为线性回归模型的最小二乘“参数估计”。

       考虑一般的情况,数据集D的样本由d个属性描述,此时线性回归称为“多元线性回归”。记\hat{w} =(w;b),把数据集D表示为一个m\times (d+1)大小的矩阵X,表示为

                                 X=\left(                 \begin{array}{cc} x_{1}^T & 1\\ x_{2}^T & 1\\ \vdots  & \vdots\\ x_{m}^T & 1\\\end{array}\right )   ,y=(y_{1},y_{2},...,y_{m} )

此时要确定的参数为:

                                w^*=\mathop{\arg\min}_{w}(y-X\hat{w} )^T (y-X\hat{w} )

E_{\hat{w} }= (y-X\hat{w} )^T (y-X\hat{w} ),其为凸函数,关于\hat{w} 求导得:

                                         \frac{\partial E_{\hat{w} } }{\partial \hat{w}} =2X^T(X\hat{w}-y)

令上式为零,可以得到\hat{w}最优解的闭式解;

X^TX 为满秩矩阵或正定矩阵时,可得:\hat{w} ^* =(X^TX )^{-1}X^Ty

X^TX不是满秩矩阵时,此时存在多个解析解,都能使均方误差最小化。常见的做法是引入正则化项,通过正则化的归纳偏好进行选择。例如LASSO就是添加了L1正则化项,岭回归就是添加了L2正则化项,它们在一定程度上解决了上述求逆问题。

对数几率回归

       将线性模型运用到分类任务中,便引入了对数几率回归。考虑二分类任务,其输出标记y\in\left\{ 0,1 \right\} ,而线性回归模型产生的预测值z=w^Tx+b 是实值,我们需要将实值z转化为0/1值,于是找到了一个类似于阶跃函数且单调可微易于求导的Sigmoid函数y=\frac{1}{1+e^{-z}} ,带入z得:

                                                     y=\frac{1}{1+e^{-(w^Tx+b )}}

经过变换得:

                                                    ln\frac{y}{1-y} =w^T x+b

       若将y视为x作为正例的可能性,1-y是其反例的可能性,\frac{y}{1-y} 称为几率,反映了x作为正例的相对可能性,其对数称为对数几率。对数几率模型就是通过线性模型拟合输出值的对数几率。

对数几率模型的参数估计

       若将y视为类后验概率估计p(y=1\vert x;\theta ),其中记\theta =(w;b)则有:

p(y=1\vert x;\theta )=\frac{exp(w^Tx+b )  }{1+exp(w^Tx+b )}=h_\theta (x)\\p(y=0\vert x;\theta)=\frac1{1+exp(w^Tx+b )}=1-h_\theta (x)

构造损失函数J

Cost函数和J函数是基于极大似然估计推导得到的。https://blog.csdn.net/pakko/article/details/37878837

由上式可得p(y|x;\theta )=(h_\theta (x))^y(1-h_\theta (x))^{1-y}

取似然函数为:L(\theta )=\prod_{i=1}^m p(y^{(i)}|x^{(i)};\theta )=\prod_{i=1}^m (h_\theta (x^{(i)}))^{y^{(i)}}(1-h_\theta (x^{(i)}))^{1-y^{(i)}}

对数似然函数为:l(\theta )=logL(\theta )=\sum_{i=1}^m(y^{(i)}logh_\theta (x^{(i)})+(1-y^{(i)})log(1-h_\theta (x^{(i)})))

最大似然估计就是求使l(\theta )取最大值时的\theta ,其实此处可用梯度上升法求解,求得的就是要求的最佳参数。但在Andrew Ng的课程中取J(\theta )=\frac{1}{m} l(\theta )。因为乘了一个负的系数-1/m,故取最小值时的为要求的最佳参数。

Cost函数和J函数如下:

Cost(h_\theta (x),y)=\left\{
\begin{aligned}
-log(h_\theta (x))\qquad if\ y=1 \\
-log(1-h_\theta (x))\qquad if\ y=0 \\
\end{aligned}
\right.\\
J(\theta )=\frac{1}{m}\sum_{i=1}^n Cost(h_\theta (x^{(i)}),y^{(i)})=-\frac{1}{m} \sum_{i=1}^m(y^{(i)}logh_\theta (x^{(i)})+(1-y^{(i)})log(1-h_\theta (x^{(i)})))

LR如何解决多分类问题

        把Sigmoid函数换成softmax函数,即可适用于多分类的场景。 Softmax 回归是直接对逻辑回归在多分类的推广,相应的模型也可以叫做多元逻辑回归(Multinomial Logistic Regression)。 

softmax函数和整体目标函数为:

p(y=i|x,\theta )=\frac{e^{\theta _{i}^Tx }}{\sum\nolimits_{j}^K e^{\theta _{j}^Tx } }\\J(\theta )=-\frac{1}{N} \sum_{i}^N \sum_{j}^K 1[y_i=j] log\frac{e^{\theta _{i}^Tx }}{\sum\nolimits_{j}^K e^{\theta _{j}^Tx } }

LR如何解决线性不可分问题

(1)利用特殊核函数,对特征进行变换;(2)扩展LR算法,提出FM算法,FM解决了LR泛化能力弱的问题。

https://www.jianshu.com/p/dce9f1af7bc9

线性判别分析

        线性判别分析基本思想是将训练样本投影到一条直线上,使得同类的样例尽可能接近,异类样例尽可能远离,如下图所示:

欲使同类样例投影点尽可能接近,异类样本点投影尽可能远离,可让同类样本点的协方差尽可能小,异类之间中心的距离尽可能大。LDA定义了类内散度矩阵

          S_{w} =\sum_{x\in X_{0} } (x-\mu_{0}  )(x-\mu_{0}  )^{T} +\sum_{x\in X_{1} } (x-\mu_{1}  )(x-\mu_{1}  )^{T}

以及类间散度矩阵S_{b} =(\mu _{0}-\mu _{1} )(\mu _{0}-\mu _{1} )^T

带入优化目标,最后得到LDA的最终优化目标“广义瑞利商”:

                                                           J=\frac{w^TS_bw }{w^TS_ww}

用拉格朗日乘子法对上述优化问题求解。当求解出w后对新的样本进行分类时,只需将该样本点投影到这条直线上,根据与各个类别的中心值进行比较,判定出新样本与哪个类别距离最近。LDA还是一种经典的监督降维技术。

类别不平衡问题

       上述的分类学习方法都是基于不同类别的训练样本数目相当的假设上进行的,当遇到不同类别样例数差别很大时,为保证训练出的学习器的有效性,需要对这些类别不均衡的样例进行处理,常见的做法有三种:

1)样例多的类别中进行“欠采样(下采样)”,使得正反接近再学习,例如EasyEnsembel算法;

2)对训练样本较少的类别中进行“过采样”,使得正反样例数接近再学习,例如SMOTE算法;

3)直接基于原数据集进行学习,对预测值进行“再缩放”处理。

参考:

周志华《机器学习》

https://blog.csdn.net/u011974639/article/details/77102663

https://blog.csdn.net/u010700335/article/details/44133193

相关文章

网友评论

      本文标题:2019-02-21

      本文链接:https://www.haomeiwen.com/subject/piolyqtx.html