【机器学习】课程笔记04_多变量线性回归(Linear Regression with Multiple Variables)

多变量线性回归

  • 多变量(Multiple Features)
  • 多元梯度下降法(Gradient Descent for Multiple Variables)
  • 多元梯度下降法演练1:特征缩放(Gradient Descent in Practice Ⅰ: Feature Scaling)
  • 多元梯度下降法演练2:学习率(Gradient Descent in Practice Ⅱ: Learning Rate)
  • 特征和多项式回归(Features and Polynomial Regression)
  • 正规方程(Normal Equation)
  • 正规方程及不可逆性(Normal Equation and Non-invertibility)

多变量(Multiple Features)

  • 支持多变量的假设h为:

    h θ ( x ) = θ 0 + θ 1 x 1 + θ 2 x 2 + . . . + θ n x n h_{\theta}\left( x \right)={\theta_{0}}+{\theta_{1}}{x_{1}}+{\theta_{2}}{x_{2}}+...+{\theta_{n}}{x_{n}} hθ(x)=θ0+θ1x1+θ2x2+...+θnxn

  • 这个公式中有 n + 1 n+1 n+1个参数和 n n n个变量,为了使得公式能够简化一些,引入 x 0 = 1 x_{0}=1 x0=1,则公式转化为:

    h θ ( x ) = θ 0 x 0 + θ 1 x 1 + θ 2 x 2 + . . . + θ n x n h_{\theta} \left( x \right)={\theta_{0}}{x_{0}}+{\theta_{1}}{x_{1}}+{\theta_{2}}{x_{2}}+...+{\theta_{n}}{x_{n}} hθ(x)=θ0x0+θ1x1+θ2x2+...+θnxn

  • 公式可以简化为:

    h θ ( x ) = θ T X h_{\theta} \left( x \right)={\theta^{T}}X hθ(x)=θTX(其中上标 T T T代表矩阵转置)

多元梯度下降法(Gradient Descent for Multiple Variables)

  • 假设函数 Hypothesis: h θ ( x ) = θ T X = θ 0 + θ 1 x 1 + θ 2 x 2 + . . . + θ n x n h_{\theta}\left( x \right)=\theta^{T}X={\theta_{0}}+{\theta_{1}}{x_{1}}+{\theta_{2}}{x_{2}}+...+{\theta_{n}}{x_{n}} hθ(x)=θTX=θ0+θ1x1+θ2x2+...+θnxn x 0 = 1 x_0 = 1 x0=1

  • 参数 Parameters: θ 0 , θ 1 , . . . , θ n \theta_0,\theta_1,...,\theta_n θ0,θ1,...,θn

  • 代价函数 Cost function: J ( θ 0 , θ 1 . . . θ n ) = 1 2 m ∑ i = 1 m ( h θ ( x ( i ) ) − y ( i ) ) 2 J(\theta_0,\theta_1...\theta_n)=\frac{1}{2m}\sum\limits_{i=1}^{m}(h_{\theta}(x^{(i)})-y^{(i)})^2 J(θ0,θ1...θn)=2m1i=1m(hθ(x(i))y(i))2

  • 目标: 找到使代价函数最小的一系列参数。

    • 多变量线性回归的批量梯度下降算法:

      【机器学习】课程笔记04_多变量线性回归(Linear Regression with Multiple Variables)_第1张图片

【机器学习】课程笔记04_多变量线性回归(Linear Regression with Multiple Variables)_第2张图片

  • 计算代价函数:

    def computeCost(X, y, theta):
        inner = np.power(((X * theta.T) - y), 2)
        return np.sum(inner) / (2 * len(X))
    

多元梯度下降法演练1:特征缩放(Gradient Descent in Practice Ⅰ: Feature Scaling)

  • 目的: 面对多维特征问题的时候,要保证这些特征都具有相近的尺度,这将帮助梯度下降算法更快地收敛。
  • 解决: 尝试将所有特征的尺度都尽量缩放到-1到1之间。
  • 方法: x n ← x n − μ n s n x_n \leftarrow \cfrac{x_n-μ_n}{s_n} xnsnxnμn,其中 μ n μ_n μn是特征值平均值, s n s_n sn是特征值范围(max-min)或标准差。

多元梯度下降法演练2:学习率(Gradient Descent in Practice Ⅱ: Learning Rate)

  • 梯度下降算法收敛所需要的迭代次数根据模型的不同而不同,我们不能提前预知,我们可以绘制迭代次数和代价函数的图表来观测算法在何时趋于收敛。

    【机器学习】课程笔记04_多变量线性回归(Linear Regression with Multiple Variables)_第3张图片

  • 也有一些自动测试是否收敛的方法,例如将代价函数的变化值与某个阀值(例如0.001)进行比较,但通常看上面这样的图表更好。

  • 学习率取值:

    • 如果学习率 a a a过小,则达到收敛所需的迭代次数会非常高;
    • 如果学习率 a a a过大,每次迭代可能不会减小代价函数,可能会越过局部最小值导致无法收敛。
  • 可以考虑的学习率:α = 0.001,0.003,0.01,0.03,0.1,0.3,1,3,10 …

特征和多项式回归(Features and Polynomial Regression)

  • 如何选择合适的特征(例如房价预测问题)

  • 线性回归并不适用于所有数据,有时我们需要曲线来适应数据:

    • 二次模型: h θ ( x ) = θ 0 + θ 1 x 1 + θ 2 x 2 2 h_{\theta}\left( x \right)={\theta_{0}}+{\theta_{1}}{x_{1}}+{\theta_{2}}{x_{2}^2} hθ(x)=θ0+θ1x1+θ2x22
    • 三次模型: h θ ( x ) = θ 0 + θ 1 x 1 + θ 2 x 2 2 + θ 3 x 3 3 h_{\theta}\left( x \right)={\theta_{0}}+{\theta_{1}}{x_{1}}+{\theta_{2}}{x_{2}^2}+\theta_3x_3^3 hθ(x)=θ0+θ1x1+θ2x22+θ3x33
  • 先观察数据再决定使用什么样的模型,还可以将模型转化为线性回归模型:
    h θ ( x ) = θ 0 + θ 1 x 1 + θ 2 x 2 + θ 3 x 3 = θ 0 + θ 1 ( s i z e ) + θ 2 ( s i z e ) 2 + θ 3 ( s i z e ) 3 \begin{aligned} h_{\theta}\left( x \right)&={\theta_{0}}+{\theta_{1}}{x_{1}}+{\theta_{2}}{x_{2}}+{\theta_{3}}{x_{3}} \\ &={\theta_{0}}+{\theta_{1}}(size)+{\theta_{2}}(size)^2+{\theta_{3}}(size)^3 \end{aligned} hθ(x)=θ0+θ1x1+θ2x2+θ3x3=θ0+θ1(size)+θ2(size)2+θ3(size)3

  • 根据函数图形特性,还可以采用:

    • h θ ( x ) = θ 0 + θ 1 ( s i z e ) + θ 2 ( s i z e ) 2 h_{\theta}(x)={\theta_{0}}+{\theta_{1}}(size)+{\theta_{2}}(size)^2 hθ(x)=θ0+θ1(size)+θ2(size)2

    • h θ ( x ) = θ 0 + θ 1 ( s i z e ) + θ 2 ( s i z e ) h_{\theta}(x)={\theta_{0}}+{\theta_{1}}(size)+{\theta_{2}}\sqrt{(size)} hθ(x)=θ0+θ1(size)+θ2(size)

注:如果我们采用多项式回归模型,在运行梯度下降算法前,特征缩放非常有必要。

正规方程(Normal Equation)

  • 正规方程: 对于某些线性回归问题,正规方程是更好的解决方案,它不需要频繁多次计算,也不需要特征缩放,一次计算即可算出 θ \theta θ的最优值。

  • 方程: ∂ ∂ θ j J ( θ j ) = 0 \frac{\partial}{\partial{\theta_{j}}}J\left( {\theta_{j}} \right)=0 θjJ(θj)=0

  • 解法:

    • 训练集特征矩阵为 X X X(包含 x 0 = 1 x_0=1 x0=1
    • 训练集结果为向量 y y y
    • 正规方程: θ = ( X T X ) − 1 X T y \theta=(X^TX)^{-1}X^Ty θ=(XTX)1XTy
      • X T X X^TX XTX是为了得到方阵,保证存在逆矩阵。
      • 矩阵可能存在 不可逆的情况,这时可是删除一些不必要的特征,或使用正则化。

【机器学习】课程笔记04_多变量线性回归(Linear Regression with Multiple Variables)_第4张图片

【机器学习】课程笔记04_多变量线性回归(Linear Regression with Multiple Variables)_第5张图片

注:对于那些不可逆的矩阵(通常是因为特征之间不独立,如同时包含英尺为单位的尺寸和米为单位的尺寸两个特征,也有可能是特征数量大于训练集的数量),正规方程方法是不能用的。

  • 梯度下降正规方程的比较:
梯度下降 正规方程
需要选择学习率 α \alpha α 不需要选择学习率 α \alpha α
需要多次迭代 一次运算得出
当特征数量 n n n很大时也能较好适用 需要计算 ( X T X ) − 1 (X^TX)^{-1} (XTX)1 如果特征数量 n n n较大则运算代价大,因为矩阵逆的计算时间复杂度为 O ( n 3 ) O(n^3) O(n3),通常来说当 n n n小于10000 时还是可以接受的
适用于各种类型的模型 只适用于线性模型,不适合逻辑回归模型等其他模型
  • 正规方程的python实现:

    import numpy as np
    	def normalEqn(X, y):
    		theta = np.linalg.inv(X.T@X)@X.T@y #X.T@X等价于X.T.dot(X)
    		return theta
    

正规方程及不可逆性(Normal Equation and Non-invertibility)

  • 原因:

    • 其中两个特征值可以用线性方程进行关联
    • m
  • 解决: 删除多余特征

  • θ = ( X T X ) − 1 X T y \theta=(X^TX)^{-1}X^Ty θ=(XTX)1XTy 推导:正规方程求解特征参数的推导过程

你可能感兴趣的:(机器学习,线性回归,算法)