http://blog.itpub.net/31542119/viewspace-2199810/

线性和逻辑斯蒂(Logistic)回归通常是是机器学习学习者的入门算法,因为它们易于使用和可解释性。然而,尽管他们简单但也有一些缺点,在很多情况下它们并不是最佳选择。实际上存在很多种回归模型,每种都有自己的优缺点。

在这篇文章中,我们将介绍5种最常见的回归算法及特点。我们很快就会发现,很多算法只在特定的情况和数据下表现良好。

线性回归(Linear Regression)

回归是用于建模和分析变量之间关系的一种技术,分析变量是如何影响结果的。线性回归是指完全由线性变量组成的回归模型。从简单情况开始,单变量线性回归(Single Variable Linear Regression)是一种用于使用线性模型来建模单个输入自变量(特征变量)和输出因变量之间关系的技术。

更一般的情况是多变量线性回归(Multi Variable Linear Regression),它体现了为多个独立输入变量(特征变量)与输出因变量之间的关系。该模型保持线性,因为输出是输入变量的线性组合。我们可以对多变量线性回归建模如下:

其中是系数,是变量,是偏置。正如我们所看到的,这个函数只有线性关系,所以它只适用于建模线性可分数据。这很容易理解,因为我们只是使用系数权重来加权每个特征变量的重要性。我们使用随机梯度下降(SGD)来确定这些权重和偏置b。具体过程如下图所示:

线性回归的几个关键点:

• 建模快速简单,特别适用于要建模的关系不是非常复杂且数据量不大的情况。

• 有直观的理解和解释。

• 线性回归对异常值非常敏感。

多项式回归(Polynomial Regression)

当我们要创建适合处理非线性可分数据的模型时,我们需要使用多项式回归。在这种回归技术中,最佳拟合线不是一条直线,而是一条符合数据点的曲线。对于一个多项式回归,一些自变量的指数是大于1的。例如,我们可以有这下式:

一些变量有指数,其他变量没有。然而,选择每个变量的确切指数自然需要当前数据集合与最终输出的一些先验知识。请参阅下面的图,了解线性与多项式回归的比较。

多项式回归的几个要点:

• 能够模拟非线性可分的数据;线性回归不能做到这一点。它总体上更灵活,可以模拟一些相当复杂的关系。

• 完全控制要素变量的建模(要设置变量的指数)。

• 需要仔细的设计。需要一些数据的先验知识才能选择最佳指数。

• 如果指数选择不当,容易过拟合。

岭回归(Ridge Regression)

标准线性或多项式回归在特征变量之间存在很高的共线性(high collinearity)的情况下将失败。共线性是自变量之间存在近似线性关系,会对回归分析带来很大的影响。

我们进行回归分析需要了解每个自变量对因变量的单纯效应,高共线性就是说自变量间存在某种函数关系,如果你的两个自变量间(X1和X2)存在函数关系,那么X1改变一个单位时,X2也会相应地改变,此时你无法做到固定其他条件,单独考查X1对因变量Y的作用,你所观察到的X1的效应总是混杂了X2的作用,这就造成了分析误差,使得对自变量效应的分析不准确,所以做回归分析时需要排除高共线性的影响。

高共线性的存在可以通过几种不同的方式来确定:

• 尽管从理论上讲,该变量应该与Y高度相关,但回归系数并不显著。

• 添加或删除X特征变量时,回归系数会发生显着变化。

• X特征变量具有较高的成对相关性(pairwise correlations)(检查相关矩阵)。

我们可以首先看一下标准线性回归的优化函数,然后看看岭回归如何解决上述问题的思路:

其中X表示特征变量,w表示权重,y表示真实情况。岭回归是缓解模型中回归预测变量之间共线性的一种补救措施。由于共线性,多元回归模型中的一个特征变量可以由其他变量进行线性预测。

为了缓解这个问题,岭回归为变量增加了一个小的平方偏差因子(其实也就是正则项):

这种平方偏差因子向模型中引入少量偏差,但大大减少了方差。

岭回归的几个要点:

• 这种回归的假设与最小平方回归相同,不同点在于最小平方回归的时候,我们假设数据的误差服从高斯分布使用的是极大似然估计(MLE),在岭回归的时候,由于添加了偏差因子,即w的先验信息,使用的是极大后验估计(MAP)来得到最终参数的。

• 它缩小了系数的值,但没有达到零,这表明没有特征选择功能。

Lasso回归

Lasso回归与岭回归非常相似,因为两种技术都有相同的前提:它们都是在回归优化函数中增加一个偏置项,以减少共线性的影响,从而减少模型方差。然而,不像岭回归那样使用平方偏差,Lasso回归使用绝对值偏差作为正则化项:

岭回归和Lasso回归之间存在一些差异,基本上可以归结为L2和L1正则化的性质差异:

• 内置的特征选择(Built-in feature selection):这是L1范数的一个非常有用的属性,而L2范数不具有这种特性。这实际上因为是L1范数倾向于产生稀疏系数。例如,假设模型有100个系数,但其中只有10个系数是非零系数,这实际上是说“其他90个变量对预测目标值没有用处”。 而L2范数产生非稀疏系数,所以没有这个属性。因此,可以说Lasso回归做了一种“参数选择”形式,未被选中的特征变量对整体的权重为0。

• 稀疏性:指矩阵(或向量)中只有极少数条目非零。 L1范数具有产生具有零值或具有很少大系数的非常小值的许多系数的属性。

• 计算效率:L1范数没有解析解,但L2范数有。这使得L2范数的解可以通过计算得到。然而,L1范数的解具有稀疏性,这使得它可以与稀疏算法一起使用,这使得在计算上更有效率。

弹性网络回归(ElasticNet Regression)

ElasticNet是Lasso回归和岭回归技术的混合体。它使用了L1和L2正则化,也达到了两种技术的效果:

在Lasso和岭回归之间进行权衡的一个实际优势是,它允许Elastic-Net在循环的情况下继承岭回归的一些稳定性。

ElasticNet回归的几个关键点:

• 它鼓励在高度相关变量的情况下的群体效应,而不是像Lasso那样将其中一些置零。当多个特征和另一个特征相关的时候弹性网络非常有用。Lasso 倾向于随机选择其中一个,而弹性网络更倾向于选择两个。

• 对所选变量的数量没有限制。

结论

所有这些回归正则化方法(Lasso回归,岭回归和ElasticNet)在数据集中的变量之间具有高维度和多重共线性的情况下也能有良好的效果。

【本文转载自:机器学习算法与Python学习,作者:编译 | 专知,原味链接:https://mp.weixin.qq.com/s/mr83EK24S94b_UUlecyqlA】

【干货】机器学习中的五种回归模型及其优缺点相关推荐

  1. 聊聊 Linux 中的五种 IO 模型

    聊聊 Linux 中的五种 IO 模型 2016/04/21 · IT技术 · 8 评论 · iO, 同步, 异步, 阻塞, 非阻塞 分享到:0 本文作者: 伯乐在线 - 陶邦仁 .未经作者许可,禁止 ...

  2. 【机器学习】一些常用的回归模型实战(9种回归模型)

    实战说明 本次实战为,使用一些常用的回归模型对数据集做出预测,绘制预测结果是否符合要求. 本次实战的回归模型有: Linear Regression(线性回归) Decision Tree Regre ...

  3. 你应该掌握的 7 种回归模型!

    个人网站:红色石头的机器学习之路 CSDN博客:红色石头的专栏 知乎:红色石头 微博:RedstoneWill的微博 GitHub:RedstoneWill的GitHub 微信公众号:AI有道(ID: ...

  4. 漫谈五种IO模型(主讲IO多路复用)

    首先引用levin的回答让我们理清楚五种IO模型 1.阻塞I/O模型 老李去火车站买票,排队三天买到一张退票. 耗费:在车站吃喝拉撒睡 3天,其他事一件没干. 2.非阻塞I/O模型 老李去火车站买票, ...

  5. 你应该知道的五种IO模型

    点击上方蓝色字体,选择"设为星标" 优质文章,及时送达 写在前面 linux操作系统包含了五种IO模型,各种上层编程语言或者网络编程框架的上层实现都是基于操作系统的这些IO实现来实 ...

  6. linux 五种IO模型 简介

    Linux下主要的IO主要分为:阻塞IO(Blocking IO),非阻塞IO(Non-blocking IO),同步IO(Sync IO)和异步IO(Async IO). 同步:调用端会一直等待服务 ...

  7. Linux五种IO模型性能分析

    转载:http://blog.csdn.net/jay900323/article/details/18141217     Linux五种IO模型性能分析 目录(?)[-] 概念理解 Linux下的 ...

  8. Linux 下的五种 IO 模型

    Linux 下的五种 IO 模型 来源:decaywood's Blog 概念说明 用户空间与内核空间 现在操作系统都是采用虚拟存储器,那么对32位操作系统而言,它的寻址空间(虚拟存储空间)为4G(2 ...

  9. 详解Linux 五种IO模型

    原文:https://www.jianshu.com/p/486b0965c296 上一篇 同步.异步.阻塞.非阻塞 已经通俗的讲解了,要理解同步.异步.阻塞与非阻塞重要的两个概念点了,没有看过的,建 ...

最新文章

  1. nginx学习总结五(nginx反向代理)
  2. jsonp数据库拿数据到html页面,前端如何优雅的使用jsonp获取接口数据
  3. 【WPF】屏幕右下角消息提示框
  4. Tensorflow-Estimator-自定义估算器
  5. 静态和动态include
  6. no typehandler found for property XXXX 解决
  7. 前端怎么获取cookie的值_京东购物小程序cookie方案实践(附Demo)
  8. ATAC-seq原理及现有技术的比较
  9. C# for循环99乘法表
  10. 面试题之__ 星际穿越(java实现)
  11. FTP服务器、部署YUM仓库与NFS共享服务
  12. 京东区块链之科普篇:京东在区块链技术领域的应用与布局
  13. 开利宣布收购空调企业广东积微集团,包括志高暖通等多家子公司
  14. Django 数据库常用字段类型
  15. ThinkPHP导入Excel文件到数据库的简单实现
  16. 大商创 pc网页跳转对应移动端网页
  17. 《Python编程金典》读书笔记
  18. 基于FPGA的边沿检测
  19. Object类的各个方法及其作用
  20. LED:视展VSD控制卡网口闪烁不能访问

热门文章

  1. pyecharts可视化神器使用与避坑指南
  2. 特别的用法、特殊的含义(专有名词)
  3. Android 图片选择框架ImageSelector适配Android10及以上
  4. java 1加到100
  5. 使用IO流对文件进行读取功能
  6. 【代码质量的重要性:如何编写具有高质量标准的代码】
  7. Python实现公元纪年到干支纪年的转换
  8. windows查看dll导出函数名
  9. python 支付宝接口_python调用支付宝支付接口流程
  10. 你知道Oracle的数据文件大小有上限么?