毫无疑问,过去两年中,机器学习和人工智能的普及度得到了大幅提升。
如果你想学习机器算法,要从何下手呢?以我为例,我是在哥本哈根留学期间,学习AI课程入门的。我们用的教科书是一本AI经典:《Peter Norvig’s Artificial Intelligence?—?A Modern Approach》。最近我在继续学习这些,包括在旧金山听了几个关于深度学习的技术演讲,参加机器学习大会上。六月份,我注册了Udacity的Intro to Machine Learning的在线课程,近期已经完成了。这篇文章,我想分享一些我所学到的、最常见的机器学习算法。
我从这个课程中学到了很多,并决定继续学习这一专业内容。不久前,我在旧金山听了几个关于深度学习、神经网络、数据架构方面的技术演讲,包括在一个机器学习大会上和很多领域知名专家一起。最重要的是,我六月份注册了Udacity的机器学习入门的在线课程,近期已经完成了。这篇文章,我想分享一些我所学到的、最常见的机器学习算法。
机器学习算法可以分为三个大类——有监督学习、无监督学习和强化学习。
有监督学习,对训练有标签的数据有用,但是对于其他没有标签的数据,则需要预估。
无监督学习,用于对无标签的数据集(数据没有预处理)的处理,需要发掘其内在关系的时候。
强化学习,介于两者之间,虽然没有精准的标签或者错误信息,但是对于每个可预测的步骤或者行为,会有某种形式的反溃
由于我上的是入门课程,我并没有学习强化学习,但是下面10个有监督和无监督学习算法已经足以让你对机器学习产生兴趣。
监督学习
1.决策树 (Decision Trees)
决策树是一个决策支持工具,它用树形的图或者模型表示决策及其可能的后果,包括随机事件的影响、资源消耗、以及用途。请看下图,随意感受一下决策树长这样的:
从商业角度看,决策树就是用最少的Yes/No问题,尽可能地做出一个正确的决策。它让我们通过一种结构化、系统化的方式解决问题,得到一个有逻辑的结论。
2.朴素贝叶斯分类(Naive Bayes Classification)
朴素贝叶斯分类器是一类简单概率分类器,它基于把贝叶斯定理运用在特征之间关系的强独立性假设上。下图是贝叶斯公式——P(A|B)表示后验概率,P(B|A)表示似然度,P(A)表示类别的先验概率(class prior probability),P(B)表示做出预测的先验概率(predictor prior probability)。
现实生活中的应用例子:
一封电子邮件是否是垃圾邮件
一篇文章应该分到科技、政治,还是体育类
一段文字表达的是积极的情绪还是消极的情绪?
人脸识别
3.普通最小二乘回归(Ordinary Least Squares Regression)
如果你学过统计学,你可能听过线性回归。至少最小二乘是一种进行线性回归的方法。你可以认为线性回归就是让一条直线用最适合的姿势穿过一组点。有很多方法可以这样做,普通最小二乘法就像这样——你可以画一条线,测量每个点到这条线的距离,然后加起来。最好的线应该是所有距离加起来最小的那根。
线性法表示你去建模线性模型,而最小二乘法可以最小化该线性模型的误差。
4.逻辑回归(Logistic Regression)
逻辑回归是一种非常强大的统计方法,可以把有一个或者多个解释变量的数据,建立为二项式类型的模型,通过用累积逻辑分布的逻辑函数估计概率,测量分类因变量和一个或多个独立变量之间的关系。
通常,回归在现实生活中的用途如下:
信用评估
测量市场营销的成功度
预测某个产品的收益
特定的某天是否会发生地震
5.支持向量机(Support Vector Machines)
SVM是一种二分算法。假设在N维空间,有一组点,包含两种类型,SVM生成a(N-1) 维的超平面,把这些点分成两组。比如你有一些点在纸上面,这些点是线性分离的。SVM会找到一个直线,把这些点分成两类,并且会尽可能远离这些点。
从规模看来,SVM(包括适当调整过的)解决的一些特大的问题有:广告、人类基因剪接位点识别、基于图片的性别检测、大规模图片分类…
6.集成方法(Ensemble Methods)
集成方法吸纳了很多算法,构建一个分类器集合,然后给它们的预测带权重的进行投票,从而进行分类。最初的集成方法是贝叶斯平均法(Bayesian averaging),但是最近的算法集还包括了纠错输出编码(error-correcting output coding) ,bagging和boosting
那么集成方法如何工作的?为什么它们比单独的模型更好?
它们均衡了偏差:就像如果你均衡了大量的倾向民主党的投票和大量倾向共和党的投票,你总会得到一个不那么偏颇的结果。
它们降低了方差:集合大量模型的参考结果,噪音会小于单个模型的单个结果。在金融上,这叫投资分散原则(diversification)——一个混搭很多种股票的投资组合,比单独的股票更少变故。
它们不太可能过度拟合:如果你有单独的模型不是完全拟合,你结合每个简单方法建模,就不会发生过度拟合(over-fitting)
无监督学习
7. 聚类算法(Clustering Algorithms)
聚类就是把一组对象分组化的任务,使得在同一组的对象比起其它组的对象,它们彼此更加相似。
每种聚类算法都不同,下面是其中一些:
基于图心(Centroid)的算法
基于连接的算法
基于密集度的算法
概率论
降维
神经网络 / 深度学习
8.主成分分析(Principal Component Analysis)
PCA是一种统计过程,它通过正交变换把一组可能相关联的变量观察,转换成一组线性非相关的变量的值,这些非相关的变量就是主成分。
PCA的应用包括压缩、简化数据使之易于学习,可视化。需要注意的是,当决定是否用PCA的时候,领域知识特别重要。它不适用于噪音多的数据(所有成分的方差要很高才行)
9.奇异值分解(Singular Value Decomposition)
线性代数中,SVD是对一个特别复杂的矩阵做因式分解。比如一个m*n的矩阵M,存在一个分解如M = UΣV,其中U和V是酉矩阵,Σ是一个对角矩阵。
PCA其实是种简单的SVD。在计算机图形领域,第一个脸部识别算法就用了PCA和SVD,用特征脸(eigenfaces)的线性结合表达脸部图像,然后降维,用简单的方法把脸部和人匹配起来。尽管如今的方法更加复杂,依然有很多是依靠类似这样的技术。
10.独立成分分析(Independent Component Analysis)
ICA是一种统计技术。它发掘随机变量、测量数据或者信号的集合中隐含的因素。ICA定义了一种通用模型,用于观测到的多变量数据,通常是一个巨大的样本数据库。在这一模型中,假设数据变量是一些未知的、潜在的变量的线性组合,而组合方式也是未知的。同时假设,潜在的变量是非高斯分布且相互独立的,我们称之为观测数据的独立成分(Independent components)。
ICA与PCA有一定关联,但是一种更加有用的技术,在经典方法完全失效的时候,可以发现数据源中的潜在因素。它的应用包括数字图片,文件数据库,经济指数和心理测量。
现在可以开始用你对这些算法的理解,去创建机器学习应用,给大家带来更好的体验。
原文链接:
http://www.kdnuggets.com/2016/08/10-algorithms-machine-learning-engineers.html
相关资料链接:
Peter Norvig’s Artificial Intelligence?—?A Modern Approach
Intro to Machine Learning:
https://www.udacity.com/course/intro-to-machine-learning--ud120