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

    一 线性回归原理

    如何实现线性回归?

    主要的思想:熟悉目标函数,计算它们的梯度和优化目标参数集。

    这些基础工具是后续复杂算法的基础。更多的关于线性回归的细节参考[Lecture Note],

     

    线性回归的目标: 从输入向量值 $xinRe^{n}$ 预测目标值$y$。

     

    例如,我们预测一座房子的价格,其中$y$表示房子的价格,$x$中的元素$x_{j}$表示描述房子的特征(像房子的大小和卧室的数目),

    假设我们具有很多的房子的数据特征,其中第$i$个房子的特征用$x^{(i)}$表示,对应的价格用$y^{(i)}$表示。

    对于这些数据,我们的目标是找到函数$y = h(x)$, 对于各个训练函数使$y^{(i)} approx h(x^{(i)})$。

    若我们成功找到这样的函数$h(x)$。且我们有足够的房子和对应的价格例子(即训练集),我们希望$h(x)$是一个非常好的预测器,对新的未知价格的房子(即测试集)进行价格预测。

    为了找到函数使$y^{(i)} approx h(x^{(i)})$, 首先需要决定如何表示函数$h(x)$,

    开始我们使用线性函数:$h_{ heta}(x) = sum_{substack{j}} heta_{j}x_{j} = heta^{ op}x$,其中,$h_{ heta}x$表示选择不同的参数$ heta$的函数簇,我们的任务找到最优的$ heta$使$h_{ heta}(x^{(i)})$尽可能的与$y^{(i)}$相近。

    即,找寻参数$ heta$使如下公式最小化

    $J( heta) = frac{1}{2} sum_{i}^{}(h_{ heta}(x^{(i)}) - y^{(i)}) ^2 = frac{1}{2} sum_{i}( heta^{ op}x^{(i)} - y^{(i)})^2$

    该函数即为我们问题的“损失函数(cost function)”,用于度量对于特定的$ heta$下预测的$y^{(i)}$引入的错误。也称之为“loss function”, “penalty"或”objective function“。

    二 函数最小化

    现在我们所要做的是找到参数$ heta$,使上述的$J( heta)$最小化。 有很多算法用于最小化该函数,以下我们一种非常有效,也非常容易实现的算法——梯度下降算法(Gradient Descent)。

    对于通常使用用于最小化该函数的算法,需要提供两部分关于$J{( heta)}$的信息:我们需要编写代码计算

    $J{( heta)}$和 $ igtriangledown_{ heta}J( heta) $ 。

    接下来的优化过程就是通过最优化算法的处理找到最优的$ heta$ 。

    对于上面的表达式$J( heta)$,给定训练集$x^{(i)}$和$y^{(i)}$, 可以使用MATLAB非常容易的实现计算$J( heta)$,剩下的要求是计算梯度

    其中对于损失函数$J( heta)$对于特定的参数$ heta_{j}$的微分为:

    三 实现(MATLAB)

    对于上述的线性回归原理,用MATLAB代码实现的话,需要实现目标函数$J( heta)$ 和梯度$ igtriangledown_{ heta}J( heta) $的计算。

    四 参考

    Linear Regression

  • 相关阅读:
    SecureCRT乱码问题简单的解决办法
    安家博客园,开始java web 之旅
    Java Service Wrapper使用心得
    vsftp折腾
    mysql更改数据库表名称和svnerve启动版本库命令、执行jar命令
    Linux 命令积累2
    二进制与十进制的转换
    java Map代替List在for循环中的应用
    Optional 的应用
    java Date、java.sql.Date、localTime、SimpleDateFormat的格式及应用
  • 原文地址:https://www.cnblogs.com/wxer/p/7455085.html
Copyright © 2011-2022 走看看