一、主要步骤(各算法通用)
- 构建模型
- 构建代价函数
- 参数优化
监督学习的工作方式:

二、单变量线性回归
eg:房价估计
1.构建模型
假设函数:
2.代价函数
对代价函数的直观理解:

3.梯度下降
直观理解:从高点逐步到达局部最小值(选择的初始参数组合不同,可能最后的结果也不同)
算法:
repeat:
:学习率
注意梯度下降时,要同时更新和,即:

将代价函数带入上式求导

三、多变量线性回归
步骤与上述类似,只是需要将X和Y向量化
即代价函数变为:
梯度下降算法变为(求导带入后):
Repeat{
}
四、一些数据处理方法
1.特征缩放:面对多特征问题时,要保证这些特征都具有相近的尺度,这样可以使收敛速度加快。最简单的是将所有特征取值范围都缩放到[-1,1]
即
其中是平均值是标准差
收敛速度对比:
2.常用学习率:0.01,0.03,0.1,0.3,1,3,10.(过高可能越过最值,过低迭代次数过高)
3.非线性多项式:有时需要用曲线来适应数据,如
通常需要先观察数据再决定尝试怎样的模型
还可以令: 将模型转换为线性回归
五、正规方程
另一种参数优化方法
如
X为训练集特征矩阵,y为结果向量
正规方程解
- 对上述式子的理解:
设误差为
还可以用矩阵写为,对求导,得到,令其等于0,得到
即得到了使误差函数最小的参数
梯度下降和正规方程的比较:
| 梯度下降 | 正规方程 |
|---|---|
| 需要选择学习率 | 不需要 |
| 需要多次迭代 | 一次运算得出 |
| 当特征数量n大时也能较好适用 | 特征数量n较大则运算代价大 |
| 适用于各种类型的模型 | 只适用于线性模型,不适合逻辑回归等其他模型 |
当特征变量数量小于一万,通常使用标准方程法
正规方程是不可逆时可删除几个特征
六、python实现
1 | def standRegress(xArr,yArr): |