线性回归
假设函数(Hypotheses function)
首先应该设计一个假设函数,这个假设函数是用来表示一个线性回归的问题,不是一个单独的函数,而是一个函数集合,包含很多个有可能可以很好的表示这个线性回归问题的函数,也就是通常所说的model。一般来讲线性回归的假设函数我们表示成这个样子:
其中 是第i个特征, 是第i个特征的权重, 是bias偏移量。为了将这个式子更加简化,可以将 用 代替,其中 ,因此我们可以写成向量相乘的形式:
,
其中和都是向量,
,
以上是线性回归的假设函数。
设计好模型后,就应该根据训练集使 尽可能的接近,此时的就是最终要找的函数,向量就是所找的目标参数。为了衡量 与之间的距离,需要设计一个损失函数表示两者之间的误差。
损失函数(Cost function)
假设对于每一个样例,目标函数与真实的函数之间相差一个误差,且这个误差是独立同分布的(IID:Independently and Identically Distribution),
根据中心极限定理:在适当的条件下,大量相互独立随机变量的均值经适当标准化后依分布收敛于高斯分布。因此,假设独立这些误差服从均值为0的高斯分布:。
因此可以写出高斯分布的概率密度函数:
其中,
因此,
由于独立同分布,使用极大似然估计法来计算x条件下取到y的最大概率,其中theta是变量,可以写出极大似然函数:
取对数化简,取对数后单调性不变,
可以从化简结果中看出,除了一个平方项,其他均为常数,因此使用平方误差当作损失函数。其中,所以损失函数为,
其中1/2是为了后面计算方便化简。
最优化算法(Optimization algorithm)
-
矩阵满秩时可以直接求解
-
矩阵不满秩时使用一系列最优化算法求解
主要使用了梯度下降算法求解目标函数 。梯度下降法主要思想是在一点上求梯度,沿梯度的反方向就是下降最快的方向,移动一个小的步长,每次更新和梯度,不断迭代直到收敛。具体可以看这篇。
需要注意的有几点:
- 随机起始点
- 每次迭代应该同步更新完所有后进行下一次迭代
浅显的解释一下为什么可以随机起始点,目标函数是一个二次函数,线性回归构成一个线性最小二乘问题,也就是说线性回归的代价函数是个凸函数,所以当x是一维的情况时,目标函数是一个开口向上的抛物线,局部最优解就是全局最优解,只有在全局最优解处梯度为0,因此在任意位置开始梯度下降,一定会稳定收敛于全局最优解。
写出梯度下降的公式如下:
梯度可化简为:
最终:
逻辑回归
假设函数(Hypotheses function)
逻辑回归与线性回归最直观的区别就是逻辑回归的target是离散的数据,对于二分类问题,逻辑回归的target取值就是0或1,理论上可以直接用线性回归对逻辑回归的分类值预测,但是实际上效果非常差,直观上因为y只能取到0或1,但是线性回归能取到全体实数。因此,选择了sigmoid函数作为假设函数,这个函数的作用可以理解为讲输入的全体实数映射到[0,1]区间内。
,
图像如下:
损失函数(Cost function)
根据上面线性回归的思路,应该把这个假设函数转化为概率,然后利用极大似然估计最大化概率从而学习的值,因此假设:
写成一个式子可以表示为:
利用极大似然估计法写出要最优化的目标,然后取对数化简:
最优化算法(Optimization algorithm)
至此,得到了待优化的目标函数,仍然根据上面线性回归的思路,使用梯度下降的思路求解:。这里是加而不是减,是因为在线性回归中最大化转化为了最大化一个负平方误差,也就是最小化一个平方误差。这里直接使用的是最大化。
因此逻辑回归的迭代式为:
可以看到逻辑回归的迭代式和线性回归很像,但是这两个用的损失函数截然不同,仅仅是化简完后形式很像而已。线性回归用到的是平方误差,而逻辑回归用到的是对数误差,这从刚刚的推导过程中也可以看出来。
逻辑回归和线性回归的异同
两者虽然都叫做回归,线性回归是用于回归问题,而逻辑回归用于分类问题,这是最本质的区别。线性回归我们是通过假设了真实值与预测模型有一个误差,,然后假设这个误差服从正态分布,根据这个误差项来处理回归问题。而逻辑回归是因变量服从一个特殊的二项分布,也就是伯努利分布,根据模型是根据这个分布的期望得出,刚好是sigmoid函数,并基于此来预测分类问题,包括为什么讲假设函数假设为y=1的概率从而得出后面的极大似然估计,这些在后面对于广义线性模型的总结中会详细推导。
我们也可以将逻辑回归看做是线性回归,p(y=1|x)看作服从正太分布,我认为和高斯判别分析法有一些关联,后面我也会进行推导。同时两种回归都用到了梯度下降的思路去求解,这也是一个共同点。