机器学习算法系列(二)-- 线性回归算法

机器学习算法之–线性回归算法

  1. 回归是监督学习的另一个重要问题
    回归用于预测输入变量(自变量)和输出变量(因变量)之间的关系,特别是当输入变量的值发生变化时,输出变量的值随之发生的变化;
  2. 回归模型正是表示从输入变量到输出变量之间映射的函数,回归问题的学习等价于函数拟合:选择一条函数曲线,使其很好的拟合已知数据且很好的预测未知数据
  3. 回归问题分为学习和预测两个过程:
    首先,给定一个训练数据集,根据其构建一个模型;
    对于新的输入,预测系统根据学习的模型确定相应的输出

线性回归是使用线性方程对数据进行拟合的算法

一、算法原理

1.1、一个输入特征(单变量,x:输入,y:输出)

预测函数

h θ ( x ) = θ 0 + θ 1 ∗ x h_\theta(x)=\theta_0+\theta_1*x hθ(x)=θ0+θ1x
关键:选择合适的模型参数 θ 0 , θ 1 \theta_0,\theta_1 θ0,θ1,也就是模型的求解过程。

成本函数

J ( θ ) = J ( θ 0 , θ 1 ) = 1 2 m ∑ i = 1 n ( h ( x i ) − y i ) 2 J(θ)=J(\theta_0, \theta_1)= \frac{1}{2m}\sum_{i=1}^n (h(x^i)-y^i)^2 J(θ)=Jθ0,θ1=2m1i=1n(h(xi)yi)2

梯度下降算法

求解 θ 0 , θ 1 \theta_0,\theta_1 θ0,θ1的值

原理:先随机选取一组 θ 0 , θ 1 \theta_0,\theta_1 θ0,θ1,以及参数α(学习率)作为移动的步幅,计算
斜率 : ∂ J ∂ θ j θ j = θ j − α ∗ ∂ J ∂ θ j 斜率:\frac{\partial J}{\partial\theta_j}\\\theta_j=\theta_j-\alpha*\frac{\partial J}{\partial\theta_j} 斜率:θjJθj=θjαθjJ
就可以让 θ j 往 J ( θ ) 变小的方向迈了一小步 \theta_j往J(\theta)变小的方向迈了一小步 θjJ(θ)变小的方向迈了一小步

注意:若 α \alpha α太小,需要更多次数才能到达最终目的;而太大可能会导致直接跨过,导致无法收敛

故不难推导出梯度下降算法公式:
{ θ 0 = θ 0 − α m ∑ i = 1 m ( h ( x i ) − y i ) θ 1 = θ 1 − α m ∑ i = 1 m ( ( h ( x i ) − y i ) x i ) \begin{cases} \theta_0= \theta_0-\frac{\alpha}{m}\sum_{i=1}^m (h(x^i)-y^i)\\ \\ \theta_1= \theta_1-\frac{\alpha}{m}\sum_{i=1}^m ((h(x^i)-y^i)x^i)\\ \end{cases} θ0=θ0mαi=1m(h(xi)yi)θ1=θ1mαi=1m((h(xi)yi)xi)
其中:
α是学习率
m是训练样本个数
h ( x ( i ) ) − y ( i ) h(x^{(i)})-y(i) h(x(i))y(i)是模型预测值和真实值之间的误差

需要注意的是:
针对 θ 0 和 θ 1 \theta_0和\theta_1 θ0θ1分别求出了其迭代公式,在 θ 1 \theta_1 θ1的迭代公式里,累加器中还需要乘以 x i x_i xi

1.2、多变量线性回归(不止一个输入特征)

预测函数

h θ ( x ) = θ 0 + θ 1 ∗ x 1 + θ 2 ∗ x 2 + . . . . . . + + θ n ∗ x n = ∑ j = 0 n ( θ j ∗ x j ) h_\theta(x)=\theta_0+\theta_1*x_1+\theta_2*x_2+......++\theta_n*x_n =\sum_{j=0}^n (\theta_j*x_j) hθ(x)=θ0+θ1x1+θ2x2+......++θnxn=j=0n(θjxj)注:此处假设 x 0 = 1 x_0=1 x0=1成为模型偏置(bias)
理论上,预测函数有无穷多个,我们求解的目标就是找出一个最优的θ值。

还可将其重写为向量形式,以简化表达:
h ( x ) = [ θ 0 , . . . θ n ] [ x 0 . . . x n ] = θ T x h(x)=\begin{bmatrix} \theta_0,...\theta_n\end{bmatrix} \begin{bmatrix} x_0\\...\\x_n\end{bmatrix}=\theta^Tx h(x)=[θ0,...θn] x0...xn =θTx

h 0 ( X ) = X ⋅ θ h_0(X)=X·\theta h0(X)=Xθ,其中向量形式预测样本:
X = [ x 0 ( 1 ) x 1 ( 1 ) . . . x n ( 1 ) . . . . . . . . . . . . x 0 ( m ) x 1 ( m ) . . . x n ( m ) ] X=\begin{bmatrix} x_0^{(1)}&x_1^{(1)}&...&x_n^{(1)} \\ ...&...&...&... \\ x_0^{(m)}&x_1^{(m)}&...&x_n^{(m)} \end{bmatrix} X= x0(1)...x0(m)x1(1)...x1(m).........xn(1)...xn(m) 表示m个样本,n个特征

成本函数

J ( θ ) = 1 2 m ∑ i = 1 n ( h ( x i ) − y i ) 2 J(θ)= \frac{1}{2m}\sum_{i=1}^n (h(x^i)-y^i)^2 J(θ)=2m1i=1n(h(xi)yi)2
其中,模型参数 θ ⃗ \vec{\theta} θ 为n+1维的向量, h ( x i ) − y i h(x^i)-y^i h(xi)yi是预测值与实际值的差,可看到该形式与单变量线性回归算法类似。

矩阵形式表达为
J ( θ ) = 1 2 m ( X θ − y ⃗ ) T ( X θ − y ⃗ ) J(θ)= \frac{1}{2m}(X\theta-\vec{y})^T(X\theta-\vec{y}) J(θ)=2m1(y )T(y )
其中X表示m(n+1)矩阵大小的训练样本; y ⃗ \vec{y} y 表示训练样本输出 y i y^i yi构成的向量
该公式的优势是:没有累加器,不需要循环,直接使用矩阵运算,就可以一次性计算出针对特定的参数θ下模型的拟合成本。

梯度下降算法

θ j − α m ∑ i = 1 n ( ( h ( x i ) − y i ) x j ( i ) \theta_j- \frac{\alpha}{m}\sum_{i=1}^n ((h(x^i)-y^i)x_j^{(i)} θjmαi=1n((h(xi)yi)xj(i)
下标j是参数的序号(0~n),α为学习率。

伪代码
  • 确定学习率α:太大会导致成本函数无法收敛,太小计算太多,效率变低
  • 定参数起始位置:比如选取比较靠近极点的位置
  • 计算下一组值:迭代计算公式,根据新的预测函数,带入成本函数就可以算出新的成本。
  • 确认成本函数是否收敛:拿新的成本和旧的成本进行比较,看成本是不是变得越来越小。如果两次成本之间的差异小于误差范围,就说明已经非常接近最小成本了,就可以近似地认为找到了最小成本。
  • 若在误差之外,则重复计算下一组值,直到找到最优解为止

二、模型优化(增加多项式特征)

回归模型太简单时可能会导致欠拟合

  • 可增加特征多项式(例如加入x1*x2,x1平方…)
  • 数据归一化:该过程成为特征缩放,为了让算法收敛得更快;
    归一化所得预测值再乘以归一化系数,便能得到真实值

以上就是关于线性回归的分享,若有不妥之处,欢迎各路大佬不吝赐教~

喜欢的伙伴记得点个赞关注一下吧~

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

反卷三明治

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值