Andrew Ng 机器学习笔记 ---by OrangeStar
Week_2
1.Multiple Features 更有效的线性回归形式
此时,h函数已经不是二阶了。
[ X = egin{matrix} x_0\ x_1\ dots\ x_n\ end{matrix} $$ $$ heta_{n+1}= egin{matrix} heta_0 \ heta_1\ dots\ heta_n end{matrix}$$ 故 $h_ heta(x) = heta^T X$
### 2. 梯度下降对多元变量 Gradient Descent for Multiple Variables
? 如何找到参数? 来解决多元的线性回归?
上一周的二阶算法改进为N阶即可
Repeat until convergence
{
$ heta_j := heta_j - alpha frac1msum^m_{i=1} (h_ heta(x^{(i)} - y^{(i)})) * x_j^{(i)}$
$for j := 0 dots n$
}
### 3. 梯度下降 --特征缩放Feature Scaling
可以避免找代价函数的最小值的时候,路径搞的特别特别长。所以可以对特征进行缩放。例如除 一个合适的常数。使所有特征量在一个区域梯度下降
这样就有可能找到一条通往全局最优的捷径,in other words,可以让特征量收敛得更快
至于区域,可以以正负3为参考
**特征缩放方法:**
1. 均值归一化 mean normalization
replace $x_i$ with $x_i - mu_i$ $mu$ 可以用mean来代替(平均值)
$ x_i := frac {x_i - mu_i} {s_i}$
s_i is the range of the values
$mu_i$ is the mean of the values
2. 简单用除法缩放
**总结** 特征缩放就是让收敛的更快,减少循环次数
### 4.Learning Rate 学习率
这是梯度下降法的更新规则,如何选择学习率很重要
选择不同的学习率会得到不同的min J下降曲线,自变量为迭代次数
* 学习率太小,可能会让迭代次数太多slow convergence
* 学习率太大,可能不会收敛 may not decrease on , may not converge
**曲线对判断学习率的好坏很重要!!!!**
### 5. 选择变量的方法和多项式线性回归
* 选择变量可以从不同角度看,比如房子的变量,可以选择两个变量,长和宽,或者我们可以组合起来,用x= 长乘宽 这样的变量来描述
* 或者可以用二次函数或者其他特征函数来拟合
* 当选择不同的特征变量的时候,线性拟合需要将他们一体化来看待。变量代换
### 6. Normal Equation&Expression 正规方程
给出更好的方法求出$ heta$ 的最优解。区别于梯度下降
一步就可以解出$ heta$
其实就是多元函数的极值。依次求偏导并set to zero
也可以尝试language函数。拉格朗日
但是这样解方程十分复杂,所以,用线性代数的知识
**用X**来表示特征变量和训练样本所组成的矩阵,$x_0$可以用全部1来代替
用Y向量来表示每个样本所对应的结果Y
然后,根据线性代数知识,知道:$Y = heta^T X$
故,可以解出: <font size=7>$ heta = (X^TX)^{-1}X^{-1}Y$</font>
此公式很重要!!!
这个式子可以给出最优的theta
而这个方法不用采用特征变量归一化
| Gradient Descent | Normal Equation |
| ------------------------------------------------------------ | ------------------------------------------------------------ |
| 1. Need to choose $alpha$ <br />2. Needs many iterations。时间复杂度大概为$O(kn^2)$<br />3.Woks well even when n is large | 1.No need to choose $alpha$ <br />2. Do not need to iterate<br />3.Need to compute $(X^TX)^{-1}$ 时间复杂度大概为O($n^3$)<br />4. Slow if n is very large |]