文档章节

线性回归——回归预测

clgo
 clgo
发布于 2017/05/21 23:07
字数 2510
阅读 133
收藏 2

回归简介:

       回归在数学上的意义是给定一个点集,能够用一条曲线去拟合之,如果这个曲线是一条直线,那就被称为线性回归,如果曲线是一条二次曲线,就被称为二次回归,回归还有很多的变种,如locally weighted回归,logistic回归。
        用一个很简单的例子来说明回归,很多机器学习资料都会举这个例子——房屋价格预测,一座房屋的价格受很多因素影响,比如说有房屋面积,房间的数量,类型,地段,朝向等等,这些影响房屋价值的变量在机器学习中被称为特征(feature)。
       特征在机器学习中是一个很重要的概念,有很多的资料是专门探讨特征的选取和处理。在此处,为了简简化问题,假设我们的房屋价格仅仅受到房屋面积的影响。

假设有一个房屋销售的数据如下:
   面积(m^2)  销售价钱(万元)
   123            250
   150            320
   87              160
   102            220
   …               …
 我们可以做出一个散点图,x轴是房屋的面积。y轴是房屋的售价,如下:

 

 

 

     

如果来了一个新的在已知的信息中没有的面积,我们该怎么判断这座房屋的价格呢?答案是我们可以用一条曲线去尽量准确的拟合这些已知数据,然后如果有新的输入过来,我们可以在将曲线上这个点对应的值返回。如果用一条直线去拟合,可能是下面的样子:

   
绿色的点就是我们对新来面积房屋的价值预测点。

机器学习常用概念和典型机器学习流程:

首先介绍一些概念和常用的符号。

  1.   房屋销售记录表 ——— 训练集(training set)或者训练数据(training data), 是我们流程中的输入数据,一                                         般称为x。
  2.   房屋销售价钱 -——输出数据,一般称为y。
  3.   拟合的函数(模型),一般可以写做 y = h(x)
  4.   训练数据的条目数(#training set), 一条训练数据是由一对输入数据和输出数据组成的
  5.   输入数据的维度(特征的个数,#features),n

      下面是一个典型的机器学习的过程,首先给出一组输入数据(训练集),计算机会根据我们提供的算法得到一个估计的函数(模型),这个函数可以对没有出现的新数据给出一个新的估计。

 

回归的数学建模过程

      我们用X1,X2.....Xn 去描述features(特征)里面的分量,比如x1表示房间的面积,x2表示房间的朝向,等等,我们可以做出一个估计函数:

      θ在这儿被称为参数,可以理解为每个特征的权重——即特征对预测结果的影响力大小,用上面的例子解释来说就是房屋面积对房屋价格影响更大还是房间数量对房屋价格影响更大。为了如果我们令X0 = 1,就可以用向量的方式来表示预测函数:

       在得出模型后我们需要一个方法去评估我们得出的θ是否比较好,也就是对我们得到的模型进行评估,一般这个函数称为损失函数(loss function),用来描述预测结果偏离实际结果的程度,在下面,我们称这个函数为J函数。在这儿我们可以做出下面的一个错误函数:

       这个错误估计函数是去对x(i)的估计值与真实值y(i)差的平方和作为错误估计函数,前面乘上的1/2是为了方便求导化简,一般来说J(θ)越小,预测越准确。

       如何调整θ以使得J(θ)取得最小值有很多方法,其中有最小二乘法,梯度下降法各种方法,我们这里先谈谈梯度下降法。

梯度下降法和最小二乘法

   梯度下降法是按下面的流程进行的:

  1.    首先对θ赋值,这个值可以是随机的,也可以让θ是一个全零的向量。
  2.    改变θ的值,使得J(θ)按梯度下降的方向进行减少。

   为了更清楚,给出下面的图:

    

这是一个表示参数θ与误差函数J(θ)的关系图,红色的部分是表示J(θ)有着比较高的取值,我们需要的是,能够让J(θ)的值尽量的低。也就是深蓝色的部分。θ0,θ1表示θ向量的两个维度。 在上面提到梯度下降法的第一步是给θ给一个初值,假设随机给的初值是在图上的十字点。然后我们将θ按照梯度下降的方向进行调整,就会使得J(θ)往更低的方向进行变化,如图所示,算法的结束将是在θ下降到无法继续下降为止。

    

当然,可能梯度下降的最终点并非是全局最小点,可能是一个局部最小点,可能是下面的情况:

 上面这张图就是描述的一个局部最小点,这是我们重新选择了一个初始点得到的,看来我们这个算法将会在很大的程度上被初始点的选择影响而陷入局部最小点  

  下面我将用一个例子描述一下梯度减少的过程,对于我们的函数J(θ)求偏导J:

 

   下面是更新的过程,也就是θi会向着梯度最小的方向进行减少。θi表示更新之前的值,减号后面的部分表示按梯度方向减少的量,α表示步长,也就是每次按照梯度减少的方向变化多少。

    

一个很重要的地方值得注意的是,梯度是有方向的,对于一个向量θ,每一维分量θi都可以求出一个梯度的方向,我们就可以找到一个整体的方向,在变化的时候,我们就朝着下降最多的方向进行变化就可以达到一个最小点,不管它是局部的还是全局的。

下面在说说最小二乘法:

最小二乘法(又称最小平方法)是一种数学优化技术。它通过【最小化误差的平方和】寻找数据的最佳函数匹配。利用最小二乘法可以简便地求得未知的数据,并使得这些求得的数据与实际数据之间误差的平方和为最小。最小二乘法还可用于曲线拟合。其他一些优化问题也可通过最小化能量或最大化熵用最小二乘法来表达。

我们使用最小二乘法的目的是选择最佳拟合曲线,使得拟合误差最小则。有以下三个标准可以选择:

        (1)用“残差和最小”确定直线位置是一个途径。但很快发现计算“残差和”存在相互抵消的问题。
        (2)用“残差绝对值和最小”确定直线位置也是一个途径。但绝对值的计算比较麻烦。
        (3)最小二乘法的原则是以“残差平方和最小”确定直线位置。用最小二乘法除了计算比较方便外,得到的估计量还具有优良特性。这种方法对异常值非常敏感。

    最常用的是普通最小二乘法( Ordinary  Least Square,OLS):所选择的回归模型应该使所有观察值的残差平方和达到最小。(Q为残差平方和)- 即采用平方损失函数。

  样本回归模型:

                                     

   其中ei为样本(Xi, Yi)的误差

   平方损失函数:

                      

      则通过Q最小确定这条直线,即确定,以为变量,把它们看作是Q的函数,就变成了一个求极值的问题,可以通过求导数得到。求Q对两个待估参数的偏导数:

                       

      根据数学知识我们知道,函数的极值点为偏导为0的点。

      解得:

                   

 

    这就是最小二乘法的解法,就是求得平方损失函数的极值点。

最小二乘法跟梯度下降法的比较:

   相同

  1.本质相同:两种方法都是在给定已知数据的前提下算出一个一般性的估值函数。然后对给定新数据的进行估算。
  2.目标相同:都是在已知数据的框架内,使得估算值与实际值的总平方差尽量更小(事实上未必一定要使用平方),估算值与实际值的总平方差的公式为:

                             

   其中为第i组数据的independent variable,为第i组数据的dependent variable,为系数向量。


   不同

  实现方法和结果不同:最小二乘法是直接对求导找出全局最小,是非迭代法。而梯度下降法是一种迭代法,先给定一个,然后向下降最快的方向调整,在若干次迭代之后找到局部最小。梯度下降法的缺点是到最小点的时候收敛速度变慢,并且对初始点的选择极为敏感,其改进大多是在这两方面下功夫。机器学习中不使用最小二乘法的原因主要是因为涉及方阵求逆——矩阵求逆的复杂度是O(N^3),其中,N为特征数目。次要原因是因为如果特征数目大于样本数目,则方阵是奇异矩阵,逆不存在(可以通过惩罚因子来解决,这时变成了岭回归和LASSO回归)

参考资料:

http://blog.csdn.net/code_lr/article/details/51382826

https://mp.weixin.qq.com/s?__biz=MzA5ODUxOTA5Mg==&mid=210968322&idx=1&sn=2b978e7b2c1054073e851073c03192b1&scene=25#wechat_redirect

© 著作权归作者所有

clgo
粉丝 2
博文 100
码字总数 37222
作品 0
郑州
私信 提问
Deep Learning学习笔记-线性回归的简单实践

本篇文章中,我们用 Python 代码写个小程序,根据出生时的body mass index(BMI)数据,使用线性回归来预测寿命。在这之前,我们先准备一下建立这个模型所需要的必要工具。 在这个线性回归模...

Adam卢卿
2017/02/07
0
0
机器学习新手必学十大算法指南

在机器学习中有一种“无免费午餐(NFL)”的定理。简而言之,它指出没有任何一个算法可以适用于每个问题,尤其是与监督学习相关的。 因此,你应该尝试多种不同的算法来解决问题,同时还要使用...

【方向】
2018/01/28
0
0
Python机器学习(二):线性回归算法

机器学习研究的问题分为分类问题和回归问题。分类问题很好理解,而回归问题就是找到一条曲线,可以最大程度地拟合样本特征和样本输出标记之间的关系。当给算法一个输入时,这条曲线可以计算出...

JacobYoung
2018/10/01
0
0
如何为你的回归问题选择最合适的机器学习方法?

文章发布于公号【数智物语】 (ID:decision_engine),关注公号不错过每一篇干货。 转自 | AI算法之心(公众号ID:AIHeartForYou) 作者 | 何从庆 什么是回归呢?回归分析是一种预测性的建模...

数智物语说
04/29
0
0
python机器学习案例系列教程——线性回归

全栈工程师开发手册 (作者:栾鹏) python数据挖掘系列教程 上一文章中我们学习了,线性函数和线性分类,遗留了问题线性回归过程, 今天我们就来学习下线性模型优化过程,及线性回归 线性回...

luanpeng825485697
2017/12/29
0
0

没有更多内容

加载失败,请刷新页面

加载更多

IT兄弟连 HTML5教程 HTML5表单 新增的表单属性1

HTML5 Input表单为<form>和<input>标签添加了几个新属性,属性如表1。 1 autocomplete属性 autocomplete属性规定form或input域应该拥有自动完成功能,当用户在自动完成域中开始输入时,浏览器...

老码农的一亩三分地
41分钟前
5
0
OSChina 周五乱弹 —— 葛优理论+1

Osc乱弹歌单(2019)请戳(这里) 【今日歌曲】 @这次装个文艺青年吧 :#今日歌曲推荐# 分享米津玄師的单曲《LOSER》: mv中的舞蹈诡异却又美丽,如此随性怕是难再跳出第二次…… 《LOSER》-...

小小编辑
今天
1K
16
nginx学习笔记

中间件位于客户机/ 服务器的操作系统之上,管理计算机资源和网络通讯。 是连接两个独立应用程序或独立系统的软件。 web请求通过中间件可以直接调用操作系统,也可以经过中间件把请求分发到多...

码农实战
今天
5
0
Spring Security 实战干货:玩转自定义登录

1. 前言 前面的关于 Spring Security 相关的文章只是一个预热。为了接下来更好的实战,如果你错过了请从 Spring Security 实战系列 开始。安全访问的第一步就是认证(Authentication),认证...

码农小胖哥
今天
15
0
JAVA 实现雪花算法生成唯一订单号工具类

import lombok.SneakyThrows;import lombok.extern.slf4j.Slf4j;import java.util.Calendar;/** * Default distributed primary key generator. * * <p> * Use snowflake......

huangkejie
昨天
19
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部