zoukankan      html  css  js  c++  java
  • 机器学习入门(二)之----线性回归

    2019年9月22日18:22:52-2019年9月22日18:59:51

    对于给定居住面积和卧室数量预测房价的问题。我们可以建立一个线性回归模型。假设具有如下形式,

    [h(x)=sum_{i=0}^{n} heta_{i} x_{i}= heta^{T} x ]

    其中( heta_{i}) 叫做参数(parameters),也叫权重(weights)。(x_{0}=1)截距项(intercept)。
    注意,这里的记法是上标表示一个样例下标表示样例的某一个分量,(n)变量个数。
    对于训练集中的数据,我们希望假设在输入上的预测值与输出偏差的平方和最小,所以有如下损失函数(ecost function)来衡量某个假设在训练集上的表现,

    [egin{equation} J( heta)=frac{1}{2} sum_{i=1}^{m}left(h_{ heta}left(x^{(i)} ight)-y^{(i)} ight)^{2} end{equation} ]

    最小均方算法(least mean square)

    我们用梯度下降法(gradient descent)来最小化这个损失,定义了损失函数(J( heta)) 之后,函数梯度下降法给以下面的规则同时更新各个参数,

    [egin{equation} heta_{j} := heta_{j}-alpha frac{partial}{partial heta_{j}} J( heta) end{equation} ]

    现在我们来具体求出在线性回归问题上的更新公式,先假设有一个样例$left(x^{}, y^{} ight) $ ,

    [egin{aligned} frac{partial}{partial heta_{j}} J( heta) &=frac{partial}{partial heta_{j}} frac{1}{2}left(h_{ heta}(x)-y ight)^{2} \ &=2 cdot frac{1}{2}left(h_{ heta}(x)-y ight) cdot frac{partial}{partial heta_{j}}left(h_{ heta}(x)-y ight) \ &=left(h_{ heta}(x)-y ight) cdot frac{partial}{partial heta_{j}}left(sum_{i=0}^{n} heta_{i} x_{i}-y ight) \ &=left(h_{ heta}(x)-y ight) x_{j} end{aligned} ]

    因此对一个样本有更新规则(对(n) 个变量同时进行,(j=1,2,ldots,n) ),

    [ heta_{j} := heta_{j}+alphaleft(y^{(i)}-h_{ heta}left(x^{(i)} ight) ight) x_{j}^{(i)} ]

    上面的更新规则又叫做最小均方误差更新规则(least mean square),或者 Widrow-Hoff学习规则,来一个样本更新一次,又叫随机梯度下降或增量梯度下降(stochastic gradient descent)。随机梯度下降法,震荡比较猛一点,不过一般情况下也还好。当数据集很大时,这种方法比后面的方法更讨喜。

    对于全体样例,有类似的更新规则,

    [egin{equation} heta_{j} := heta_{j}+alpha sum_{i=1}^{m}left(y^{(i)}-h_{ heta}left(x^{(i)} ight) ight) x_{j}^{(i)} end{equation} ]

    这个方法在每一步会用到所有的训练样本,所以又叫做批梯度下降(batch gradient descent)。
    梯度下降法可能收敛到局部最小值,但对于线性回归问题的损失函数,一个凸二次函数,只有一个全局最小值,一定收敛到全局最小值。

  • 相关阅读:
    flink 读取kafka 数据,partition分配
    Flink 报错 "Could not find a suitable table factory for 'org.apache.flink.table.factories.StreamTableSourceFactory' in the classpath"
    flume接收http请求,并将数据写到kafka
    【翻译】Flume 1.8.0 User Guide(用户指南) Processors
    【翻译】Flume 1.8.0 User Guide(用户指南) Channel
    【翻译】Flume 1.8.0 User Guide(用户指南) Sink
    【翻译】Flume 1.8.0 User Guide(用户指南) source
    【翻译】Flume 1.8.0 User Guide(用户指南)
    Apache Flink 简单安装
    Java之使用IDE
  • 原文地址:https://www.cnblogs.com/qizhien/p/11568697.html
Copyright © 2011-2022 走看看