week_2
Andrew Ng 机器学习笔记 ---by OrangeStar
Week_2
1.Multiple Features 更有效的线性回归形式
此时,h函数已经不是二阶了。
\[ X = \begin{matrix} x_0\\ x_1\\ \dots\\ x_n\\ \end{matrix} $$ $$\theta_{n+1}= \begin{matrix} \theta_0 \\ \theta_1\\ \dots\\\theta_n \end{matrix}$$ 故 $h_\theta(x) = \theta^T X$
### 2. 梯度下降对多元变量 Gradient Descent for Multiple Variables
? 如何找到参数? 来解决多元的线性回归?
上一周的二阶算法改进为N阶即可
Repeat until convergence
{
$\theta_j := \theta_j - \alpha \frac1m\sum^m_{i=1} (h_\theta(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 正规方程
给出更好的方法求出$\theta$ 的最优解。区别于梯度下降
一步就可以解出$\theta$
其实就是多元函数的极值。依次求偏导并set to zero
也可以尝试language函数。拉格朗日
但是这样解方程十分复杂,所以,用线性代数的知识
**用X**来表示特征变量和训练样本所组成的矩阵,$x_0$可以用全部1来代替
用Y向量来表示每个样本所对应的结果Y
然后,根据线性代数知识,知道:$Y = \theta^T X$
故,可以解出: <font size=7>$\theta = (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 |\]