吴恩达机器学习笔记D2&D3
3.1矩阵与向量
Matrix: Rectangular array of numbers.
Dimension of matrix: number of rows times number of cols.
$A_{ij}$ = “i,j entry” in the $i^{th}$ row, $j^{th}$ col.
Vector: An n*1 matrix(在线代里还有细分行向量和列向量)
$y_i = i^{th} element$
3.2加法和标量乘法
矩阵加法
$$
\begin{bmatrix}
1&0\\\
2&5\\\
3&1
\end{bmatrix}+
\begin{bmatrix}
4&0.5\\\
2&5\\\
0&1
\end{bmatrix}=
\begin{bmatrix}
5&0.5\\\
4&10\\\
3&2
\end{bmatrix}
$$
标量乘法
$$
3 \ast
\begin{bmatrix}
1&0\\\
2&5\\\
3&1
\end{bmatrix}=
\begin{bmatrix}
3&0\\\
6&15\\\
9&3
\end{bmatrix}
$$
矩阵乘法
和列方程组差不多,左边是输入,经过第二个矩阵的变换(假设函数)输出结果。
3.5矩阵乘法的特征
3.6逆和转置
4.1多元线性回归的多特征
n是特征的数量
$x^{\left(i\right)}$表示第i个样本
$x^{\left(i\right)}_j$表示第i个样本中第j个特征的值
Hypothesis
过去是单变量的线性回归,随着特征量的增加,需要对假设函数修改
$$h_{\theta}\left(x\right) = \theta_0x_0 + \theta_1x_1 + \theta_2x_2 + \theta_3x_3$$
这里的x0的取值默认取1,之所以这么取是可能是为了向量的纬度对齐。
于是便可以写成如下形式
$$
x =
\begin{bmatrix}
x_0\\\
x_1\\\
x_2\\\
\vdots \\\
x_n
\end{bmatrix}
\theta =
\begin{bmatrix}
\theta_0\\\
\theta_1\\\
\theta_2\\\
\vdots\\\
\theta_n
\end{bmatrix}
$$
$$ h_{\theta}\left(x\right) = \theta^Tx$$
这里要注意内外积的区别,因为结果是一个标量而不是一个矩阵,所以是前面的theta转置。
4.2多元梯度下降法
假设函数: $h_{\theta}\left(x\right) = \theta_0x_0 + \theta_1x_1 + \theta_2x_2 + \theta_3x_3$
参数: $\theta_0,\theta_1,\cdots,\theta_n$
代价函数:
$$J\left(\theta_0,\theta_1,\cdots,\theta_n\right)=\frac {1}{2m} \sum_{i=1}^m {\left( h_θ \left( x^{i} \right) -y \right)} ^2$$
梯度下降
$θ_j := θ_0 - α\frac{∂}{∂θ_j}J\left(\theta_0,\theta_1,\cdots,\theta_n\right)$
常数项1声明为了$x_0$,所以$\theta_0$的情况也包含了进去。
4.3特征缩放
特征缩放
特征缩放Feature Scaling: make sure feature are on a similar scale.
由于卧室数量和房子面积比例为400:1, 所以会导致在画代价函数图像的时候画出的椭圆太扁平。为了方便收敛,采取右边的对特征量进行缩放的方法。
看弹幕提到一个问题,这个椭圆是竖着还是躺着,原图这么画是没错的,因为x1的范围相对于x2较大,所以导致$\theta_1$稍微变化一点,代价函数的值就会有更大的变化,这就是为什么在$\theta_1$轴上,等高线如此密集的原因。
方法:尽量让所有的特征大致收缩在[-1,1]的范围之间,当然像[0,2]这样相对较小的也可以。
均值归一化
均值归一化Mean normalization: Replace $x_i$ with $x_i-\mu_i$ to make features have approximately zero mean.(Don`t apply to $x_0$ = 1)
上面这些是为了把特征值$x_i = \frac{x_i-\mu_i}{S_i}$
$\mu_i$表示平均值,而$S_i$可以用样本集的方差或者极差(最大值减最小值)。
以上的特征缩放是为了减少迭代次数,加快梯度下降的速度。
4.4学习率
两个目标:
1.”Debugging”: 如何保证梯度下降正常工作
2.如何选择学习率α
判断梯度下降正常工作
画出最小代价函数值随着迭代次数变化的曲线图。随着迭代次数的上升代价函数逐渐收敛到一个最小值。
自动收敛测试
automatic convergence test自动收敛测试: 如果在一次迭代中,J(θ)小于某个很小的数(如1e-3),则视为函数已收敛。
但是这个阈值时很难确定的,所以从上面的曲线图判断是否收敛比较好。
代价函数不随着迭代次数下降的异常情况
1. 选取适合的学习率,代价函数会随着迭代次数上升下降
2. 如果学习率过低,导致迭代次数过多
3. 如果学习率过高,代价函数可能不会在迭代中减少或收敛。
4.5特征和多项式回归
1. 特征量的选取要选取真正影响假设函数的特征。
2. 多项式的选取也要根据数据的分布选取。(如二次函数随着x增加会先升后降,三次函数则会x增加升降升)
4.6正规方程(区别于迭代方法的直接解法)
一个方法是,对每一个θ进行求偏导数,并将导数置零(即求出能够让代价函数最小的时候θ的取值)。
另一个正规方程, 即列出矩阵方程求出参数,具体过程如下
(这边就是如同Ax=y这种矩阵方程的求解)
如果使用特征方程的话则不需要进行特征缩放。
梯度下降(即迭代方法)和正规方程的比较
$$
\begin{array}{l|l}
{Gradient Descent}&{Birnak Equation}\\
\hline
{Need to choose \alpha}&{No need to choose \alpha}\\
{Need many iterations}&{Don’t need to iterate}\\
{Works well even when n is large}&{Need to compute \left(X^TX\right)^{-1} and slow if n is large O\left(n^3\right)}\\
\end{array}
$$
4.7正规方程在矩阵不可逆情况下的解决方法
Otacle中的Pinv:Pseudo-inverse伪逆(我也没听说过)
不可逆non-invertible有两种情况:
1. 线性相关的特征(重复的特征)
-删除重复的特征
2. 特征量过多,导致样本数少于特征数量。
-删除一些影响小的特征,或则使用正规化regularization。