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

    机器学习算法(一)线性回归

    本文主要梳理一下线性回归和逻辑斯蒂回归这两大算法。这两个算法的关系是什么呢?答案是并没有什么关系。
    这样说其实也不对,逻辑斯蒂回归里有线性回归的重要组成部分。但是二者又一个本质区别,就是线性回归是一个“回归”算法,而逻辑斯蒂回归是一个“分类”算法。这就导致两个算法永远像牛郎织女一样隔着银河。本文主要介绍线性回归,下篇文章会在本文的基础上介绍逻辑斯蒂回归。本文思路主要来自邹博的机器学习课程。本文为作者自己学习整理的笔记,转载请注明出处。

    线性回归

    1、输入描述:

    有训练数据集D,其中共有m条数据,n个特征,如下表所示。

    数据id 数学 语文 英语 物理
    学生1 98 92 96 83
    学生2 95 79 86 23
    ... 34 35 92 92
    学生m 67 68 94 72

    上表是一个数据表的简单示例,其中包含m条数据,每条数据代表了一名学生;4个特征,分别是数学成绩、语文成绩、英语成绩、物理成绩。

    以上是一个具体的表格,我们可以抽象表格如下:

    数据id 属性1 属性2 ... 属性n 预测值
    1 x11 x12 ... x1n y1
    2 x21 x22 ... x2n y2
    ... ... ... ... ... ...
    m xm1 xm2 ... xmn ym

    对于其中的某一条数据,可以认为如下:

    属性1 属性2 ... 属性n 预测值
    x1 x2 ... xn y

    2、问题描述

    线性回归就是要解决以下问题:

    要建立一如下公式1:
    $$y=h_{ heta }left( x ight) = heta _{0}+ heta {1}x{1}+ heta {2}x{2}+ldots + heta {n}x{n}$$
    我们的目标就是在已知一些数据后,求出该方程的系数,即( heta _{0}),( heta _{1}),...,( heta _{n}).

    3、算法推导

    上面公式1可做如下变形(公式2)$$widehat{y}=h_{ heta }left( x ight) =sum ^{n}_{i=1} heta {i}x{i}= heta ^{T}x$$

    对于数据标签的真实值,我们可以设为(y),而对于数据用公式1和所有(x)计算得到的值为估计值,设为(widehat{y}).

    因此有公式3$$y=widehat {y}+varepsilon $$

    其中,这个(varepsilon)可以认为是噪声。

    根据中心极限定理,我们可以认为这个(varepsilon)服从正态分布,即$$varepsilon sim Nleft( 0,sigma ^{2} ight) $$
    因此,有公式4$$Pleft( varepsilon ight) =dfrac {1}{sqrt {2pi sigma }}expleft( -dfrac {varepsilon ^{2}}{2sigma ^{2}} ight) $$
    因为$$varepsilon=y-widehat {y}$$
    带入公式4,将(varepsilon)(x)视为常数,则可将(Pleft( varepsilon ight))看成是关于( heta)的函数。即$Pleft( varepsilon ight) =gleft( heta ight) ( 根据最大似然定理,可得关于) heta(的似然函数为公式5)$Lleft( heta ight) =prod ^{m}{i=1}dfrac {1}{sqrt {2pi }sigma }expleft( -dfrac {left( y^{i}- heta {T}x{i} ight) ^{2}}{2sigma ^{2}} ight) $$
    其中,(i)表示第(i)条数据。该式中,仅( heta)为未知量,我们要做的事就是求出一组( heta),使(Lleft( heta ight))最大。
    对于公式5,可以对其取(log)求出其对数似然函数。对其对数似然函数可以进一步化简,最终,我们可得到如下的目标函数(公式6):求出一组( heta)使$$Jleft( heta ight) =dfrac {1}{2}sum ^{m}
    {i=1}left( heta {T}x{i}-y^{i} ight) ^{2}$$最小。
    此处略去求解过程,该式的解决方式是令(Jleft( heta ight))( heta)求导并令其等于0。最后可求得公式7:$$ heta =left( x^{T}x ight) {-1}x{T}y$$
    当以公式6为目标函数时,并没有考虑过拟合的问题。若想减少过拟合风险,可以对该目标函数加入正则项,常用的方法有以下两种:
    1、L1正则(又称LASSO回归)
    其目标函数是公式8:$$Jleft( heta ight) =dfrac {1}{2}sum ^{m}{i=1}left( heta {T}x{i}-y^{i} ight) ^{2}+lambda sum ^{n}{j=1}left| heta _{j} ight| $$

    2、L2正则(又称岭回归)
    其目标函数是公式9:$$Jleft( heta ight) =dfrac {1}{2}sum ^{m}{i=1}left( heta {T}x{i}-y^{i} ight) ^{2}+lambda sum ^{n}{j=1} heta ^{2}_{j}$$

    实际上,一般用公式7直接求出( heta)是很难的。一般我们会采用梯度下降的方法来求出一个局部最优的( heta)

    综上,线性回归的目标函数为:公式6、公式8或公式9。即$$loss=Jleft( heta ight) =dfrac {1}{2}sum ^{m}{i=1}left( heta {T}x{i}-y^{i} ight) ^{2}$$或$$loss=Jleft( heta ight) =dfrac {1}{2}sum ^{m}{i=1}left( heta {T}x{i}-y^{i} ight) ^{2}+lambda sum ^{n}{j=1}left| heta {j} ight| $$或$$loss=Jleft( heta ight) =dfrac {1}{2}sum ^{m}{i=1}left( heta {T}x{i}-y^{i} ight) ^{2}+lambda sum ^{n}{j=1} heta ^{2}_{j}$$

  • 相关阅读:
    网络最大流算法—最高标号预流推进HLPP
    网络最大流算法—EK算法
    PROPAGATION_REQUIRED
    js左侧三级菜单导航代码
    Ubuntu上用premake编译GDAL
    2013数据结构课程设计之便利店选址(暴力枚举和随机函数两种做法)
    JAVA环境配置
    [K/3Cloud] 如何从被调用的动态表单界面返回数据
    document.getElementsByClassName在ie8及其以下浏览器的兼容性问题
    Java学习笔记51:数组转ArrayList和ArrayList转数组技巧
  • 原文地址:https://www.cnblogs.com/Yolanda7171/p/7242303.html
Copyright © 2011-2022 走看看