ML 工程师需了解的 10 大算法
(点击上方公众号,可快速关注)
英文:James Le
译文:伯乐在线专栏作者 - yaoyujia
链接:http://blog.jobbole.com/104457/
毫无疑问,机器学习/人工智能的子领域在过去几年越来越流行。由于大数据是目前科技领域最热门的趋势,基于这些大规模的数据,机器学习在预测和计算建议方面变得不可思议的强大。最常见的机器学习的例子就是 Netflix(一家在线影片租赁提供商)的算法,它能基于你过去看过的电影来推荐电影,或着 Amazon 的算法,它能基于你过去买的书,来推荐书给你。
那么如果你想进一步了解机器学习,你应该怎样开始呢?对我来说,我的入门是我在哥本哈大学留学时,参加的一个人工智能的课程。我的讲师是丹麦科技大学的一个全职的应用数学和计算机科学的教授,他主要研究逻辑学和人工智能,主要致力于使用逻辑学来对人类的计划,推理,和求解问题的过程进行建模。这个课程是针对理论/核心概念和动手解决问题的讨论。我们所用的课本是人工智能的经典之一: Peter Norvig’s Artificial Intelligence — A Modern Approach,其中涵盖的主题主要包括:智能代理,问题求解,敌对搜索,概率论,多智能体系统,社会AI,哲学/伦理学/人工智能的未来。课程的最后,三个人一组,我们实现了一个简单的基于搜索的代理,能够在虚拟环境下解决运输任务来作为编程项目。
多亏这个课,我学会了大量的知识,并决定继续学习这个专业的主题。在过去的几周里,我参加了旧金山的多个技术讲座,主要是关于深度学习,神经网络,数据结构的。还有一个机器学习的会议,很多该领域的专业人士都在场。最重要的是,我六月初的时候参加了Udacity的介绍机器学习(Intro to Machine Learning )的在线课程,并在前几天刚刚完成。在这篇文章中,我想分享一些我从课程中学习到的最常见的机器学习算法。
机器学习算法可以被分为三大类—监督学习,非监督学习,和强化学习。有监督的学习在数据集(训练集)的属性(标签)已知的条件下是有用的,但是在没有标签时,就失去作用了,需要使用其他方法来进行预测。当我们面临的是没有标记的数据(属性没有预先赋值),并且需要我们发现其中隐含的关系时,非监督学习就会很有用。增强学习介于这两个极端之间——对于每一个预测步骤或动作,都会有某种形式的反馈,但是没有确切的标签或着错误信息。因为这是一个入门课,我并不了解强化学习。但我希望这10个有监督和无监督学习算法就足够引起你的兴趣。
有监督的学习
1.决策树:决策树是一个使用类树图形,或者决策模型和其可能结果的决策支持工具,包括偶然事件的结果,资源成本和效用。看一下下面的图片感受一下它是什么样的。
从商业决策的角度来看,大多数时候,一个决策树就是使用最小数量的必须要问的是或不是的问题,来评估做出正确决策的可能性。作为一个方法,它允许你以一个结构化的和系统的方式来处理这个问题,从而得到一个合乎逻辑的结论。
2. 朴素贝叶斯分类:朴素贝叶斯分类是一族基于贝叶斯定理和特征之间的强独立性(朴素)的简单分类器。显著特点是方程式—— P(A|B) 是后验概率,P(B|A) 是似然概率,P(A) 是类的先验概率,P(B) 是预测的先验概率。
一些现实中的例子:
标记一个电子邮件为垃圾邮件或非垃圾邮件
将新闻文章分为技术类、政治类或体育类
检查一段文字表达积极的情绪,或消极的情绪?
用于人脸识别软件
3. 普通的最小二乘回归:如果你了解统计学,你以前可能听说过线性回归。最小二乘法是一种进行线性回归的方法。你可以把线性回归当作使用一条直线来拟合一系列的点的任务。有多种可能的方法来做到这一点,最小二乘的策略是这样的——你可以画一条线,然后对于每一个数据点,计算数据点和这条线的垂直距离,然后把它们加起来;拟合的线就是那个总和的距离尽可能小的线。
线性是指你用来拟合数据的模型,而最小二乘指的是你正在最小化的误差的度量。
4. 逻辑回归:逻辑回归是一种强大的统计方法,它使用一个或者更多的解释变量对一个二项式结果建模。它通过使用logistic 函数估计概率,这是累积 logistic 分布,来度量分类变量和一个或者更多的自变量之间的关系。
通常,回归可以被用于在现实世界的应用,如:
信用评分
度量营销活动的成功率
预测某一产品的收入
在一个特定的日子里会发生地震吗?
5. 支持向量机(SVM):支持向量机是一个二分类算法。给出N维空间的一组二分类的点,支持向量机产生一个 N-1 维的超平面将这些点分成两组。假设你在一张纸上有一些线性可分的二分类的点,支持向量机将会找到一条直线,将这些点分成两类,并位于离所有这些点尽可能远的位置。
就规模而言,其中一些最主要的问题已经使用支持向量机解决了(通过适当的修改),如,入广告显示,人类的剪接位点识别,基于图像的性别检测,大规模图像分类等等。
6. 集成方法:集成方法是构建一组分类器,然后通过对预测结果进行加权投票来对新的数据点进行分类。原始的集成方法是贝叶斯平均,但最近的算法包括纠错输出编码,bagging, 和boosting。
那么集成方法是怎样工作的,为什么他们会优于单个的模型?
他们拉平了输出偏差:如果你将具有民主党倾向的民意调查和具有共和党倾向的民意调查取平均,你将得到一个中和的没有倾向一方的结果。
它们减小了方差:一堆模型的聚合结果和单一模型的结果相比具有更少的噪声。在金融领域,这被称为多元化——多只股票的混合投资要比一只股票变化更小。这就是为什么数据点越多你的模型会越好,而不是数据点越少越好。
它们不太可能产生过拟合:如果你有一个单独的没有过拟合的模型,你是用一种简单的方式(平均,加权平均,逻辑回归)将这些预测结果结合起来,然后就没有产生过拟合的空间了。
非监督学习
7. 聚类算法:聚类是将一组对象进行分组,使得同一组(簇)内的对象相似性远大于不同组之间的相似性。
每一种聚类算法都不太一样,这里有一些:
基于质心的算法
基于连通性的算法
基于密度的算法
概率聚类
降维
神经网络/深度学习
8. 主成分分析(PCA):主成分分析是一个统计过程,它使用正交变换,将一组可能相关的变量的一组观测值变换成线性不相关的变量,这些变量称为主成分。
PCA的应用包括压缩,简化数据使它们更容易学习,可视化。注意,选择是否使用主成分分析,领域知识是非常重要的。当数据充满噪声时,主成分分析是不合适的(主成分分析的所有成分都有很高的方差)。
9. 奇异值分解(SVD):在线性代数中,SVD是分解一个实数的比较复杂的矩阵。对于一个给定的m*n的矩阵M,存在一个分解M = UΣV,这里U和V是酉矩阵,Σ是一个对角矩阵。
PCA 是 SVD 的一个简单应用,在计算机视觉中,第一个人脸识别算法,就运用了 PCA 和 SVD 算法。使用这两个算法可以将人脸表示为 “特征脸”线性组合,降维,然后通过简单的方法匹配人脸的身份;虽然现代的方法复杂得多,但许多仍然依赖于类似的技术。
10. 独立成分分析(ICA):独立成分分析是一种统计方法,用来揭示随机变量集测试,信号集中的隐藏因素。独立成分分析为观测到的多变量的集合定义生成模型,它通常作为大型的样本数据数据库。在这个模型中,数据变量被假定为与一些潜在的未知变量的线性混合,混合系统也不知道。潜在变量被假设为非高斯并且相互独立的,它们被称为所观察到的数据的独立成分。
ICA 和 PCA 是相关的,但是它是一种更强大的技术,当那些经典的方法完全失效的时候,它能够从数据源中发现潜在的因素。它的应用包括数字图像,文档数据库,经济指标和心理测量。
现在,继续向前,运用你所理解的算法创造机器学习应用,为各个地方的人们人们提供更好的体验。