简介: 算法公式挺费神,机器学习太伤人。任何一个刚入门机器学习的人都会被复杂的公式和晦涩难懂的术语吓到。但其实,若是有通俗易懂的图解,理解机器学习的原理就会很是容易。本文整理了一篇博客文章的内容,读者可根据这些图理解看似高深的机器学习算法。程序员
机器学习这个主题已经很广泛了,每一个人都在谈论它,但不多有人可以透彻地了解它。当前网络上的一些机器学习文章晦涩难懂,理论性太强,或者通篇云里雾里地介绍人工智能、数据科学的魔力以及将来的工做等。算法
因此呢,本文做者 vas3k 经过简洁的语言和清晰明了的图示内容,使得读者可以更容易地理解机器学习。抛却了晦涩难懂的理论介绍,文中侧重于机器学习中的实际问题、行之有效的解决方案和通俗易懂的理论。不管你是程序员仍是管理者,本文都适合你。网络
AI 到底它包含了哪些领域,它与各类技术名词之间的关系又是什么样的?其实咱们会有多种判断方式,AI 范畴的划分也不会是惟一的,例如最「常见」的认识可能以下图所示。机器学习
你可能会认为:学习
可是,难道深度学习都是神经网络吗?明显并不必定是,例如周志华老师的深度森林,它就是第一个基于不可微构件的深度学习模型。所以,更科学的划分多是下图花书中的这种:人工智能
机器学习下面应该是表示学习,即归纳了全部使用机器学习挖掘表示自己的方法。相比传统 ML 须要手动设计数据特征,这类方法能本身学习好用的数据特征。整个深度学习也是一种表示学习,经过一层层模型从简单表示构建复杂表示。spa
若是你比较懒,那这有一张完整的技术路线图供你参考。设计
按照现阶段主流分类来看,机器学习主要分为四类:3d
经典机器学习常常被划分为两类:监督型学习和非监督型学习。对象
在分类中,模型老是须要一个导师,即对应特征的标注,这样的话机器就能够基于这些标注学习进行进一步分类。万事皆可分类,基于兴趣去分类用户、基于语言和主题分类文章、基于类型而分类音乐以及基于关键词分类电子邮件。
而在垃圾邮件过滤中,朴素贝叶斯算法获得了极其普遍的应用。事实上,朴素贝叶斯曾被认为是最优雅、最实用的算法。
支持向量机 (SVM) 是最流行的经典分类方法。也是被用来对现有的一切事物进行分类: 照片中的植物外观,文件等等等。支持向量机背后的思路也很简单,如下图为例,它试图在数据点之间画出两条边距最大的线。
回归基本上是分类,但预测的标的是一个数字而不是类别。例如按里程计算的汽车价格,按时间计算的交通量,按公司增加计算出市场需求量等。当所预测的事物是依赖于时间时,回归是很是合适的选择。
无监督学习是 90 年代才被发明出来的,能够这么去描述它「根据未知特征对目标进行分割,而由机器去选择最佳方式。」
聚类是一种没有预先定义类的分类。好比当你不记得你全部的颜色时,把袜子按颜色分类同样。聚类算法试图经过某些特征从而找到类似的对象并将它们合并到一个聚类中。
「将特定的特征组合成更高级的特性」
人们在使用抽象的东西老是比使用零碎的特征更具备方便性。举个例子,将全部长着三角形的耳朵、长鼻子和大尾巴的狗合并成一个很好的抽象概念——「牧羊犬」。
再好比有关科技的文章中拥有更多科技术语,而政治新闻里最多的是政客的名字。假如咱们要将这些具备特性的单词以及文章组成一个新的特征,以保持其潜在关联度,SVD 即是个不错的选择。
「在订单流中分析出特征模式」
包括分析购物车,自动化营销策略等。举个例子,顾客拿着六瓶啤酒走向收银台,在其路上是否该放些花生?若是放了,这些顾客多久会来买一次?若是啤酒花生是绝配,那还有其余什么事物也可进行这样的搭配呢?
现实生活中,每一个大型零售商都有它们本身的专用解决方案,而当中技术水平最高的要数那些「推荐系统」。
「团结就是力量」,这句老话很好地表达了机器学习领域中「集成方法」的基本思想。在集成方法中,咱们一般会训练多个「弱模型」,以期待能组合成为一个强大的方法。像各类经典 ML 竞赛中,差很少效果最好的那一拨,如梯度提高树、随机森林等都属于集成方法。
通常而言集成方法的「组合方式」主要能够分为三种:Stacking、Bagging、Boosting。
以下图所示,Stacking 一般考虑的是异质弱学习器,弱学习器能够先并行地训练,然后经过一个「元模型」将它们组合起来,根据不一样弱模型的预测结果输出一个最终的预测结果。
Bagging 方法一般考虑的是同质弱学习器,相互独立地并行学习这些弱学习器,并按照某种肯定性的平均过程将它们组合起来。假设全部弱学习器都是决策树模型,那么这样作出来的 Bagging 就是随机森林。
Boosting 方法一般考虑的也是同质弱学习器,只不过它的思想是「分而治之」。它以一种高度自适应的方法顺序地学习这些弱学习器,且后续弱模型重点学习上一个弱模型误分类的数据。
这就至关于不一样的弱分类器,专一于部分数据,达到「分而治之」的效果。以下所示,Boosting 就是以串行组合不一样模型的范式。大名鼎鼎的 XGBoost、LightGBM 这些库或算法,都采用的 Boosting 方法。