机器学习-线性模型
线性模型
给定一个包含d个属性的实例 ,线性模型(linear model)的原理是学得一个可以通过属性的线性组合来进行预测的函数,也即:
一般写作向量形式:。其中权重向量 和偏置项 就是我们需要学习的参数。
线性模型有良好的可解释性,每个属性对应的权重可以理解为它对预测的重要性。并且建模较为简单,许多功能更为强大的非线性模型都是在线性模型的基础上引入层级结构或高维映射得到的。
线性回归
离散属性连续化
由于不同模型对数据的要求不一样,在建模之前,我们需要对数据做相应的处理。一般的线性回归模型要求属性的数据类型为连续值,故需要对离散属性进行连续化。
具体分两种情况:
属性值之间有序:也即属性值有明确的大小关系,比方说把三值属性 “高度” 的取值 {高,中,低} 转换(编码)为 {1.0,0.5,0.0};
属性值之间无序:若该属性有 个属性值,则把它转换为 维向量(把1个属性扩展为 k 个属性),比方说把无序离散属性 “商品” 的取值 {牙膏,牙刷,毛巾} 转换为 (0,0,1),(0,1,0),(1,0,0)。 这种做法在自然语言处理和推荐系统实现中很常见,属性 “单词” 和 “商品” 都是无序离散变量,在建模前往往需要把这样的变量转换为哑变量,否则会引入不恰当的序关系,从而影响后续处理(比如距离的计算)。
补充:对应于离散属性连续化,自然也有连续属性离散化。比方说决策树建模就需要将连续属性离散化。此外,在作图观察数据分布特征时,往往也需要对连续属性进行离散化处理(比方说画直方图)。
最小二乘法
回归任务最常用的性能度量是均方误差(mean squared error, MSE)。首先介绍单变量线性回归,试想我们要在二维平面上拟合一条曲线,则每个样例(即每个点)只包含一个实值属性(x值)和一个实值输出标记(y值),此时均方误差可定义为:
有时我们会把这样描述模型总误差的式子称为损失函数或者目标函数(当该式是优化目标的时候)。这个函数的自变量是模型的参数 和 。由于给定训练集时,样本数 是一个确定值,也即常数,所以可以把 这一项拿走。
最小二乘法(least square method)就是基于均方误差最小化来进行模型求解的一种方法,寻找可使损失函数值最小的参数 和 的过程称为最小二乘参数估计(parameter estimation)。
通过对损失函数分别求参数 和 的偏导,并且令导数为0,可以得到这两个参数的闭式(closed-form)解(也即解析解):
在实际任务中,只要我们把自变量(x, y, m)的值代入就可以求出数值解了。
为什么可以这样求解呢?因为损失函数是一个凸函数(记住是向下凸,类似U型曲线),导数为0表示该函数曲线最低的一点,此时对应的参数值就是能使均方误差最小的参数值。特别地,要判断一个函数是否凸函数,可以求其二阶导数,若二阶导数在区间上非负则称其为凸函数,若在区间上恒大于零则称其为严格凸函数。
多元线性回归
前面是直线拟合,样例只有一个属性。对于样例包含多个属性的情况,我们就要用到多元线性回归(multivariate linear regression)(又称作多变量线性回归)了。
令 。把数据集表示为 大小的矩阵,每一行对应一个样例,前 列是样例的 个属性,最后一列恒置为1,对应偏置项。把样例的实值标记也写作向量形式,记作 。则此时损失函数为:
同样使用最小二乘法进行参数估计,首先对 求导:
令该式值为0可得到 的解析解:
这就要求 必须是可逆矩阵,也即必须是满秩矩阵(full-rank matrix),这是线性代数方面的知识,书中并未展开讨论。但是!现实任务中 往往不是满秩的,很多时候 的列数很多,甚至超出行数(例如推荐系统,商品数是远远超出用户数的),此时 显然不满秩,会解出多个 。这些解都能使得均方误差最小化,这时就需要由学习算法的归纳偏好决定了,常见的做法是引入正则化(regularization)项。
广义线性模型
除了直接让模型预测值逼近实值标记 ,我们还可以让它逼近 的衍生物,这就是广义线性模型(generalized linear model)的思想,也即:
其中 称为联系函数(link function),要求单调可微。使用广义线性模型我们可以实现强大的非线性函数映射功能。比方说对数线性回归(log-linear regression),令 ,此时模型预测值对应的是实值标记在指数尺度上的变化:
ridge regression & lasso regression引入
一些与线性模型的区别:主要集中在损失函数:
解决样本特征数超过样本数就能解决解析解中出现不满秩矩阵的情况。
Lasso 回归和岭回归(ridge regression)都是在标准线性回归的基础上修改 cost function,,其它地方不变。
Lasso 回归对式(1)加入 L1 正则化,其 cost function 如下:
岭回归对式(1)加入 L2 正则化,其 cost function 如下:
Lasso 回归和岭回归的同和异:
- 相同:
- 都可以用来解决标准线性回归的过拟合问题。
- 不同:
- lasso 可以用来做 feature selection,而 ridge 不行。或者说,lasso 更容易使得权重变为 0,而 ridge 更容易使得权重接近 0。
- 从贝叶斯角度看,lasso(L1 正则)等价于参数 的先验概率分布满足拉普拉斯分布,而 ridge(L2 正则)等价于参数 的先验概率分布满足高斯分布。具体参考博客 从贝叶斯角度深入理解正则化 。
也许会有个疑问,线性回归还会有过拟合问题?
加入 L1 或 L2 正则化,让权值尽可能小,最后构造一个所有参数都比较小的模型。因为一般认为参数值小的模型比较简单,能适应不同的数据集,也在一定程度上避免了过拟合现象。
可以设想一下对于一个线性回归方程,若参数很大,那么只要数据偏移一点点,就会对结果造成很大的影响;但如果参数足够小,数据偏移得多一点也不会对结果造成什幺影响,一种流行的说法是『抗扰动能力强』。具体参见博客 浅议过拟合现象 (overfitting) 以及正则化技术原理。
ridge regression
岭回归是引入了 L2 正则化的线性回归,求解问题如下:
岭回归通过增加对权重的限制,使得模型把有限的权重放到更重要的特征维度上;并且每个权重都不会太大,否则自变量的微小变化将会引起输入的巨大变化。
令梯度为零可以得到:
该问题的解析解为:
注意到正则化系数 通常大于零,故矩阵 一定可逆。
即:
正则化系数 越大,不重要的维度的权重会减小;因此通过调整正则化系数可以实现初步的特征选择。下图给出了某岭回归模型中八个维度的权重随正则化系数的变化曲线。从图中可以看出,特征维度 4 和 5 的重要性较大,并且特征 4 起到正作用,特征 5 起到反作用。
求解岭回归问题的程序如下:
1 | def RidgeRegression(X, Y): |
lasso regression
LASSO 回归是引入了 L1 正则化的线性回归,求解问题如下:
选择 L1 范数使得学习得到的权重更加稀疏,不重要的权重接近 0。
由于引入了 L1 正则化项,因此 LASSO 回归的目标函数不满足处处可到,没有闭式解;在实践中常采用梯度下降搜索法 (坐标轴下降法) 求解,即依次对权重 求局部最优,使其梯度趋近于 0,不断迭代直至所有权重都不产生显著变化。
岭回归等价于噪声和先验服从高斯分布的最大后验估计,核岭回归(Kernelized Ridge Regression),LASSO回归等价于噪声服从高斯分布、参数服从拉普拉斯分布的最大后验估计可以参考这篇博客
为什么 lasso 更容易使部分权重变为 0 而 ridge 不行?
lasso 和 ridge regression 的目标都是 ,式(3)和(4)都是拉格朗日形式(with KKT 条件),其中 为 KKT 乘子,我们也可以将 写成如下形式:
- lasso regression:
- ridge regression:
式(5)和(6)可以理解为,在 限制的取值范围内,找一个点 使得 mean square error 最小,可以理解为正则化的力度,式(5)和(6)中的 越小,就意味着式(3)和(4)中 越大,正则化的力度越大 。
以 为例,式(5)中对 的限制空间是方形,而式(6)中对 的限制空间是圆形。因为 lasso 对 的限制空间是有棱角的,因此 的解更容易切在 的某一个维为 0 的点。如下图所示:
Fig. 1 中的坐标系表示 的两维,一圈又一圈的椭圆表示函数 的等高线,椭圆越往外,的值越大,表示使得损失 取得全局最优的值。使用 Gradient descent,也就是让 向着 的位置走。如果没有 L1 或者 L2 正则化约束,是可以被取到的。但是,由于有了约束 或 ,的取值只能限制在 Fig. 1 所示的灰色方形和圆形区域。当然调整 的值,我们能够扩大这两个区域。
等高线从低到高第一次和 的取值范围相切的点,即是 lasso 和 ridge 回归想要找的权重 。
lasso 限制了 的取值范围为有棱角的方形,而 ridge 限制了 的取值范围为圆形,等高线和方形区域的切点更有可能在坐标轴上,而等高线和圆形区域的切点在坐标轴上的概率很小。这就是为什么 lasso(L1 正则化)更容易使得部分权重取 0,使权重变稀疏;而 ridge(L2 正则化)只能使权重接近 0,很少等于 0。
正是由于 lasso 容易使得部分权重取 0,所以可以用其做 feature selection,lasso 的名字就指出了它是一个 selection operator。权重为 0 的 feature 对回归问题没有贡献,直接去掉权重为 0 的 feature,模型的输出值不变。
对于 ridge regression 进行 feature selection,你说它完全不可以吧也不是,weight 趋近于 0 的 feature 不要了不也可以,但是对模型的效果还是有损伤的,这个前提还得是 feature 进行了归一化。
习题
3.1
问:试析在什么情形下,预测函数 中不必考虑偏置项 。
Quora上就有这个问题,而且解释得也不错。试想一下,拟合曲线时,如果不考虑偏置项,则只能拟合一条过原点的曲线。在多元线性回归中也同理,如果不考虑偏置项,那么拟合的超平面就只能过原点,但现实中数据点的分布并不是这样的。使用一个不依赖于属性的的偏置项能够让权重向量所描述的超平面更好地拟合数据点的分布。如果输出值的期望(均值)为0就不需要考虑偏置项了,或者说偏置项此时就等于0。
3.2
问:试证明,对于参数w,对率回归(logistics回归)的目标函数(式1)是非凸的,但其对数似然函数(式2)是凸的。
式1:
式2:
笔记中已经提到了,检验一个函数是否凸函数,可以看其二阶导数是否在区间上恒大于0.
目标函数(也即sigmoid函数):
显然,sigmoid的二阶导数在自变量大于0处取值小于0,所以它不是凸函数。
对数似然函数:
可以看到这个函数在区间上恒大于0(两边无限延伸),符合凸函数的要求,但我不太明白的是为什么作者把这个函数仍然称为对数似然函数,对数几率回归目标是最大化对数似然,最小化损失,私以为把这个函数称为损失函数更合适。
参考
https://zhuanlan.zhihu.com/p/134089340
https://github.com/Vay-keen/Machine-learning-learning-notes
https://github.com/familyld/Machine_Learning
https://zhuanlan.zhihu.com/p/25994179
https://leovan.me/cn/2018/12/ensemble-learning/
https://easyai.tech/ai-definition/ensemble-learning/
https://zhuanlan.zhihu.com/p/72415675
https://www.zhihu.com/question/63492375
https://www.zhihu.com/question/27068705
https://www.zhihu.com/question/19725590/answer/241988854
https://tangshusen.me/2018/10/27/SVM/
https://www.joinquant.com/view/community/detail/a98b7021e7391c62f6369207242700b2
https://zhuanlan.zhihu.com/p/79531731
https://blog.csdn.net/zc02051126/article/details/49618633
https://zhuanlan.zhihu.com/p/127022333
https://0809zheng.github.io/2020/03/30/ridge.html
https://www.cnblogs.com/wuliytTaotao/p/10837533.html
https://link.springer.com/referenceworkentry/10.1007/978-1-4899-7687-1_910#Sec13186
http://palm.seu.edu.cn/zhangml/files/mla11-mll.pdf
https://blog.csdn.net/zwqjoy/article/details/80431496
https://ryuchen.club/posts/0x000034/ (推荐)
https://zhuanlan.zhihu.com/p/78798251
https://zhuanlan.zhihu.com/p/622244758
https://www.biaodianfu.com/hierarchical-clustering.html
https://zhuanlan.zhihu.com/p/411533418
https://zhuanlan.zhihu.com/p/33196506
https://www.cnblogs.com/wry789/p/13125658.html
https://blog.csdn.net/qq_41485273/article/details/113178117
https://www.jianshu.com/p/7d4323c28716
http://lunarnai.cn/2019/01/02/watermelon-chap-13/
https://zhuanlan.zhihu.com/p/411533418
https://www.huaxiaozhuan.com/统计学习/chapters/12_semi_supervised.html
https://blog.csdn.net/tyh70537/article/details/80244490
https://zhuanlan.zhihu.com/p/37747650
https://blog.csdn.net/qq_40722827/article/details/104515955
https://www.cnblogs.com/dyl222/p/11055756.html
https://www.zhihu.com/tardis/zm/art/392908965
https://blog.csdn.net/j123kaishichufa/article/details/7679682
https://www.cnblogs.com/heaad/archive/2011/01/02/1924088.html
https://www.cnblogs.com/stevenlk/p/6543628.html
等等