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

  • 相关阅读:
    MQTT TLS 加密传输
    python多进程并发redis
    各种消息队列的特点
    mqtt异步publish方法
    Numpy API Analysis
    Karma install steps for unit test of Angular JS app
    reinstall bower command
    Simulate getter in JavaScript by valueOf and toString method
    How to: Raise and Consume Events
    获取对象的类型信息 (JavaScript)
  • 原文地址:https://www.cnblogs.com/wxer/p/7455085.html
Copyright © 2011-2022 走看看