预备知识
-
PS:
- 之前一直比较纠结,最大似然估计的定义为什么是概率密度函数(或概率质量函数)的累积,看了上面的似然函数中的计算实例才逐渐明白。似然函数取得最大值表示相应的参数能够使得统计模型最为合理。
线性模型
线性回归是依据样本数据上抽取的特征,预测连续值结果。简单的例子如依据身高去预测体重,如实验室中根据有色物质浓度得到吸光度曲线,再根据未知浓度有色物质吸光度得到其浓度,如上图所示。稍复杂点的如已知房子的很多特征,房子面积、卧室数目、房子所在街道、小区等,去预测房价。
假设有份房价预测数据,我们有n个特征(房子面积,卧室数量…),m个样本(房子1,房子2…),θ1为房子面积系数,θ2为卧室数量系数…,hθ(x)表示最后的房价,通过线性回归,我们可以得到以下公式:
hθ(x)=θ0x0+θ1x1+...+θnxx=θTX
x0为1,θ0即代表常数项,θ和X默认为列向量,所以θ需要转置乘以X再加,使用矩阵是因为矩阵运算高效。
误差项分析
真实值和预测值之间肯定是存在差异的(用ε来表示误差)。对于每个样本:
y(i)=θTx(i)+ε(i)
统计学家对误差项做了符合普遍规律的假设,即误差项ε是独立且具有相同的分布,服从均值为0方差为ε的高斯分布。
独立: 如果是预测房价:房屋1的价格和房屋2的价格是没有关系的,样本之间互相不会影响。
同分布: 如果是预测房价:每个房子的背景以及自身的价格变量必须相同,不能房子1是上海的,房子2是*的。
推导
(1) 预测值与误差:y(i)=θTx(i)+ε(i)
(2) 由于误差服从高斯分布:p(ε(i))=2πσ1exp(2σ2−(ε(i))2)
将(1)代入(2):p(y(i)∣x(i),θ)=2πσ1exp(2σ2−(y(i)−x(i))2)
似然函数:
L(θ)=i=1Πmp(y(i)∣x(i);θ)=i=1Πm2πσ1exp⎝⎜⎛−2σ2(y(i)−θTx(i))2⎠⎟⎞
累乘难求最大值,于是引入对数
对数似然函数:
l(θ)=log(L(θ))=log⎝⎜⎛i=1Πm2πσ1exp⎝⎜⎛−2σ2(y(i)−θTx(i))2⎠⎟⎞⎠⎟⎞
l(θ)=i=1∑mlog(2πσ1)−i=1∑m2σ2(y(i)−θTx(i))2
l(θ)=i=1∑mlog(2πσ1)−σ21⋅21⋅i=1∑m(y(i)−θTx(i))2
因为 i=1∑mlog(2πσ1)是常数,所以只要求σ21⋅21⋅i=1∑m(y(i)−θTx(i))2最小就好了。
所以,我们定义损失函数:损失函数:J(θ)=21i=1∑m(yi−θTxi)2 , 21保留是为了后续求导系数约分
其中:
x(i)表示向量x中的第i个元素
y(i)表示向量y中的第i个元素
下面使用矩阵计算,因为使用矩阵的效率更高。
J(θ)=21(Y−θX)T(Y−θX)
=21(YT−XTθT)(Y−θX)
=21(YTY−XTθTY−YTθX+XTθTθX)
对θT求偏导,令其为零:∇J(θ)=21(−XTY−XTY+2θXTX)=0
θ=(XTX)−1XTY
评估方法
最常用的评估项
R2 的取值越接近于1我们认为模型拟合的越好
梯度下降
y轴是我们要优化的损失函数,x轴是自变量θ,此处以θ为例,整个图像就像一个山谷,梯度代表y值增大的方向,我们希望θ逐渐往y减小的方法走,即与梯度相反的方向去走,最后走到山谷。所以首先,我们要找到梯度方向,即为导数方向,描述多元变量时即为偏导方向,对应着数学中的求导。这个方向也是变化最快的方向,对应导数的值。每次走多远呢?如果步子太大,直接走到对面山上,显然不行,即会出现持续震荡,无法走到最低点。步子走得太小,迭代次数就会很大,即影响了整个的计算效率,这个参数对应的就是学习率α。实际过程中,学习率一般选为0.01或0.001等,视情况调整。
在越接近这个曲线最低点位置的时候,它的斜率会越小,这意味着说学习率乘以斜率的值的大小会越小,也就是行动会越来越缓慢,越来越谨慎,所以迭代了一定的轮次之后,我们会发现θ的变化率已经非常非常小了, 那我就可以认为θ基本在最低点的位置,然后停止,所以我们通过这样的方式可以找到这个凸函数的全局的最低点。当然,停止策略除了θ变化,也可以是迭代次数或是损失函数的变化值小于某个范围。
梯度下降目标函数:
梯度下降,目标函数:J(θ)=2m1i=1∑m(hθ(xi)−yi)2(比之前多除以m是表示均值)
θj=θj−αdθdJ(θ)=θj−m1(hθ(xi)−yi)xji
批量梯度下降:∂θj∂J(θ)=−m1i=1∑m(yi−hθ(xi))xji θj=θj+m1i=1∑m(yi−hθ(xi))xji
(容易得到最优解,但是由于每次考虑所有样本,速度很慢)
随机梯度下降:θj=θj+(yi−hθ(xi))xji
(每次找一个样本,迭代速度快,但不一定每次都朝着收敛的方向)
小批量梯度下降:θj:=θj−α101i=1∑i+9(hθ(x(k)−y(k)))xj(k)
(每次更新选择一小部分数据来算,实用!)