何谓 “机器学习”,学界尚未有统一的定义。但有两个定义特别值得了解:一个来自卡内基梅隆大学的Tom Mitchell教授,一个来自Goodfellow、Bengio 和 Courville合著的经典“花书”《深度学习》。
Tom Mitchell:根据优化过程抽象定义机器学习
对于某类任务 T 和性能度量 P,如果一个计算机程序在 T 上以 P 衡量的性能随着经验 E 而自我完善,那么我们称这个计算机程序在从经验 E 中学习。
机器学习的分类
- 监督学习(Supervised Algorithms):对训练有标签的数据有用,但是对于其他没有标签的数据,则需要预估
- 无监督学习(Unsupervised Algorithms):用于对无标签的数据集(数据没有预处理)的处理,需要发掘其内在关系的时候
- 强化学习(Reinforcement Algorithms):介于两者之间,虽然没有精准的标签或者错误信息,但是对于每个可预测的步骤或者行为,会有某种形式的反馈。
- 半监督学习:
- 深度学习(Deep Learning):
基本的机器学习算法
- 线性回归算法 Linear Regression
- 支持向量机算法 (Support Vector Machine,SVM)
- 最近邻居/k-近邻算法 (K-Nearest Neighbors,KNN)
- 逻辑回归算法 Logistic Regression
- 决策树算法 Decision Tree
- k-平均算法 K-Means
- 随机森林算法 Random Forest
- 朴素贝叶斯算法 Naive Bayes
- 降维算法 Dimensional Reduction
- 梯度增强算法 Gradient Boosting
监督学习
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 有一定关联,但是一种更加有用的技术,在经典方法完全失效的时候,可以发现数据源中的潜在因素。它的应用包括数字图片,文件数据库,经济指数和心理测量。