机器学习---线性回归

这篇博客介绍了机器学习的基础算法线性回归,通过分析房价预测问题,讲解了线性回归的数学建模,包括模型参数初始化、模型与数据拟合及参数优化。讨论了梯度下降法在优化中的应用,并引入了学习率的概念。最后,对比了梯度下降与正规方程(最小二乘法)两种求解方法。
摘要由CSDN通过智能技术生成

转载请注明出处

引言

本次,介绍第一个机器学习算法线性回归,主要参考Ng老师的机器学习课程,并对其内容进行了梳理、拓展与补充。

问题介绍

房价预测是介绍机器学习基础算法的基本引题,房价预测是指给定房子的一些属性,如房子大小、所处位置、房屋户型等,预测房价。

任务建模

分析任务

分析任务的目的是探究问题本质,清楚问题的定义。如房价预测,指预测出具体的房价数值,该问题归为机器学习的回归问题。

数学建模

使用线性回归Linear Regression算法介绍机器学习建模流程。
H θ = θ 0 + θ 1 x 1 + . . . θ n x n H_\theta=\theta_0+\theta_1x_1+...\theta_nx_n Hθ=θ0+θ1x1+...θnxn
上式 表示线性回归数学表达式,是对输入变量计算的一种方式。其中 θ 表 示 \theta表示 θ参数, x x x表示输入变量, H H H表示预测的结果。

目标: m i n i m i z e θ 0 , θ 1 , , , , θ n J ( θ 0 , θ 1 , , , , θ n ) minimize_{\theta_0,\theta_1,,,,\theta_n}J(\theta_0,\theta_1,,,,\theta_n) minimizeθ0,θ1,,,,θnJ(θ0,θ1,,,,θn)即,最优解问题,最小化代价函数。

这就带来了一个问题:如何得到参数
我们可将该问题分为三个部分:

  1. 初始化模型参数
  2. 拟合模型与真实数据
  3. 优化模型参数
1. 初始化模型参数

这个部分比较容易理解,就是对初始状态参数进行赋值,经常使用的方式为初始化为标准正态分布。

2. 拟合模型与真实数据

这部分内容为核心内容,首先我们需要找到一种方法度量模型与真实数据拟合程度,在机器学习中我们称之为损失函数(Loss Function)。
常用的损失函数包括:

  1. 0-1损失函数 (0-1 Loss Function) L ( Y , f ( X ) ) = 1 L(Y, f(X))=1 L(Y,f(X))=1 if Y = = f ( X ) Y==f(X) Y==f(X) || L ( Y , f ( X ) ) = 0 L(Y, f(X))=0 L(Y,f(X))=0 if Y ! = f ( X ) Y!=f(X) Y!=f(X)
  2. 平方损失函数 (Quadratic Loss Function) L ( Y , f ( X ) ) = ( Y − f ( X ) ) 2 L(Y, f(X))=(Y-f(X))^2 L(Y,f(X))=(Yf(X))2
  3. 绝对值损失函数 (Absolute Loss Function) L ( Y , f ( X ) ) = ∣ Y − f ( X ) ∣ L(Y, f(X))=|Y-f(X)| L(Y,f(X))=Yf(X)
  4. 对数损失函数 (Logarithmic Loss Function) 或对数似然损失函数 (Log-likelihood Loss Function)
    L ( Y , P ( Y ∣ X ) ) = − l o g P ( Y ∣ X ) L(Y, P(Y|X))=-logP(Y|X) L(Y,P(YX))=logP(YX)

损失函数越小,模型对真实数据的拟合程度越好。

损失函数并不是固定的,算法研究者可根据具体问题设计损失函数
一些Paper就是通过对问题的分析,提出新的损失函数,使得模型表现性能更好。

如何在所有数据上计算损失,从而为第三部分参数优化做准备那?
从而引入一个概念,风险损失,表示平均意义上模型预测的表现性能,为损失函数的期望。
风险损失包含两个方面:

  1. 经验风险
  2. 结构风险

在NG的课程中我们最开始听到的就是代价函数Cost Function,在这里代价损失函数就是表示经验风险。我们在后面还是称经验损失,这部分知识属于前期理论补充。
经验风险 模型关于训练集的平均损失,称为经验风险和经验损失。
结构风险 当模型对训练数据拟合的过好,就出现了过拟合情况,需要对经验风险进行惩罚,或者说正则化。后面内容再对其详细地介绍。

3. 优化模型参数

常用的方法有:

  1. 梯度下降 Gradient Descent(将会详细介绍)
  2. 牛顿法和拟牛顿法
  3. 共轭梯度法
  4. 启发式优化方法

扯回正题,房价预测问题上使用的代价函数(经验风险)为
J θ = 1 2 m ∑ i = 1 m ( H θ ( x i ) − Y i ) 2 J_\theta=\frac{1}{2m}\sum^m_{i=1}(H_\theta(x^i)-Y^i)^2 Jθ=2m1i=1m(Hθ(xi)Yi)2,
所使用的损失函数为平方损失。其中 2 m 2m 2m中 “2”是为了使用梯度下降求导时,与平方相抵消便于计算,‘m’ 表示样本的总个数, x i x^i xi表示第 i 个样本的属性(房屋大小、房龄等), y i y^i yi表示房价(标签)。

这里介绍一下 属性和特征? 属性是现实世界中我们对物体的特性的称谓,比如房子的面积,长度,宽度,房子的年龄等。当进行机器学习建模时,我们需要用到属性,这时我们称之为特征。

已知代价函数和初始化参数,如何依据训练数据优化参数那?
梯度下降算法常用于参数最优化,其公式描述为:
Repeat until convergence { θ j : = θ j − α ∂ ∂ θ j J ( θ 0 , θ 1 , , , , , θ n ) \theta_j := \theta_j-\alpha\frac{\partial}{\partial\theta_j}J(\theta_0,\theta_1,,,,,\theta_n) θj:=θjαθjJ(θ0,θ1,,,,,θn)
t e m p 0 : = θ 0 − α ∂ ∂ θ 0 J ( θ 0 , θ 1 , , , , , θ n ) temp0 := \theta_0-\alpha\frac{\partial}{\partial\theta_0}J(\theta_0,\theta_1,,,,,\theta_n) temp0:=θ0αθ0J(θ0,θ1,,,,,θn)
t e m p 1 : = θ 1 − α ∂ ∂ θ 1 J ( θ 0 , θ 1 , , , , , θ n ) temp1 := \theta_1-\alpha\frac{\partial}{\partial\theta_1}J(\theta_0,\theta_1,,,,,\theta_n) temp1:=θ1αθ1J(θ0,θ1,,,,,θn)
. . . . . . . ....... .......
t e m p n : = θ n α ∂ ∂ θ n J ( θ 0 , θ 1 , , , , , θ n ) tempn := \theta_n\alpha\frac{\partial}{\partial\theta_n}J(\theta_0,\theta_1,,,,,\theta_n) tempn:=θnαθnJ(θ0,θ1,,,,,θn)
θ 0 : = t e m p 0 \theta_0:=temp0 θ0:=temp0
θ 1 : = t e m p 1 \theta_1:=temp1 θ1:=temp1
. . . . . . ...... ......
θ n : = t e m p n \theta_n:=tempn θn:=tempn
}

最重要的是: 同步更新

梯度下降就是从一个点开始,往梯度最大的方向移动。要计算当前点的梯度最大方向,如果不同步更新的话,计算的就不是当前点,也就无法保证得到局部最优。

现在我们来介绍一下随机梯度更新的意义:
首先,以单变量线性回归为例 J θ = θ 0 + θ 1 x J_\theta=\theta_0+\theta_1x Jθ=θ0+θ1x,进一步简化计算,令 θ 0 = 0 \theta_0=0 θ0=0,下面给出 J θ J_\theta Jθ随着 θ 1 \theta1 θ1变化而变化的曲线图:
曲线图
可以看到代价函数曲线,其J关于 θ \theta θ的导数表示了曲线上某点的斜率,通过上述的公式,我们可以看出无论当前处于哪个点,都是沿最大梯度方向更新 θ \theta θ的值。
另外给出关于两个变量 θ 0 \theta_0 θ0, θ 1 \theta_1 θ1的3D图:
3D图
图中可以看出,也是存在一个最低点,但是这样来看对于梯度的变化不是很形象,下面给出两个变量变化的等高线图
等高像
从图可以看出,等高线图相当于3D的图从上往下的压缩。matlab可以绘制该图。

注意到梯度下降公式中 α \alpha α参数,该参数称为 “学习率”(learning rate),其表示了每次参数更新的幅度。若 α \alpha α设置地过小,参数更新速度慢,模型收敛速度就慢。若 α \alpha α设置地过大,参数更新幅度过大就会跳过最优点,造成 来回震荡,模型难以收敛。

引入矩阵计算
多元线性回归公式 H θ = θ 0 + θ 1 x 1 + . . . θ n x n H_\theta=\theta_0+\theta_1x_1+...\theta_nx_n Hθ=θ0+θ1x1+...θnxn也可以表示为:
x = [ x 0 , x 1 , , , , x n ] θ = [ θ 0 , θ 1 , , , , , θ n ] H θ = θ T x x=[x_0,x_1,,,,x_n] \\ \theta = [\theta_0,\theta_1,,,,,\theta_n] \\ H_\theta = \theta^Tx x=[x0,x1,,,,xn]θ=[θ0,θ1,,,,,θn]Hθ=θTx
这样就将矩阵引入到了模型中,这样我们可以利用矩阵运算提高计算效率。

有别于梯度下降求解最小值的方法 正规方程(最小二乘法)

首先介绍正规方程与最小二乘法之间的关系:
正规方程(引用百度百科):最小二乘法可以将误差方程转化为有确定解的代数方程(其方程式数目正好等于未知数的个数),从而可求解 出这些未知参数。这个有确定解的代数方程组称为最小二乘法估计的正规方程。
最小二乘法:设给定无解的线性方程组 A X = B AX=B AX=B,这里 A = ( a i j ) s × n , B = ( b 1 , b 2 , , , , b s ) T , X = ( x 1 , x 2 , , , , , x n ) T A=(a_{ij})_{s\times n},B=(b_1,b_2,,,,b_s)^T, X=(x_1,x_2,,,,,x_n)^T A=(aij)s×n,B=(b1,b2,,,,bs)T,X=(x1,x2,,,,,xn)T,因为这方程组无解,设法找出一组数 x 1 0 , x 2 0 , , , , , x n 0 x_1^0,x_2^0,,,,,x_n^0 x10,x20,,,,,xn0,使得平方误差 δ = ∑ i = 1 s ( a i 1 x 1 + a i 2 x 2 + . . . . + a i n x n − b i ) 2 \delta=\sum_{i=1}^s(a_{i1}x_1+a_{i2}x_2+....+a_{in}x_n-b_i)^2 δ=i=1s(ai1x1+ai2x2+....+ainxnbi)2 最小。这组数称为此方程的最小二乘解,这一方法叫做最小二乘法。经过公式推导,得到: A T A X = A T B X = ( A T A ) − 1 A T B A^TAX=A^TB\\ X=(A^TA)^{-1}A^TB ATAX=ATBX=(ATA)1ATB
上述变形过的公式,上述省略的推导是矩阵分析引论给出的方法,数理统计上也有相关的介绍,周志华《西瓜书》上也有相关的介绍。具体可参照我的另一篇博客《机器学习算法—最小二乘法&&正规方程》,其中有详细的推导过程。
θ = ( X T X ) − 1 X T Y \theta=(X^TX)^{-1}X^TY θ=(XTX)1XTY
其中涉及了逆运算,这时候需要评估 X T X X^TX XTX是否可逆,通常情况下都是不可逆,需要使用奇异矩阵或退化矩阵相关的知识。

总结

机器学习本质上属于最优化问题

后续

后续将更新机器学习中另外一个基础算法----逻辑回归(分类算法)

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值