线性模型-----机器学习

线性模型包括线性回归、广义线性模型、对数几率回归、线性判别分析和多项式回归等。它们形式简单,便于理解和实现。线性回归通过最小二乘法求解参数,对数几率回归适用于分类任务,而岭回归和套索回归通过正则化减少过拟合。这些模型在不同场景下各有优势。

线性模型

1. 基本形式

给定由d个属性描述的示例x=(x_1;x_2;...;x_d),其中x_ix在第i个属性上的取值,线性模型试图学得一个通过属性的线性组合进行预测的函数,即:f(x)=w_1x_1+w_2x_2+...+w_dx_d+b,一般用向量形式写成:

其中w=(w_1;w_2;...;w_d)wb学的之后,模型就得以确定。

线性模型形式简单,方便建模,很多功能强大的非线性模型可以在线性模型的基础上通过引入层级结构或者高维映射而得到。其中参数w非常直观的表达了各个属性在预测中的重要性,所以线性模型的可解释性很强。

2. 线性回归 (一元、多元)

给定数据集D={(\textbf{x}_1,y_1),(\textbf{x}_2,y_2),...,(\textbf{x}_m,y_m)},其中x_i=(x_{i1};x_{i2};...;x_{id})y_i\in R。我们先考虑一种最简单的情况(一元线性回归):输入的属性的数目只有一个。线性回归试图学的:

 通过最小化预测值和真实值之间的误差来确定参数wb。之前讲性能度量的时候已经提过均方误差是回归任务中最常用的性能度量,所以这里我们试图让均方误差最小化:

基于均方误差最小化来进行模型求解的方法称为“最小二乘法”(年代久远,楼主记性不好,这种方法好像是高中的时候就有,对参数求导之后让等式为0) :

让上面两个式子等于0,就可将参数求出(一元的倒数还是很好解的):

 w=\frac{\sum_{i=1}^{m} y_{i}\left(x_{i}-\bar{x}\right)}{\sum_{i=1}^{m} x_{i}^{2}-\frac{1}{m}\left(\sum_{i=1}^{m} x_{i}\right)^{2}}                                                                 b=\frac{1}{m} \sum_{i=1}^{m}\left(y_{i}-w x_{i}\right)

由一元扩展为多元,也就是数据集D中的样本由d个属性描述,此时线性模型试图学得:

这种情况称为多元回归。多元回归的推导与一元一致,更为麻烦的是对矩阵求导,这里不多说,楼主建议多看书,学好高数。

“广义线性模型”:这种模型也就是说当我们拿到数据的时候,发现x和y并非呈现只管的线性分布,那我们就将当前的函数进行转变,使其接近线性函数,以对数线性回归为例:

明显我们可以看到黑色的线条并非线性函数,将其取对数之后,接近线性回归。更为一般的,我们考虑单调可微函数g(\cdot ),令

这样得到的模型称为“广义线性模型” 。

3. 对数几率回归

那么是不是所有的线性模型只能做回归任务呢? 当然不是,有了广义线性模型的引入,我们只需要改变上述的单调可微函数g(\cdot )就可以完成分类任务。

首先考虑二分类的任务,其输出标记是y\in \{0,1\},而线性回归模型产生的预测值是实值。那么如何将实值转为0/1值呢? 数学中的函数各种各样,对于当前的任务来说,“单位阶跃函数”最为理想:

如果预测值z大于0就判为正例,小于0就判为反例。但是单位阶跃函数不连续,不可导。所以我们引入另一个替代函数:对数几率函数,大多数人称为逻辑回归函数:

 由上图我们可以看出对数几率函数是一种“Sigmoid”函数:

 通过这种转换,我们可以完成分类任务。

对数几率回归的优点:

  • 直接对分类可能性建模
  • 无需事先假设数据分布,避免了假设分布不准确所带来的问题
  • 不只是预测出类别,而是可以得到近似概率预测,对许多需要利用概率辅助决策的任务很有帮助
  • 任意阶可导,有很好的数学性质
  • 现有的许多数值优化算法都可以直接用于求解最优解

4.  线性判别分析

线性判别分析(LDA)是一种经典的线性学习方法。其核心思想:给定训练样例集,设法将样例投影到一条直线上,使得同类样例的投影点尽可能接近、异类样例的投影点尽可能远离;在对新样本进行分类的时候,将其投影到同样的这条直线上,再根据投影点的位置来确定新样本的类别:

 线性判别分析西瓜书上的公式写的很详细,但是楼主目前线性判别分析使用的不多,所以也仅仅是了解了以一下基本思想。

5.  多项式回归

对应一个回归方程,如果自变量的指数大于1,那么就成为多项式回归,在这种回归函数中,最佳的拟合线不是直线,而是曲线。

6. 岭回归 (Ridge Regression)

回归函数与之前的线性回归是一样的,唯一不同的是在最小化误差的时候引入了参数\lambda

                                                        =\underset{\beta \in \mathbb{R}^{p}}{\operatorname{argmin}} \underbrace{\|y-X \beta\|_{2}^{2}}_{\text {Loss }}+\lambda \underbrace{\|\beta\|_{2}^{2}}_{\text {Penally }}

引入\lambda是为了缩小系数\beta的幅值来减少方差,这是一个正则化的方法,使用了L2正则化。

7. 套索回归 (Lasso Regression)

与岭回归类似,不过采用的是L1正则化:

=\underset{\beta \in \mathbb{R}^{p}}{\operatorname{argmin}} \underbrace{\|y-X \beta\|_{2}^{2}}_{\text {Loss }}+\lambda\|\beta\|_{1}

8. 弹性回归 

同时使用L1和L2正则化

=\underset{\beta}{\operatorname{argmin}}\left(\|y-X \beta\|^{2}+\lambda_{2}\|\beta\|^{2}+\lambda_{1}\|\beta\|_{1}\right)

其中逻辑回归、岭回归是楼主目前碰到项目以及看别人使用的比较多的。至于如何选择,就看具体任务,多看看别人的代码,也有助于自己的判断。这个链接https://zhuanlan.zhihu.com/p/40141010对回归也进行了比较好的总结。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值