引例:当房价受房屋面积、卧室数量、楼层、房屋年龄等多个因素影响时的线性回归算法是什么样的?
房屋面积 | 卧室数量 | 楼层 | 房屋年龄 | 房价($1000) |
2104 | 5 | 1 | 45 | 460 |
1416 | 3 | 2 | 40 | 232 |
1534 | 3 | 2 | 30 | 315 |
852 | 2 | 1 | 36 | 178 |
… | …. | …. | … | …. |
假设函数:h(x)=WTX
输入变量(x1,w1)、(x2,w2)、(x3,w3)、(x4,w4)分别代表房屋面积、卧室数量、楼层、房屋年龄和各自的权重,w0代表偏差,则假设函数为:h(x)=w0+w1x1+w2x2+w3x3+w4x4
推广到一般,对于n个特征的多因素线性回归问题的假设函数:h(x)=w0+w1x1+w2x2+...+wnxn
设定x0=1,则假设函数为:h(x)=w0+w1x1+w2x2+...+wnxn=w0x0+w1x1+w2x2+...+wnxn
把W(w0,w1,w2,....),X(x0,x1,x2,....)分别看成是n+1维的列向量,则W、X、WT(W的转置矩阵)分别为:
,则假设函数为:
损失函数:J(w0,w1,w2,...,wn)=J(W)=Σmi=1(h(x(i))-y(i))2/m
特征缩放
方法一:把特征值缩放到[-1,1]之间(或者差不多大小的区间)来达到更快的收敛到最小值的效果
例如:房屋面积x1的大小在0-2000,卧室数量x2的大小在1-5,使用特征缩放,对x1,x2进行缩放处理,则:
x1=房屋面积/2000,0≤x1≤1
x2=卧室数量/5,0≤x2≤1
缩放后会加快收敛到最小值
方法二:均值归一化
例如:房屋面积x1的大小在0-2000(均值为1000),卧室数量x2的大小在1-5(均值为2),使用特征缩放,对x1,x2进行缩放处理,则:
x1=(房屋面积-1000)/2000,-0.5≤x1≤0.5
x2=(卧室数量-2)/5,-0.5≤x2≤0.5
或者
x1=(房屋面积-1000)/(样本最大值-样本最小值),-0.5≤x1≤0.5
x2=(卧室数量-2)/(样本最大值-样本最小值),-0.5≤x2≤0.5
学习率learning rate
1、看图:x轴数学习次数,y轴是J(W)损失函数,通过图形对收敛情况判断学习率的情况
2、..., 0.001, 0.003, 0.01, 0.03, 0.1, 0.3, 1, ... 间隔3倍选择学习率测试
线性回归问题正规方程解法:W=(XTX)-1XTy , 其中XT是X矩阵的转置矩阵,(XTX)-1是XTX的逆矩阵
对于线性回归:梯度下降法和正规方程解法的区别
- 梯度下降需要选择一个学习率,需要迭代很多次
- 正规方程不需要学习率,一次求解
- 特征数量(n)很大(百万级)选择梯度下降,特征数量不多(万级或者以下)选择用正规方程解法(时间复杂度O(n3))