zoukankan      html  css  js  c++  java
  • 机器学习——回归

    机器学习——回归

    机器学习是一门多领域交叉学科,涉及概率论、统计学、逼近论、凸分析、算法复杂度理论等多门学科。专门研究计算机怎样模拟或实现人类的学习行为,以获取新的知识或技能,重新组织已有的知识结构使之不断改善自身的性能。

    一、线性回归

    1.1 拟合函数

    [h_ heta (x)= heta ^T x ]

    1.2 代价函数

    [Cost(h_ heta (x),y)= heta ^T x-y ]

    那么,

    [J( heta)=frac{1}{m}sum limits_{i=1}^{m} (h_ heta ( x^{(i)} )-y^{(i)})^2 ]

    1.3 梯度下降法

    want (min limits_ heta J( heta)):
    Repeat{
    $$ heta_j:= heta_j-alpha frac{partial}{partial heta_j}J( heta)$$
    }
    其中,(frac{partial}{partial heta_j}J( heta)=frac{1}{m} sum limits_{i=1}^{m}(h_ heta ( x^{(i)})-y^{(i)})x^{(i)})

    1.4 正规方程组

    通过求伪逆的方法求得最优解。

    [ heta=(X^T X)^{-1}X^T Y ]

    二、Logistic回归

    2.1 拟合函数

    [h_ heta (x)=g( heta ^T x )=frac{1}{1+e^{- heta ^T x}} ]

    2.2 代价函数

    [Cost(h_ heta (x),y)=-y log(h_ heta (x))-(1-y)log(1-h_ heta (x)) ]

    其中,(y=0,1)
    那么,

    [J( heta)=frac{1}{m}sum limits_{i=1}^{m} Cost(h_ heta ( x^{(i)} ),y^{(i)}) ]

    2.3 梯度下降法

    want (min limits_ heta J( heta)):
    Repeat{
    $$ heta_j:= heta_j-alpha frac{partial}{partial heta_j}J( heta)$$
    }
    其中,(frac{partial}{partial heta_j}J( heta)=frac{1}{m} sum limits_{i=1}^{m}(h_ heta ( x^{(i)})-y^{(i)})x_j^{(i)})

    2.4 多元分类

    简单说,多元分类就是将问题看成多个二元分类问题,通过区别第i类和其他类的函数(h_ heta^{(i)}(x))来实现。

    三、欠拟合、适当拟合、过拟合

    以下面两幅图为例,从左到右分别为欠拟合、适当拟合、过拟合。所谓过拟合,就是利用训练集太充分,使得不再适应新的测试点。而欠拟合恰恰相反,是利用训练集不充分,导致不能很好地适应新的测试点。

    3.1 怎么解决过拟合问题

    训练数据比较少时,为了充分利用数据,会将模型设为很复杂的多项式。结果造成过拟合。解决方案如下:

    1. 减少特征的数量
      1.1 人工选择保留哪些特征
      1.2 利用特征选择函数
    2. 正则化
      2.1 保留所有特征,但是减小参数( heta_j)的幅度
      2.2 当有很多特征时,效果很好,因为每个对结果都有贡献

    3.2正则化方法

    (J( heta))后加入( heta)的多项式,使得每个多项式的作用减弱。

    正则化线性回归

    [J( heta)=frac{1}{2m}[sum limits_{i=1}^{m}(h_ heta(x^{(i)}-y^(i))^2+lambda sum limits_{j=1}^{n} heta_j^2)] ]

    其中,(lambda)称为正则化因子。
    注意:此处不能添加( heta_0)。如果添加,会使得所有( heta_j)同时变化,从而起不到约束幅度的目的。
    梯度下降法
    Repeat{

    [ heta_0:= heta_0-alpha frac{1}{m} sum limits_{i=1}^{m}(h_ heta ( x^{(i)})-y^{(i)})x_0^{(i)} ]

    [ heta_j:= heta_j-alpha [ frac{1}{m} sum limits_{i=1}^{m}(h_ heta ( x^{(i)})-y^{(i)})x_j^{(i)}+{ lambda over m} heta_j ],j=1,2,ldots,n ]

    }
    其中,$$ heta_j:= heta_j(1-alpha {lambda over m})-alphafrac{1}{m} sum limits_{i=1}^{m}(h_ heta ( x{(i)})-y{(i)})x_j^{(i)},j=1,2,ldots,n $$

    可以发现,(1-alpha {lambda over m} <1)

    正规方程法

    [ heta { m{ = }}{left( {{{ m{X}}^T}X + lambda left[ {matrix{ 0 & {} & {} & {} cr {} & 1 & {} & {} cr {} & {} & ddots & {} cr {} & {} & {} & 1 cr } } ight]} ight)^{ - 1}}{X^T}y,lambda > 0 ]

    正则化Logistic回归

    [J( heta)=frac{1}{2m}[sum limits_{i=1}^{m}(-y^{(i)} log(h_ heta (x^{(i)}))-(1-y^{(i)})log(1-h_ heta (x^{(i)}))+lambda sum limits_{j=1}^{n} heta_j^2)] ]

    梯度下降法
    Repeat{

    [ heta_0:= heta_0-alpha frac{1}{m} sum limits_{i=1}^{m}(h_ heta ( x^{(i)})-y^{(i)})x_0^{(i)} ]

    [ heta_j:= heta_j-alpha [ frac{1}{m} sum limits_{i=1}^{m}(h_ heta ( x^{(i)})-y^{(i)})x_j^{(i)}+{ lambda over m} heta_j ],,j=1,2,ldots,n ]

    }

  • 相关阅读:
    转 Python学习(九)
    转 Python学习(八)
    转 Python学习(七)
    转 Python学习(六)
    转 Python学习(五)
    转 Python学习(四)
    转Python学习(三)
    转Python学习(一)
    面向对象第三章(向上造型、重写、重载)
    面向对象第一章(成员变量、局部变量、重载)
  • 原文地址:https://www.cnblogs.com/connorzx/p/4669654.html
Copyright © 2011-2022 走看看