ml 学习笔记2(Andrew Ng)多变量线性回归

2.1 多维特征

n 代表特征的数量 
x(i)代表第 i 个训练实例,是特征矩阵中的第 i 行,是一个向量(vector)。 

房间数楼层:1

转置

2.2 多变量梯度下降

代价函数:

批量梯度算法:

我们开始随机选择一系列的参数值,计算所有的预测结果后,再给所有的参数一个新的
值,如此循环直到收敛

2.3 梯度下降算法 特征缩放

如果参数范围过大导致图像使梯度下降算法需要非常多次迭代

我们可以将所有特征的尺度都尽量缩放到-1到1之间

最简单的方法是:

2.4 梯度下降算法 学习率

梯度下降算法收敛所需要的迭代次数各有不同,我们为了观测算法在何时收敛,可以绘制迭代次数和代价函数的图表

梯度下降算法的每次迭代受到学习率的影响,如果学习率 α 过小,则达到收敛所需的迭
代次数会非常高;如果学习率 α 过大,每次迭代可能不会减小代价函数,可能会越过局部最
小值导致无法收敛。 
通常可以考虑尝试些学习率: α=0.010.030.10.31310 

2.5 特征和多项式回归

有时会用到二次方模型或者三次方模型

我们可以令:

转换为线性回归模型

有时还可以:

采用多项式回归模型,运行梯度下降算法,特征缩放很关键

2.6 正规方程

有时用正规方程使更好的解决方法

python求解正规方程:

import numpy as np  

import matplotlib.pyplot as plt 

#原始数据 假设关系为 y=3+x+2z  ==== y=a+bx+cz

x=np.mat([1,2,3,4,5,6])

z=np.mat([1,1,2,2,3,3])

y=np.mat([6,7,10,11,14,15])

y=y.T

a=0

b=0

c=0

canshu=np.mat([a,b,c])

canshu=canshu.T

 

print(canshu)

bianliang=np.column_stack(([1,1,1,1,1,1],x.T,z.T))

print(bianliang[:,0])

#学习速率

canshu=(bianliang.T*bianliang).I*bianliang.T*y

print(canshu)      

注:对于那些不可逆的矩阵(通常是因为特征之间不独立,如同时包含英尺为单位的尺
寸和米为单位的尺寸两个特征,也有可能是特征数量大于训练集的数量),正规方程方法是
不能用的。 

梯度下降与正规方程的比较:

 

posted @ 2018-07-24 14:44  ivanthor  阅读(167)  评论(0)    收藏  举报