单变量线性回归即 简单线性回归 ,是一种 回归分析 方法。回归分析 在统计学上用来分析两个或者多个变量之间的相关关系及其程度。比如预测股票,预测产品销量等等。单变量 即使用单一变量预测,线性 即自变量与因变量之间的关系为线性的。回归 即根据之前的数据预测一个准确的输出值。
要想预测就必须有数据,这些数据在机器学习中称为 训练集 ,训练集中的每条完整的数据称为 样本 。预测的目标被称为 标签 或者 目标 , 预测依据的自变量称为 特征 或者 协变量 。比如:
看到这里,突然想起来高中关注的up主,YJango,初听不知言中意,再听已是建模人。我们的学习过程确实和他讲得十分相似。
根据初中的知识,一个n元一次的方程只需要n + 1个点即可确定一条直线,但是未必存在一条直线通过所有这些点,我们需要找出一条直线尽可能的囊括所有的点并可以预测未来数据的出现。这个过程叫做 拟合 。拟合程度的好坏需要 代价(损失)函数 来衡量。
损失函数 是将随机事件或其有关 随机变量的取值 映射为非负实数以表示该随机事件的“风险”或“损失”的函数。在应用中,损失函数通常作为学习准则与优化问题相联系,即通过最小化损失函数求解和评估模型。损失函数 能够量化目标的实际值与预测值之间的差距。通常我们会选择非负数作为损失,且数值越小表示损失越小,完美预测时的损失为 0 。
摘自繁凡
数据集 :( x i , y i ) i = 1 … m
实际值 :y i
估计值 : h θ \theta θ ( x i ) = θ \theta θ0 + θ \theta θ1x i
估计误差 : h θ \theta θ ( x i ) - y i
代价函数定义:
J ( θ 0 , θ 1 ) = 1 2 m ∑ i = 1 m ( h θ ( x i ) − y i ) 2 J (\theta_0, \theta_1) = \frac {1}{2m} \sum_{i=1}^m{(h_\theta(x^i)-y^i)^2} J(θ0,θ1)=2m1i=1∑m(hθ(xi)−yi)2
这里的系数 1 2 m \frac {1}{2m} 2m1是为了后面的计算方便人为定义的。应该方便使用梯度下降算法计算
梯度下降是一个用来求函数最小值的算法,这里用来求 J ( θ 0 , θ 1 ) J(\theta_0, \theta_1) J(θ0,θ1) 的最小值。
Δ θ j = ∂ J ( θ 0 , θ 1 ) ∂ θ j \Delta\theta_j = \frac{\partial J(\theta_0, \theta_1)}{\partial \theta_j} Δθj=∂θj∂J(θ0,θ1)
θ j : = θ j − α Δ θ j \theta_j := \theta_j - \alpha\Delta\theta_j θj:=θj−αΔθj
(这里的:=指的是赋值)
h θ \theta θ ( x i ) = θ \theta θ0 + θ \theta θ1x i
α \alpha α指的是学习率,值大于0来表示让代价函数下降的程度有多大。每次更新时让所有参数减去学习乘以代价函数的导数。比如这里更新 θ 0 \theta_0 θ0和 θ 1 \theta1 θ1: Δ θ 0 = ∂ J ( θ 0 , θ 1 ) ∂ θ 0 = 1 m ∑ i = 1 m ( h θ ( x i ) − y i ) \Delta\theta_0 = \frac{\partial J(\theta_0,\theta_1)}{\partial\theta_0} = \frac {1}{m}\sum_{i = 1}^m{(h_\theta(x^i)-y^i)} Δθ0=∂θ0∂J(θ0,θ1)=m1i=1∑m(hθ(xi)−yi) Δ θ 1 = ∂ J ( θ 0 , θ 1 ) ∂ θ 1 = 1 m ∑ i = 1 m ( h θ ( x i ) − y i ) ∗ x i \Delta\theta_1 = \frac{\partial J(\theta_0,\theta_1)}{\partial\theta_1} = \frac {1}{m}\sum_{i = 1}^m{(h_\theta(x^i)-y^i)}*x^i Δθ1=∂θ1∂J(θ0,θ1)=m1i=1∑m(hθ(xi)−yi)∗xi
比如一个二次函数 y = x 2 y = x ^ 2 y=x2,当 θ j \theta_j θj在函数右侧时,导数大于0,更新往极值点处挪动,同理在左侧时,导数小于0,更新亦往极值点处挪动,即这里的函数最小值。当然极小值点未必是最小值点,这并不是最优的优化方法。
再来看一遍代价函数:
J ( θ 0 , θ 1 ) = 1 2 m ∑ i = 1 m ( h θ ( x i ) − y i ) 2 J (\theta_0, \theta_1) = \frac {1}{2m} \sum_{i=1}^m{(h_\theta(x^i)-y^i)^2} J(θ0,θ1)=2m1i=1∑m(hθ(xi)−yi)2
Δ θ = 1 m X T e \Delta\theta = \frac {1}{m}X^Te Δθ=m1XTe
θ : = θ − α Δ θ \theta := \theta - \alpha\Delta\theta θ:=θ−αΔθ
有时间的话写下推导过程
这里的 X T X^T XT指的是: [ 1 1 . . . 1 x 1 x 2 . . . x n ] \left[ \begin{matrix} 1 & 1 & ...&1 \\ x^1 & x^2 & ... & x^n \end{matrix} \right] [1x11x2......1xn]
这里的e指的是估计误差: [ e 1 e 2 . . . e n ] \left[ \begin{matrix} e^1 \\ e^2 \\ ... \\ e^n \\ \end{matrix} \right] ⎣⎢⎢⎡e1e2...en⎦⎥⎥⎤
比赛时间紧迫,代码实现部分以后有时间学习整理在(下)