zoukankan      html  css  js  c++  java
  • 机器学习1 线性回归

    线性回归可能是机器学习中最简单最常用的算法。说它简单是因为对于线性系统有着最完备、直观的理论和解释,说它常用是因为现实生活中出现的大量问题都可以用线性回归或者它的变体加以解决。

     

    特征空间


     一个特征空间的点是由多个特征属性组成的,比如定义一个三维空间的点需要三个维度的坐标,而定义一个人需要他的姓名、年龄、籍贯等等。假如特征空间的维度是$n$,那么这个样本空间的样本在数学上则可以表示成一个$n$维的列向量$vec{x} = (x_1; x_2; ...; x_n)$。

    当定义了样本空间后,就可能会有跟这个样本空间里的点有映射关系的函数出现,比如,三维空间的一个有质量的物体,当给定了它空间中的三维坐标,就可以计算出它的重力势能,那么重力势能和三维坐标就发生了函数关系:

    $$G = f(x_1, x_2, x_3)$$

    当然有的时候$G$不一定是一个标量,它也有可能是一个矢量,例如我们计算地球和太阳之间的万有引力时,当选定了合适的坐标系后,它们之间的吸引力可以用地球的三维坐标和质量通过万有引力定律计算获得,而引力显然是一个有方向的矢量,它需要在这个坐标系中用矢量的方式表示:

    $$vec{G} = f(x_1, x_2, x_3)$$

    而这些函数关系是有区别的,比如在第一个重力势能的函数关系中,实际上重力势能只和物体的高度正相关,而在引力的例子中,引力则与距离的平方的倒数成正比。

     线性模型


     线性模型就是映射关系是通过特征的线性组合来表示的,也就是:

    $$f(vec{x}) = w_1x_1 + w_2x_2 + ... + w_nx_n + b$$

    用向量的写法就是:

    $$f(vec{x}) = vec{w}^mathrm{T}vec{x} + b$$

    其中$vec{w} = (w_1; w_2; ...; w_n)$为$n$维的列向量常数,当$vec{w}$和$b$的值能够确定,那么这个映射关系也就能够确定。

    前面也说过,左边的$f$本身也可能是一个多维的向量,假设$f$是一个$m$维的向量,那么这个映射关系可以写成向量值映射的形式:

    $$vec{f}(vec{x}) = [W]vec{x} + vec{b}$$

    其中:

    $$[w] =left [ egin{matrix} w_{11} & w_{12}  & ... & w_{1n} \w_{21} & w_{22} & ... & w_{2n} \&......&\ w_{m1} & w_{m2} & ... & w_{mn}end{matrix} ight ] $$

    如果$[w]$是$m imes n$的常系数矩阵,$vec{b}$是$m$维的列向量常数,那么这个模型就是线性模型。

    线性模型虽然很简单,但是它有很多变化,比如与自变量线性相关的并不是$y$,而是$Log(y)$,如:

    $$Log(y) = vec{w}^mathrm{T}vec{x} + b$$

    又或者,将$x$的高次方看作是与一次项$x$相独立的项,那么下式也可以看做是$y$相对于基$(x^1, x^2, x^3,...,x^n)$的线性模型:

    $$y = a_1x^1 + a_2x^2 + a_3x^3 + ... + a_n x^n +b $$

    这些都可以称为“广义线性模型”。识别和合理使用这些模式的存在,可以极大拓宽线性模型的使用范围。

    线性回归


    如果自变量$vec{x}$和因变量$vec{f}$的之间的函数形式是上述线性模型的表征:

    $$vec{f}(vec{x}) = [W]vec{x} + vec{b}$$

    但是$[w]$和$vec{b}$的具体值不知道,而试图根据多个采样样本,计算出$[w]$和$vec{b}$,这个过程称之为线性回归。当$x$的维度大于1时,又常称为多元线性回归。

    这里说“计算”是指“在某种度量标准下计算”,而这里刚开始,我们暂时含糊的说成“计算出$[w]$和$vec{b}$要尽可能准确的拟合自变量$vec{x}$和因变量$vec{f}$的关系”。

    假设有$d$个样本数,则表示给定数据集$D = {(vec{x}_1, vec{y}_1), (vec{x}_2, vec{y}_2), ..., (vec{x}_d, vec{y}_d)}$。那么所谓的“计算出$[w]$和$vec{b}$要尽可能准确的拟合自变量$vec{x}$和因变量$vec{f}$的关系”最简单直观的选择就是让样本数据$vec{x}_i$代入公式中预测出来值$f(vec{x}_i)$和样本值$vec{y}_i$之间的差值尽可能小。因为有$d$个样本,那么总体上来讲其实在这$d$个样本上的均方误差达到最小:

    $$(w^*, b^*) = mathop{argmin}_{(w,b)} sum_{i=1}^d (f(x_i) -y_i)^2 $$

    均方误差有非常好的几何意义:它表示点与点之间的欧几里得距离。在这里,就是回归得到的预测点$f(x_i)$与实际的点$y_i$之间的欧氏距离的和。那么这里的任务就是找到合适的$w$和$b$,使得这个距离和最小。而求解$w$和$b$的过程,则称为线性回归模型的参数估计。线性回归模型通常采用最小二乘法进行求解$w$和$b$的值,具体做法是从上式中对$w$和$b$进行求导:

    $$cfrac{partial E_{(w,b)}}{partial w} = 2left(wsum_{(i=1)}^dx_i^2 - sum_{(i=1)}^d(y_i-b)x_i ight)$$

    $$cfrac{partial E_{(w,b)}}{partial b} = 2left(mb - sum_{(i=1)}^d(y_i-wx_i) ight)$$

    我们知道,另上述两式为$0$就可以求得均方误差的最大值(严格来说,是均方误差的唯一的极大值,就是最大值),而这个时候就可以求出$w$和$b$的值:

    $$ w=cfrac{sum_{i=1}^{d}y_i(x_i-ar{x})}{sum_{i=1}^{d}x_i^2-cfrac{1}{d}(sum_{i=1}^{d}x_i)^2} $$

    $$b=cfrac{1}{d}sum_{i=1}^{d}(y_i-wx_i) $$

  • 相关阅读:
    微信公众平台开发(53)砸金蛋
    微信公众平台高级功能
    微信5.0安卓内测版下载
    微信公众平台2013.08.05更新说明
    淘宝微信互相屏蔽影响了谁
    WAP网页输入框的默认键盘类型控制
    如何通过微信创业赚钱
    腾讯风铃
    腾讯推出微信企业服务平台风铃
    一键生成HTML4和WAP站
  • 原文地址:https://www.cnblogs.com/dittoyi/p/11006747.html
Copyright © 2011-2022 走看看