机器学习(二)

一、感知器 perceptron

上节讲到线性回归,输入特征向量,与权重参数对应相乘得到输出的实数结果,但实际中还有选择分类的事情,例如银行要不要给客服发信用卡,发还是不发这是一个分类问题。

比如,银行根据一个人的工资、工作年限、负债情况、信用问题等作为特征来判断是不是该给这个客户信用卡,我们来考虑给这些特征设置一些合适的权重,特征与权重乘积得到一个分数,然后设定一个阈值,分数大于阈值则给他信用卡,分数小于阈值则不给他信用卡,,若给信用卡用y=+1表示,不发信用卡用y=-1表示,这就得到一个二分类问题,分类模型可表示为

,把阈值作为一个常数特征,则模型可表示为,这是一个用0/1错误来恒量的分类模型,不同于上述的线性回归的平方错误恒量的模型,0/1错误为阶梯状,在分界处不可导,所以不能用梯度下降的方法来求解最优化

求解最优化的权重,使用perceptron learning algorithm,PLA方法,思想是用犯错的样本来更新权重,样本犯错的意思是当标签类别为y=+1时W和X方向相反(两个向量夹角大于90°,W*X内积为负,运算类别为y=-1,与y=+1相反),当类别为y=-1时W和X方向相同(两个向量夹角小于90°,W*X内积为正,运算类别为y=+1,与y=-1相反),用 W+标签类别*X 的方法可以修正W向量的方向

                                                                            

所以更新方法可表示为,作为算法可表示为

,只要有样本犯错就调整权重,直到没有错误分类的样本。

由于算法不容许有错误分类样本的原因,对于线性可分的数据,PLA算法最终才能停止,数据不是线性可分,则PLA算法不能停止,在现实中数据资料往往不是线性可分的,并且在数据含有噪声的情况下,就算是线性可分的数据往往变得线性不可分,这样单纯的PLA方法不能完成分类的任务,所以就退一步让最优的W为使模型分类错误点最少,但统计错误点最少的情况下让算法停止是一个NP-hard问题,不能被优化,最终的方法是让错误点更新本次的权重Wt,得到新的权重Wt+1,比较这两个权重下哪个错误较少,若新权重的错误较少则用新权重替代原有权重,否则保持原有权重,这样迭代足够多的次数,我们就认为得到了好的权重参数,算法结束

 二、逻辑回归 logistic regression

上述分类算法是计算特征向量与对应权重相乘的分数,用这个分数和阈值比较,大于阈值为一类,小于阈值为一类,,线性分类和线性分类和线性回归的模型示意图如下:

由图可以看出,感知器线性分类模型的假设函数为阶梯状比较生硬,能不能用特征和权重相乘得到的分数来得到所属类别的概率(即可以知道属于某一类别的概率为多少)?利用逻辑回归算法

假设函数由变为,分数计算方法相同

逻辑回归的分类模型示意图为

则假设函数所代表的意义为在特征X和权重参数的条件下,y=+1的概率

线性回归的代价函数为,若直接使用逻辑回归直接使用这个代价函数模型

,由于假设函数不是线性的,则代价函数关于参数的图像如同以下情况:

                                              

 

是一个非凸优化的函数,很容易陷入局部最优,怎么变为一个凸优化的函数?转化为对数的形式

由于的函数图像为,则对于y=+1时的代价函数对应的图像为

,图像说明对于分类标签y=+1来说,越大越接近于1所付出的代价越小,越小越接近于0所付出的代价越大,同样的,对于y=-1时的代价函数对应的图像为

,图像说明对于分类标签y=-1来说,越大越接近于1所付出的代价越大,越小越接近于0所付出的代价越小

由于样本的分类表示为y=+1和y=0,为了避免写成两行,将代价函数与分类标签关联合并为一个公式:

写成多样本方式,即

当样本分类标签表示为y=+1和y=-1时(这是自己的定义正负样本的分类表示),代价函数可以写成

所以,现在我们的目的就是,找到合适的参数模型来最小化代价函数,用梯度下降的方法可以表示为

求导展开可得,最终的代价函数关于参数的梯度公式为

用另一种标签y=+1和y=-1的形式表示,可得代价函数的梯度为

,更新权重为

三、多分类

现实中的类别往往是多种类型的,例如邮件的类型分类包括工作、朋友、家庭、喜好等,无论是感知机还是逻辑回归的原始分类模型都为二分类,怎么在二分类的基础上做多分类?

以二维特征为例,二分类和多分类的数据分布如下图所示:

多分类的思想之一是one-vs-all,即把其中一种当做一类,其他的所有作为一类,如图所示:

最终得到n个分类器,将测试样本分别输入n个分类器,比较出哪个分类器得出的几率较高,把输入样本归为相应的类

但这种把其中一个作为一类,其他剩余的作为一类训练分类器,会造成两类数据的不平衡(例如,4种平均样本,其中一种为一类,剩余3种为一类,则最后两类样本量为1:3),所以另一种多分类的思想就是,在n类样本中选取两个做分类,其余的样本不用,这样两两训练一个分类器共得到m个分类器(例如,4类样本,选取两个训练一个分类器,一共6个分类器)

输入测试样本,在每个分类器得出属于的类,在m个结果中统计得票最多的类(或者几率最高的类),作为最终的结果,此方法适用于分类不多的情况,若分类过多则需要训练的分类器就很多。

四、过拟合与正则化

什么是过拟合?过拟合就是训练出来的模型,在新的测试样本中表现不好,有很大的误差,分类模型复杂、数据资料含有噪声、数据量少的情况下都能发生过拟合的现象,以线性回归和逻辑回归为例:

减少过拟合的影响,其一减少特征的数目,保留重要的特征,为分类模型选择合适的算法;其二,保留所有特征,对其进行正则化,减少权重参数的值,目的是让每一个特征对预测结果有少的贡献,例如

右边的假设函数多出的三次方项和四次方项会对模型造成过拟合的影响,这些特征多项式是需要被限制的,若在原本最小的化代价函数中对这些特征多项式对应的权重参数加入一些限制项(在一些权重参数的前面乘上一些较大的系数),由于这些较大的系数限制项的影响,要使代价函数最小则这些前面有大系数的权重参数必须尽可能的小,直至近似等于0,这样右边的最终的假设函数就近似等于左边的假设函数,解决过拟合的问题

但是一般情况下,我们不知道哪些特征多项式的项是需要被限制的,所以也不可能单独列出哪些权重参数前面乘以大的系数,解决方法是缩小所有的权重参数值(x0特征对应的权重缩小与否不重要),另他们对应的特征多项式在模型上的贡献都减小,则代价函数变为

将正则化项加入线性回归的代价函数中,利用梯度下降更新权重参数可表示为

由于常数项特征x0不参与正则化项,单独进行更新权重参数,其余权重参数加入正则化项之后,对应参数求导之后更新参数如上图所示,由于取值不能太大,相对与数据样本量m很小,可得最终是一个比1略小的数,意思为把权重参数略微压缩了一下,对于线性回归的另一种算法标准方程法来说,加入了正则化的项后,得到的权重参数的解矩阵为

对于逻辑回归来说,加入正则化项之后,代价函数变为

对应参数求导之后,更新参数如下图所示

逻辑回归和线性回归的更新权重参数的公式在形式上相同,不同的是二者的假设函数和标签(一个y是实数,一个y=0,1)有区别

posted on 2017-06-09 22:51  水涵空  阅读(143)  评论(0编辑  收藏  举报