Machine Learning Week02

Multiple Feature

Multivariate Linear Regression

  1. \(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\)

  2. 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)\]

  3. 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\)即可
      • 特征缩放不用太精确,只是为了让梯度下降更快而已
  4. 确定α

    • 如果α过大,则可能出现 J 值增大或者不收敛
    • 让α尽量小,使得每次迭代 J 值都在减小
    • 自动收敛测试:可以设定一个值比如0.001,如果每一步J变化小于这个值即可认为收敛,但是选择合适的值很困难
    • 所以可以采用:代价函数 J 随迭代步数变化曲线,可以帮助判断梯度下降算法是否收敛
  5. 多项式回归 Polynomial Regression

    • 拟合复杂函数
    • 将x进行平方、开根等处理。例如:\(x_3=x_1^3\)
    • 注意新特征要进行均值归一化使得各个特征之间差距不至于过大
  6. 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\)是不可逆的:
        • 特征之间是相关的
        • 特征多于样本数
        • 解决方法:删除多余特征或正则化