一、主要步骤(各算法通用)
- 构建模型
- 构建代价函数
- 参数优化
监督学习的工作方式:
二、单变量线性回归
eg:房价估计
1.构建模型
假设函数: $ h_\theta(x)=\theta_0+\theta_1x $
2.代价函数
$ J(\theta_0,\theta_1)=1/2m*\sum^n_1(h_\theta(x^i-y^i))^2 $
对代价函数的直观理解:
3.梯度下降
直观理解:从高点逐步到达局部最小值(选择的初始参数组合不同,可能最后的结果也不同)
算法:
repeat:
\(\theta_j=\theta_j-\alpha\partial/\partial\theta_jJ(\theta_0,\theta_1)\ \ \ (for\ j=0\ and\ j=1)\)
\(\alpha\):学习率
注意梯度下降时,要同时更新\(\theta_0\)和\(\theta_1\),即:
将代价函数带入上式求导
三、多变量线性回归
步骤与上述类似,只是需要将X和Y向量化
即代价函数变为:
\(J(\theta_0\theta_1…\theta_n)=1/2m\sum_1^n(h_\theta(x^i)-y^i)^2\)
梯度下降算法变为(求导带入后):
Repeat{
\(\theta_j=\theta_j-\alpha/m\sum^m_1(h_\theta(x^i)-y^i)x^i_j\)
}
四、一些数据处理方法
1.特征缩放:面对多特征问题时,要保证这些特征都具有相近的尺度,这样可以使收敛速度加快。最简单的是将所有特征取值范围都缩放到[-1,1]
即\(x_n=(x_n-u_n)/s_n\)
其中\(u_n\)是平均值\(s_n\)是标准差
收敛速度对比:
2.常用学习率:0.01,0.03,0.1,0.3,1,3,10.(过高可能越过最值,过低迭代次数过高)
3.非线性多项式:有时需要用曲线来适应数据,如
\(h_\theta(x)=\theta_0+\theta_1x_1+\theta_2x^2+\theta_3x^3\)
通常需要先观察数据再决定尝试怎样的模型
还可以令:\(x_2=x_2^2\) \(x_3=x_3^3\)将模型转换为线性回归
六、正规方程
另一种参数优化方法
如\(J(\theta)=a\theta^2+b\theta+c\)
X为训练集特征矩阵,y为结果向量
正规方程解\(\theta=(X^TX)^{-1}X^Ty\)
梯度下降和正规方程的比较:
梯度下降 | 正规方程 |
---|---|
需要选择学习率 | 不需要 |
需要多次迭代 | 一次运算得出 |
当特征数量n大时也能较好适用 | 特征数量n较大则运算代价大 |
适用于各种类型的模型 | 只适用于线性模型,不适合逻辑回归等其他模型 |
当特征变量数量小于一万,通常使用标准方程法
正规方程是不可逆时可删除几个特征