0
点赞
收藏
分享

微信扫一扫

线性回归及logistic回归详解

机器学习

线性回归

线性回归是机器学习中比较基本的一个算法。其基本思想大致可以理解为给定一个数据集,通过线性回归得到一条曲线,尽可能地去拟合这个数据集。如下图所示:
红色点集表示数据集,蓝色直线为拟合结果那么,如何得到这样一条拟合曲线呢?一个自然而然的想法是建立一个输入 x x x到输出 y ^ \hat{y} y^的拟合函数,使得这个函数的输出 y ^ \hat{y} y^能够尽可能地接近真实值 y y y
通常,这个拟合函数可以被定义为:
h θ ( x ) = θ 0 + θ 1 x 1 + θ 2 x 2 + ⋯ + θ n x n = θ T x h_{\theta}\left(x\right)=\theta_0+\theta_1x_1+\theta_2x_2+\dots+\theta_nx_n=\boldsymbol{\theta}^T\boldsymbol{x} hθ(x)=θ0+θ1x1+θ2x2++θnxn=θTx
其中, θ = [ θ 0 , θ 1 , … , θ n ] T \boldsymbol{\theta}=\left[\theta_0,\theta_1,\dots,\theta_n\right]^T θ=[θ0,θ1,,θn]T,表示参数的集合(线性回归的目的就是找到一组合适的参数,去拟合给定的数据集), x = [ x 0 , x 1 , … , x n ] T \boldsymbol{x}=\left[x_0,x_1,\dots,x_n\right]^T x=[x0,x1,,xn]T表示数据的特征,并且通常 x 0 = 1 x_0=1 x0=1。例如,预测房价随房子面积变化的趋势,房子的面积,楼层,房间数等都可作为数据的特征,分别用 x 1 , x 2 , x 3 , … x_1,x_2,x_3,\dots x1x2x3表示。
因此,我们的任务就是去寻找这一组合适的 θ \boldsymbol{\theta} θ去构建上述拟合函数。这样我们就可以引入机器学习中另外一个常见的名词:代价函数。其主要作用就是衡量拟合函数的输出 y ^ \hat{y} y^和真实值 y y y之间的偏差(值越小,说明越接近真实值)。在线性回归中,代价函数的定义为:
J ( θ ) = 1 m ∑ i = 1 m ( h θ ( x ( i ) ) − y ( i ) ) 2 J\left(\boldsymbol{\theta}\right)=\frac{1}{m}\sum_{i=1}^m\left(h_\boldsymbol{\theta}\left(x^{\left(i\right)}\right)-y^{\left(i\right)}\right)^2 J(θ)=m1i=1m(hθ(x(i))y(i))2
其中, m m m表示训练集的数量, x ( i ) x^{\left(i\right)} x(i)的上标仅仅表示第 i i i个训练数据。为了找到 θ \boldsymbol{\theta} θ,目标就转换为了 m i n θ J ( θ ) \mathop{min}\limits_{\theta}J\left(\theta\right) θminJ(θ)
下一步就是如何求 m i n θ J ( θ ) \mathop{min}\limits_{\theta}J\left(\boldsymbol{\theta}\right) θminJ(θ)。我们最熟悉的做法就是梯度下降了,具体做法为:
r e p e a t   u n t i l   c o n v e r g e n c e   θ j ≔ θ j − α ∂ ∂ θ j J ( θ ) repeat\ until\ convergence\ \theta_j\coloneqq\theta_j-\alpha\frac{\partial}{\partial\theta_j}J\left(\boldsymbol{\theta}\right) repeat until convergence θj:=θjαθjJ(θ)
针对每一个具体的 θ j \theta_j θj,其具体的更新公式为:
θ 0 ≔ θ 0 − α 1 m ∑ i = 1 m ( h θ ( x ( i ) ) − y ( i ) ) ⋅ x 0 ( i ) θ 1 ≔ θ 1 − α 1 m ∑ i = 1 m ( h θ ( x ( i ) ) − y ( i ) ) ⋅ x 1 ( i ) θ 2 ≔ θ 2 − α 1 m ∑ i = 1 m ( h θ ( x ( i ) ) − y ( i ) ) ⋅ x 2 ( i ) … θ n ≔ θ n − α 1 m ∑ i = 1 m ( h θ ( x ( i ) ) − y ( i ) ) ⋅ x n ( i ) \theta_0\coloneqq\theta_0-\alpha\frac{1}{m}\sum_{i=1}^m\left(h_\theta\left(x^{\left(i\right)}\right)-y^{\left(i\right)}\right)\cdot x_0^{\left(i\right)}\\ \theta_1\coloneqq\theta_1-\alpha\frac{1}{m}\sum_{i=1}^m\left(h_\theta\left(x^{\left(i\right)}\right)-y^{\left(i\right)}\right)\cdot x_1^{\left(i\right)}\\ \theta_2\coloneqq\theta_2-\alpha\frac{1}{m}\sum_{i=1}^m\left(h_\theta\left(x^{\left(i\right)}\right)-y^{\left(i\right)}\right)\cdot x_2^{\left(i\right)}\\\dots\\ \theta_n\coloneqq\theta_n-\alpha\frac{1}{m}\sum_{i=1}^m\left(h_\theta\left(x^{\left(i\right)}\right)-y^{\left(i\right)}\right)\cdot x_n^{\left(i\right)} θ0:=θ0αm1i=1m(hθ(x(i))y(i))x0(i)θ1:=θ1αm1i=1m(hθ(x(i))y(i))x1(i)θ2:=θ2αm1i=1m(hθ(x(i))y(i))x2(i)θn:=θnαm1i=1m(hθ(x(i))y(i))xn(i)
重复上述过程,直到算法收敛。最终,我们就得到了一组合适的参数 θ ∗ = [ θ 0 ∗ , θ 1 ∗ , … , θ n ∗ ] T \boldsymbol{\theta^*}=\left[\theta_0^*,\theta_1^*,\dots,\theta_n^*\right]^T θ=[θ0,θ1,,θn]T
以上就是线性回归的全部流程,下面介绍logistic回归(也叫逻辑回归)。

logistic回归

logistic回归主要用于分类问题,其原理和线性回归大致相同。具体介绍如下:

举报

相关推荐

0 条评论