线性回归及广义线性回归算法

线性回归及广义线性回归

Posted by ZhY on April 5, 2017

线性回归预备公式

什么是线性回归

首先要明确一点就是什么是回归?我们希望有一个模型可以具有一定的预测能力,当我们想要预测的是连续值时,这类的学习任务被称为是“回归”。回归的目的是建立一个回归方程用来预测目标值,回归的求解就是求这个回归方程的回归系数。

回归最简单的定义是 给出一个点集D,用一个函数去拟合这个点集,并且使得点集与拟合函数间的误差最小,如果这个函数曲线是一条直线,那就被称为线性回归。

比如样本值x与预测值y的函数为 的图像是一条直线,因此是线性的。但是实际问题中往往样本值不止一个,因此实际函数一般为

其中表示未知参数,是要学习出来的值, 表示自变量,在这里是用列向量表示,而是行向量,因此用转置。

线性回归试图学习的是使得的差距尽可能小,而在这里衡量h(x)与y的差别所采用的标准是均方误差(也被称为平方损失),均方误差有着很好的几何意义,它对应了常用的欧几里得距离。

最小二乘

m为样本个数,最小二乘的函数为:

由于该函数求二阶偏导偏导可知其为凸函数,因此当其导数为0时,取到该函数的极小值。

另外:最小二乘建立的目标函数,是在噪声在均值为0时的高斯分布下,极大似然估计的目标函数。

设真实值和样本值的偏差为 则可以表示为:

由于该偏差为多种不同噪声的叠加,而根据中心极限定理可知,符合高斯分布。因此的概率函数为

代入后得到

采用极大似然法计算其似然函数为:

左右同时取对数后:

由于已知,并且要求的最大值,因此应该取 的极小值。

这一点也证明了最小二乘是符合常理的。

向量形式

函数可以表示为向量形式

将该式打开后可得

根据预备公式可得出 又因为 为对称阵(,因此为对称阵),所以该式等于

因此

当该偏导等于0时取得最优解,此时 若X^T X不可逆时该式不可用,因此需要加上一个扰动量使其可逆,此时

原因:半正定,加上扰动量后正定,因此可逆。(即岭回归方法)

简单推导形式

由于已知,则可推

基本算法

梯度下降算法

1.初始化

2.迭代 其中为学习率

3.如果能继续减少,返回2

批处理梯度下降算法

该方式要得到所有样本时才下降一次,速度较慢,但一定能达到最优值。

随机梯度下降算法

随机梯度不一定最终收敛,有可能在最终结果附近震荡,但是速度较快。

mini-batch算法

综合以上两种算法,每次选取b个

局部加权线性回归

由于最初的线性回归只能拟合出一条直线,但是大多数现实生活中的数据并非都能用线性模型描述,而有时候曲线反而更容易拟合。因此我们预测一个点时,选择与这个点相近的点做线性回归。赋予每个点一个权值,当一个点距离所要预测的点越近,其权值越大,对回归曲线的贡献越大。

最初的线性回归要求最小化,而局部加权线性回归会增加一个权重:

权值的设置可以任选一种方式,一般取高斯核函数:

其中成为带宽,它控制着训练样本随着与距离的衰减速率

logistic回归

有函数图像为

若将z用某个线性组合表示,即用表示。则可得

假设如下两个等式成立,

那么我们可以将他们整理为

极大似然法可得

由此可以得出logistic回归的迭代式为:

对数线性模型

一个事件的几率odds,是指该事件发生的概率与该事件不发生的概率的比值。

则针对于logistic回归的对数几率:logit函数表示为:

因此其对数几率为线性函数。所以我们认为logistic回归为对数线性模型,也就是广义线性模型。


参考文献

《广义线性回归和对偶优化》——邹博

机器学习经典算法详解及Python实现–线性回归(Linear Regression)算法

logistic回归

logistic回归总结


代码

SGD算法简单写了一下随机梯度下降算法的python代码,由于是初学,因此用的数据很小,只做理解用。其他几个梯度下降算法原理基本相似