机器学习之回归

Posted 长路漫漫,道阻且长

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了机器学习之回归相关的知识,希望对你有一定的参考价值。

近期阅读了《白话机器学习的数学》,为了将所读的内容充分理解消化,故将整理一系列文章,该篇是上一篇文章的续篇。

1.设置问题

基于广告费预测网站的点击量

2. 定义模型

  1. 假设点击量只与广告费这一个变量有关,现有一些数据(广告费与对应点击量的值),在坐标系中表示为下图

    为了找出广告费与点击量之间的关系,可借助数学表达式即定义模型。为了方便,由上图建立广告费(x)与点击量(y)之间的函数关系为 f θ ( x ) = θ 0 + θ 1 x f_{\\theta}(x)=\\theta_{0}+\\theta_{1}x fθ(x)=θ0+θ1x即一次函数,这里的 f θ f_\\theta fθ 是指含有参数(变量)的函数,采用 θ 0 \\theta_0 θ0 θ 1 \\theta_1 θ1 代表变量,在机器学习中称为参数。一次函数的模型如下图:


机器学习中,变量或者预测值统称为参数。

3.如何求参

根据定义的模型求得的值与真实值存在一定的偏差,我们的目标就是使定义的模型求得的值尽可能贴近真实的值,也就是使模型的值与真实值的差值越来越小。
即为了求参,定义目标函数,然后微分求出参数的更新表达式。—这种算法也称为逻辑回归

3.1 最小二乘法

最小二乘法就是目标函数为 E ( θ ) = 1 2 ∑ i = 1 n ( y ( i ) − f θ ( x ( i ) ) ) 2 E(\\theta)=\\frac{1}{2}\\sum_{i=1}^{n}(y^{(i)}-f_{\\theta}(x^{(i)}))^{2} E(θ)=21i=1n(y(i)fθ(x(i)))2 ,通过不断修改参数的值,使得误差越来越小,。

Q1:误差怎么表示?
A1:按照设定的模型,由已知数据来求 θ 0 \\theta_0 θ0 θ 1 \\theta_1 θ1 。由于 f θ ( x ) f_{\\theta}(x) fθ(x) 求得的值与实际值是有误差的,我们的目标就是将模型求得的值接近真实值,即使所有数据的误差和降到最小。误差表示为: E ( θ ) = 1 2 ∑ i = 1 n ( y ( i ) − f θ ( x ( i ) ) ) 2 E(\\theta)=\\frac{1}{2}\\sum_{i=1}^{n}(y^{(i)}-f_{\\theta}(x^{(i)}))^{2} E(θ)=21i=1n(y(i)fθ(x(i)))2 E ( θ ) E(\\theta) E(θ)也称为目标函数,令其最小。其中 y ( i ) 和 f θ ( x ( i ) ) y^{(i)} 和 f_{\\theta}(x^{(i)}) y(i)fθ(x(i))不是指y和f的i次幂,而是指第i个数据对应的实际的值和模型计算的值。

Q2:为什么 E ( θ ) E(\\theta) E(θ)是两者之差的平方而不是绝对值
A2:平方方便求微分(求导),而绝对值可能还需要对某些值的大小进行讨论

Q3:为什么需要乘 1 2 \\frac{1}{2} 21
A3:结果导向,为了使最后的结果更加简单

为了求 E ( θ ) E(\\theta) E(θ)的最小值,对 E ( θ ) E(\\theta) E(θ)函数微分,以微分后的结果判断下一步 θ 0 \\theta_0 θ0 θ 1 \\theta_1 θ1要调整的值,这里 x ( i ) x^{(i)} x(i) y ( i ) y^{(i)} y(i)为数据,值是已知的。

Q4:由微分结果如何调整参数的值?
A4:找到导数等于0的位置

最速下降法/梯度下降法

简单理解就是根据微分后的结果调整参数。
结合这个模型, E ( θ ) E(\\theta) E(θ)含有两个参数 θ 0 \\theta_0 θ0 θ 1 \\theta_1 θ1,这里就用到偏微分(偏微分是对含有多个变量的表达式微分的方法,当对某一个变量微分时,其他的变量视为常量)。
若直接使用 E ( θ ) E(\\theta) E(θ) θ 0 \\theta_0 θ0 θ 1 \\theta_1 θ1偏微分,需要将 E ( θ ) E(\\theta) E(θ)的表达式展开,很复杂,这里使用复合函数求偏微分。以下为具体过程:
令   u = E ( θ ) ,   v = f θ ( x ) ϑ u ϑ θ = ϑ u ϑ v ⋅ ϑ v ϑ θ 令\\ u=E(\\theta),\\ v=f_\\theta(x) \\qquad \\frac{\\vartheta u}{\\vartheta \\theta}=\\frac{\\vartheta u}{\\vartheta v}·\\frac{\\vartheta v}{\\vartheta \\theta}  u=E(θ), v=fθ(x)ϑθϑu=ϑvϑuϑθϑv

因此

θ 0 \\theta_0 θ0的更新表达式为 θ 0 : = θ 0 − η ∑ i = 1 n ( f θ ( x ( i ) ) − y ( i ) ) \\theta_0 :=\\theta_0-\\eta\\sum_{i=1}^{n}(f_\\theta(x^{(i)})-y^{(i)}) θ0:=θ0ηi=1n(fθ(x(i))y(i))
同理可求得 θ 1 \\theta_1 θ1的更新表达式为 θ 1 : = θ 1 − η ∑ i = 1 n ( f θ ( x ( i ) ) − y ( i ) ) x ( i ) \\theta_1:=\\theta_1-\\eta\\sum_{i=1}^{n}(f_\\theta(x^{(i)})-y^{(i)})x^{(i)} θ1:=θ1ηi=1n(fθ(x(i))y(i))x以上是关于机器学习之回归的主要内容,如果未能解决你的问题,请参考以下文章

python机器学习之线性回归

sklearn机器学习之线性回归模型

python学习之机器学习

机器学习之逻辑回归

机器学习之监督学习-分类模型逻辑斯蒂回归

JavaScript机器学习之线性回归