原文:http://blog.jobbole.com/87148/

编者按】针对Quora上的一个老问题:不同分类算法的优势是什么?Netflix公司工程总监Xavier Amatriain近日给出新的解答,他根据奥卡姆剃刀原理依次推荐了逻辑回归、SVM、决策树集成和深度学习,并谈了他的不同认识。他并不推荐深度学习为通用的方法,这也侧面呼应了我们之前讨论的问题:深度学习能否取代其他机器学习算法。

不同分类算法的优势是什么?例如有大量的训练数据集,上万的实例,超过10万的特征,我们选择哪种分类算法最好?Netflix公司工程总监Xavier Amatriain认为,应当根据奥卡姆剃刀原理(Occam’s Razor)来选择算法,建议先考虑逻辑回归。

选择一个合理的算法可以从很多方面来考察,包括:

  • 训练实例的数量?
  • 特征空间的维度?
  • 是否希望该问题线性可分?
  • 特征是否是独立的?
  • 是否预期特征能够线性扩展?
  • 过度拟合是否会成为一个问题?
  • 系统在速度/性能/内存使用等方面的要求如何?

逻辑回归

作为一般的经验法则,我建议先考虑逻辑回归(LR,Logistic Regression)。逻辑回归是一个漂亮乖巧的分类算法,可以训练你希望的特征大致线性和问题线性可分。你可以很容易地做一些特征引擎把大部分的非线性特征转换为线性。逻辑回归对噪声也相当强劲,能避免过度拟合,甚至使用L2或L1正则化做特征选择。逻辑回归也可以用在大数据场景,因为它是相当有效的,并且可以分布使用,例如ADMM。 逻辑回归的最后一个优点是,输出可以被解释为概率。这是一个好的附加作用,例如,你可以使用它排名而不是分类。

即使在你不希望逻辑回归100%地工作,你也可以帮自己一个忙,在使用“票友”办法之前,运行一个简单的L2正则化逻辑回归作为基线。

好了,现在你已经设置逻辑回归基线,下一步你应该做的,我基本上会推荐两个可能的方向:支持向量机(SVM)或者决策树集成。如果我不知道你的具体问题,我肯定会选择后者,但我将开始描述为什么SVM可能是一个值得考虑的方法。

支持向量机

支持向量机使用一个与LR不同的损失函数(Hinge)。它们也有不同的解释(maximum-margin)。然而,在实践中,用线性核函数的SVM和逻辑回归是没有很大的不同的(如果你有兴趣,你可以观察Andrew Ng在他的Coursera机器学习课程如何从逻辑回归中驱动SVM)。用SVM代替逻辑回归的一个主要原因可能是因为你的问题线性不可分。在这种情况下,你将不得不使用有非线性内核的SVM(如RBF)。事实上,逻辑回归也可以伴随不同的内核使用,但出于实际原因你更可能选择SVM。另一个使用SVM的相关理由可能是高维空间。例如,SVM已经被报道在工作文本分类方面做得更出色。

不幸的是,SVM的主要缺点是,它们的训练低效到痛苦。所以,对于有大量训练样本的任何问题,我都不会推荐SVM。更进一步地说,我不会为大多数“工业规模”的应用程序推荐SVM。任何超出玩具/实验室的问题可能会使用其他的算法来更好地解决。

决策树集成

第三个算法家族:决策树集成(Tree Ensembles)。这基本上涵盖了两个不同的算法:随机森林(RF)和梯度提升决策树(GBDT)。它们之间的差异随后再谈,现在先把它们当做一个整体和逻辑回归比较。

决策树集成有超过LR的不同优势。一个主要优势是,它们并不指望线性特征,甚至是交互线性特性。在LR里我没有提到的是,它几乎不能处理分类(二进制)特性。而决策树集成因为仅仅是一堆决策树的结合,可以非常好地处理这个问题。另一主要优点是,因为它们构造了(使用bagging或boosting)的算法,能很好地处理高维空间以及大量的训练实例。

至于RF和GBDT之间的差别,可以简单理解为GBDT的性能通常会更好,但它们更难保证正确。更具体而言,GBDT有更多的超参数需要调整,并且也更容易出现过度拟合。RF几乎可以“开箱即用”,这是它们非常受欢迎的一个原因。

深度学习

最后但并非最不重要,没有深度学习的次要参考,这个答案将是不完整的。我绝对不会推荐这种方法作为通用的分类技术。但是,你可能会听说这些方法在某些情况下(如图像分类)表现如何。如果你已经通过了前面的步骤并且感觉你的解决方案还有优化的空间,你可能尝试使用深度学习方法。事实是,如果你使用一个开源工具(如Theano)实现,你会知道如何使这些方法在你的数据集中非常快地执行。

总结

综上所述,先用如逻辑回归一样简单的方法设定一个基准,如果你需要,再使问题变得更加复杂。这一点上,决策树集成可能正是要走的正确道路,特别是随机森林,它们很容易调整。如果你觉得还有改进的余地,尝试GBDT,或者更炫一些,选择深度学习。

你还可以看看Kaggle比赛。如果你搜索关键字“分类”,选择那些已经完成的,你能找到一些类似的东西,这样你可能会知道选择一个什么样的方法来赢得比赛。在这一点上,你可能会意识到,使用集成方法总容易把事情做好。当然集成的唯一问题,是需要保持所有独立的方法并行地工作。这可能是你的最后一步,花哨的一步。

编辑点评:Xavier Amatriain不推荐深度学习为通用算法的理由,并不能说是因为深度学习不好,而是因为深度学习会增加复杂性及成本,却无法保证在所有的场景表现出比逻辑回归、SVM及决策树集成更优的结果。事实上,Xavier Amatriain的Netflix团队早已开始研究人工神经网络和深度学习技术,希望借助AWS云服务和GPU加速的分布式神经网络,分析网民最爱看的电影电视剧,实现节目的个性化推荐。

Netflix推荐系统架构(图片来自Xavier Amatrain参与撰写的Netflix官方博客)

此后,Xavier Amatriain还分享了Netflix机器学习实践的十大经验教训,大致包括:

  • 更多的数据需要与更好的模型之匹配
  • 你可能不需要所有的大数据
  • 更复杂的模型未必意味着更好的结果,可能是你的样本集太简单
  • 要充分考虑你的训练数据
  • 学会处理偏差
  • UI是联系算法和最重要的用户之间唯一通道
  • 正确的演进方式比数据和模型更重要
  • 分布式算法重要,知道在哪个层级使用它更重要
  • 选择合适的度量自动超参数优化
  • 并非所有的事都能离线完成,近线处理也是一种选择

转载于:https://www.cnblogs.com/zhizhan/p/5908101.html

Netflix工程总监眼中的分类算法:深度学习优先级最低相关推荐

  1. TensorFlow损失函数(loss function) 2017-08-14 11:32 125人阅读 评论(0) 收藏 举报 分类: 深度学习及TensorFlow实现(10) 版权声明:

    TensorFlow损失函数(loss function) 2017-08-14 11:32 125人阅读 评论(0) 收藏 举报  分类: 深度学习及TensorFlow实现(10)  版权声明:本 ...

  2. 【智能算法】基于CNN算法深度学习车辆识别

    目录 1.基于CNN算法深度学习车辆识别 2.文件准备 3.结果展示 1.基于CNN算法深度学习车辆识别 // The contents of this file are in the public ...

  3. 【论文阅读】用于代表单个树木的机载LiDAR 3D点云针叶树/落叶分类的深度学习

    Deep learning for conifer/deciduous classification of airborne LiDAR 3D point clouds representing in ...

  4. 对最近用于细粒度车辆分类的深度学习架构的系统评估

    细粒度的车辆分类是对车辆的品牌.型号和年份进行分类的任务. 这是一项非常具有挑战性的任务,因为不同类型但颜色和视点相似的车辆通常看起来比相同类型但颜色和视点不同的车辆更相似. 车辆制造商.型号和年份与 ...

  5. 脑电EEG代码开源分享 【6. 分类模型-深度学习篇】

    往期文章 希望了解更多的道友点这里 0. 分享[脑机接口 + 人工智能]的学习之路 1.1 . 脑电EEG代码开源分享 [1.前置准备-静息态篇] 1.2 . 脑电EEG代码开源分享 [1.前置准备- ...

  6. #计划# 机器视觉 #视觉增强 #python #数据库 #算法 #深度学习 #迁移学习 #matlab #数据融合

    #1.对振动位移的测量 直接法:位移传感器很难实现多点全场信息的非接触测量 间接法:加速度传感器要考虑本身质量.低频噪声难以滤除 方向:非接触.高精度.全场式 2.机器视觉:视觉传感器获取结构振动视频 ...

  7. 深度学习狗图片_狗品种分类的深度学习

    深度学习狗图片 深度学习 (Deep Learning) Stuck behind the paywall? Click here to read the full story with my fri ...

  8. 数据挖掘分类算法的学习总结

    一.中文摘要 大数据时代的我们每时每刻都在产生海量数据,如何快速准确获取其中有价值的数据一直是亟待解决的问题.数据挖掘技术的应运而生为该问题提供了解决手段,作为数据挖掘核心内容之一的分类算法同样发挥了 ...

  9. 2.8 Adam 优化算法-深度学习第二课《改善深层神经网络》-Stanford吴恩达教授

    ←上一篇 ↓↑ 下一篇→ 2.7 RMSprop 回到目录 2.9 学习率衰减 Adam优化算法 (Adam Optimization Algorithm) 在深度学习的历史上,包括许多知名研究者在内 ...

最新文章

  1. 统计数字,空白符,制表符_为什么您应该在HTML中使用制表符空间而不是多个非空白空间(nbsp)...
  2. 微信小程序request合法域名怎么配置啊
  3. Android:学习AIDL,这一篇文章就够了(下)
  4. mysql搜索规则_MySQL基于规则优化
  5. 使用IndexReader.repen提高搜索速度
  6. 虹软sdk 服务器运行 错误码94212 解决方案
  7. 【flume】flume案例集锦
  8. AI 告别炒作,Java 0 增长,2021 技术路在何方?
  9. Android 系统默认参数的修改
  10. taro更新页面数据_Taro 全局数据状态管理
  11. 01_测试基础知识---功能测试常用方法/正交表的使用
  12. 对话海星区块创始团队,打造区块链媒体明日之星
  13. 网页游戏开发语言AS3(ActiveScript3.0)
  14. 微型计算机8088拆字实验编程,LGN-01B型 PLC可编程控制器及单片机开发系统综合实验台...
  15. 中龙电力什么理财产品预期收益高又安全?介绍四类理财产品
  16. 大学计算机专业找对象,单身率最高的大学专业是什么?这5个专业为什么成脱单最难专业...
  17. Cathy Zhang 箭头函数与普通函数的区别
  18. 基于Python的DICOM文件转换教程,使用pydicom将图片存为DICOM文件。
  19. Android rom开发:自定义序列号ro.serialno
  20. OPENSSL与私有CA搭建

热门文章

  1. 数据库要不要放在docker
  2. vue实现倒计时验证码
  3. redis专题:redis集群的动态扩容缩容,水平扩展
  4. Jeecg-Boot 快速生成前后端代码
  5. html限定输入的内容,HTML中限制input 输入框输入内容
  6. 写出高效优美的C语言代码(单片机)
  7. 关于Nocas的几个问题
  8. centos7 搭建apache druid
  9. 架构初识之 —— 使用kafka进行商品维度化缓存解决方案
  10. java循环 排序 查找