Machine Learning Week02
Multiple Feature
Multivariate Linear Regression
\(h_{\theta}(x)=\theta^{T}X\)
\(h_θ(x)=\begin{bmatrix}θ_0&θ_1&...&θ_n\end{bmatrix}\begin{bmatrix}x_0\\x_1\\⋮\\x_n\end{bmatrix}=θ^Tx\)
Gradient Descent for Multiple Variables
Cost function: \[J(\theta_0,\theta_1...\theta_n)=\frac {1}{2m}\sum \limits_{i=1}^m(h_\theta(x^{(i)})-y^{(i)})^2\]
\[\theta_j:=\theta_j-\alpha\frac {\partial} {\partial \theta_j}J(\theta)=\theta_j-\alpha\frac {1}{m}\sum \limits_{i=1}^m(h_\theta(x^{(i)})-y^{(i)})x_j^{(i)}\quad(for\ j=0...n)\]
Feature Scaling
Make sure features are on a similar scale
避免梯度下降一个维度值过大导致下降速率很慢
- Get every feature into approximately a \(-1\le x_i\le 1\) range
- 大约在这个范围附近就行,例如: \(-2\le x_i\le 2\)也可以
- 方法一:都除以最大值\(x_{max}\)
- 均值归一化 Mean normalization:
- \[\frac{x_i-\mu_i}{s_{i}}\]
- 使得均值为0
- \(\mu\)是训练集x某特征的均值,s可以是标准差,一般\(s=max-min\)即可
- 特征缩放不用太精确,只是为了让梯度下降更快而已
确定α
- 如果α过大,则可能出现 J 值增大或者不收敛
- 让α尽量小,使得每次迭代 J 值都在减小
- 自动收敛测试:可以设定一个值比如0.001,如果每一步J变化小于这个值即可认为收敛,但是选择合适的值很困难
- 所以可以采用:代价函数 J 随迭代步数变化曲线,可以帮助判断梯度下降算法是否收敛
多项式回归 Polynomial Regression
- 拟合复杂函数
- 将x进行平方、开根等处理。例如:\(x_3=x_1^3\)
- 注意新特征要进行均值归一化使得各个特征之间差距不至于过大
Normal equation 正规方程
- solve for θ analytically,θ的解析解法
- \[J(\theta_0,\theta_1...\theta_n)=\frac
{1}{2m}\sum \limits_{i=1}^m(h_\theta(x^{(i)})-y^{(i)})^2\]
,令\(\frac {\partial} {\partial
\theta_j}J(\theta)=0\)(偏微分)
- \(X=\begin{bmatrix}x_0&x_1&...&x_n\end{bmatrix}\),x代表特征的列向量集合
- 则可以推出:\(\theta=(X^TX)^{-1}X^Ty\),即正规方程
- matlab:pinv(X‘*X)*X'*y
- 用正规方程就不用变量归一化
- 优点:不用选择α;不用迭代
- 缺点:n较大时,算逆矩阵会比较慢,n>10000,复杂度大约在\(O(n^3)\)
- 正规方程的不可逆性 Normal Equation Non-invertibility
- pinv可以求伪逆,inv求逆
- 如果\(X^TX\)是不可逆的:
- 特征之间是相关的
- 特征多于样本数
- 解决方法:删除多余特征或正则化
Related Posts