一文读懂机器学习的算法分类

2021年12月8日汽车技术评论272阅读模式
今天着重介绍机器学习的研究方法和应用实例。
 
其实,在学习深度学习之前,大家需要做些基础知识积累:
 
  • 对概率的基本概念有所了解;
  • 具备微积分和线性代数的基础知识;
  • 有一定的编程基础(有Python基础就更好了);

 

当然,如果你工作许久后,大学学习的基础知识都还给老师的话,Demu在介绍的过程中,尽量列举实例来解释下,方便大家理解。
 
好,下面开始今天的重点。
 
从一个概念开始:“概念学习”。
 
什么是概念学习?

概念学习是指从有关某个布尔函数的输入输出训练样例中推断出该布尔函数

 

有些抽象,我们举例说明。

一文读懂机器学习的算法分类

“享受运动”这个概念。
 
比如你要去游泳,是否享受运动就取决于很多的因素。比如天气,温度,湿度,风力,水温,天气预报等。
 
比如,老铁要从以前游泳的记录数据中找寻规律,来判断各个因素对于你是否“享受运动”的影响。
样例 天气 温度 湿度 风力 水温 预报 享受运动
1 普通 一样
2 一样
3 变化
4 变化
50 一样
天气:晴,阴,雨
温度:暖,冷

湿度:普通,大

风力:强,弱

水温:暖,冷

预报:一样,变化 

享受运动:是,否

从上面这个例子,我们可以了解”概念学习“的概念,它本质就是一个布尔函数,包含享受运动和不享受运动两种情况,我们就是通过对布尔函数的输入输出样例中,来最终判断这个布尔函数。

 

把上面列举的实例(instance)用集合X表示,X中每个因子是每次运动,而每次运动的值由天气温度湿度风力水温预报6个属性表示。概念定义则在实例集合X之上。

需要学习的概念或目标函数成为目标概念,记作M,那么
当享受运动时,可以记作M(x) = 1;
当不享受运动时,可以记作M(x) = 0;
M(x) 也可以叫做Y.

 

x: 每一个实例
X: 样例, 所有实例的集合
学习目标:f: X -> Y

 

下面了解几个基础概念:

 

训练集,测试集,特征值,标记,监督学习,非监督学习,半监督学习,分类,回归

 

训练集(training set/data)/训练样例(training examples): 
用来进行训练,也就是产生模型或者算法的数据集

 

测试集(testing set/data)/测试样例 (testing examples):
用来专门进行测试已经学习好的模型或者算法的数据集
    
特征向量(features/feature vector):属性的集合,通常用一个向量来表示,附属于一个实例

 

标记(label): c(x), 实例类别的标记

标记包含正例(positive example)和反例(negative example)之分。

 

有监督学习(supervised learning):训练集有类别标记(class label)
无监督学习(unsupervised learning):无类别标记(class label)
半监督学习(semi-supervised learning):有类别标记的训练集 + 无标记的训练集

 

分类 (classification): 目标标记为类别型数据(category)或离散型数据

 

回归(regression): 目标标记为连续性数值 (continuous numeric value)

 

一文读懂机器学习的算法分类

以上面提及的”享受运动“为例,我们让这些概念对号入座。

 

比如,老铁列表中记录的50天数据,那么训练集就是这50天的数据。

 

后续我们构建完模型后,想通过10天来验证是否享受运动,那后续10天的样例就是测试集。

 

总的数据集就是60天。

 

每个实例中都有天气、温度、湿度、风力、水温、预报6个属性,可以将这6个属性对应的值组成一个向量,这个向量就是特征向量

 

每个实例都对应一个特征向量。

 

其中享受运动和不享受运动的结果,就是类别标记

如果享受运动,那就是正例,反之就是反例。

 

在上面的例子中,因为有类别标记,所以构建的模型就是监督学习

 

享受运动与否是离散型函数,所以用到的研究方法就是分类

 

一文读懂机器学习的算法分类

 

再举个例子。

 

比如我们想研究下上海浦东新区的房价,可能影响因素包含:地铁距离、面积、学区、层高等。

 

样例 地铁距离
(㎞)
面积
(㎡)
学区
(1-10)
层高
(1-30)
房价
(万)
1 5 100 9 12 500
2 10 130 7 4 400
3 20 70 6 3 300
4 1 80 3 10 350
5 3 95 8 29 350

 

房价肯定是个连续的变量,这样的话,我们就要用到回归的方法。由于这里也有标记,所以采用监督学习。

 

一文读懂机器学习的算法分类

 

 

算法分类

 

有了上面的概念学习,下面针对不同的学习类型,分别介绍各类算法。

 

我们按照是否为监督学习展开。

 

1. 监督学习

 

监督学习,我们前面提到,训练集中有类别标记。但是根据标记分类不同,分为分类型监督学习和回归型监督学习。

 

标记类型不同,则研究方法不同。

 

1)分类

 

它的主要研究方法是分类。具体的算法分类包括:

 

  • 决策树(Decision Tree)
  • 临近取样(Dearest Deighbor)
  • 支持向量机(Support Vector Machine)
  • 神经网络算法(Neural Network)

     

决策树

 

决策树(Decision tree)也叫判定树,是一个类似于流程图的树结构。

 

其中,每个内部结点表示在一个属性上的测试,每个分支代表一个属性输出,而每个树叶结点代表类或类分布。树的最顶层是根结点。

 

决策树是研究分类方法的一个重要算法,其中用的最多的是决策树归纳算法 (ID3)

 

一文读懂机器学习的算法分类

决策树的优点:直观,便于理解,小规模数据集有效

决策树的缺点:处理连续变量不好;类别较多时,错误增加的比较快;可规模性一般

 

代表应用:银行系统自动评估系统

 

临近取样

 

邻近算法(Dearest Deighbor)是Cover和Hart在1968年提出了的,是分类(classification)算法的一种,典型特征:基于实例的学习(instance-based learning), 懒惰学习(lazy learning)。

 

一文读懂机器学习的算法分类

 

它的研究思路大致如下:

 

首先,为了判断未知实例的类别,以所有已知类别的实例作为参照;

 

然后,选择参数K;

 

接下来,计算未知实例与所有已知实例的距离;

 

然后,选择最近K个已知实例

 

最后,根据少数服从多数的投票法则(majority-voting),让未知实例归类为K个最邻近样本中最多数的类别。

 

算法优点:简单,易于理解,容易实现,通过对K的选择可具备丢噪音数据的健壮性。

算法缺点:需要大量空间储存所有已知实例,算法复杂度高(需要比较所有已知实例与要分类的实例)。

 

当其样本分布不平衡时,比如其中一类样本过大(实例数量过多)占主导的时候,新的未知实例容易被归类为这个主导样本,因为这类样本实例的数量过大,但这个新的未知实例实际并木接近目标样本。

 

 

支持向量机

 

支持向量机(Support Vector Machine),最早是由Vladimir N. Vapnik和Alexey Ya. Chervonenkis在1963年提出,目前的版本(soft margin)是由Corinna Cortes 和Vapnik在1993年提出,并在1995年发表。

 

深度学习(2012)出现之前,SVM被认为机器学习中近十几年来最成功,表现最好的算法。

 

一文读懂机器学习的算法分类

 

SVM算法的一般思路是,通过训练集提取特征向量,然后结合一定的算法(分类器:比如决策树,KNN),最终得到结果。

训练好的模型的算法复杂度是由支持向量的个数决定的,而不是由数据的维度决定的。

所以SVM不太容易产生overfitting,SVM训练出来的模型完全依赖于支持向量(Support Vectors),即使训练集里面所有非支持向量的点都被去除,重复训练过程,结果仍然会得到完全一样的模型。

一个SVM如果训练得出的支持向量个数比较小,SVM训练出的模型比较容易被泛化。

 

SVM算法的应用:图片中的红眼检测和结肠癌早晚期分类

 

一文读懂机器学习的算法分类

 

神经网络算法

 

神经网络算法(Neural Network),以人脑中的神经网络为启发,历史上出现过很多不同版本,最著名的算法是1980年的 backpropagation。

 

Backpropagation被使用在多层向前神经网络(Multilayer Feed-Forward Neural Network)上,多层向前神经网络由以下部分组成:

输入层(input layer), 
隐藏层 (hidden layers), 
输入层 (output layers)

 

一文读懂机器学习的算法分类

 

每层由单元(units)组成;

输入层(input layer)是由训练集的实例特征向量传入;
经过连接结点的权重(weight)传入下一层,一层的输出是下一层的输入;
隐藏层的个数可以是任意的,输入层有一层,输出层有一层;
每个单元(unit)也可以被称作神经结点,根据生物学来源定义;
以上成为2层的神经网络(输入层不算);
一层中加权的求和,然后根据非线性方程转化输出;
作为多层向前神经网络,理论上,如果有足够多的隐藏层(hidden layers) 和足够大的训练集, 可以模拟出任何方程。
神经网络算法的应用:手写数字识别和图片分类。

一文读懂机器学习的算法分类

 

2)回归

 

 

线性回归(Liner Regression)

 

简单线性回归(Simple Linear Regression),很多做决定过程通常是根据两个或者多个变量之间的关系。

 

回归分析(regression analysis)用来建立方程模拟两个或者多个变量之间如何关联。

 

被预测的变量叫做:因变量(dependent variable), y, 输出(output)。

 

被用来进行预测的变量叫做:自变量(independent variable), x, 输入(input)。

 

简单线性回归包含一个自变量(x)和一个因变量(y),以上两个变量的关系用一条直线来模拟,如果包含两个以上的自变量,则称作多元回归分析(multiple regression)。

 

一文读懂机器学习的算法分类

 

 

线性回归多数情况下变量都比较多,核心就是要构建多元回归模型,得到多元回归方程,然后估计多元回归方程,当然过程中还有误差的分布问题。

 

 

线性回归的应用:销量预测和价格预测

 

 

非线性回归(Non-liner Regression)

 

非线性回归,就是个概率的问题。概率(P)robability: 对一件事情发生的可能性的衡量。它的

计算方法: 根据个人置信,根据历史数据和根据模拟数据。

 

一文读懂机器学习的算法分类

非线性回归的应用:销量预测和价格预测

 

2. 非监督学习

 

用K-mean算法聚类(Clustering)

 

Clustering 中的经典算法,数据挖掘十大经典算法之一。

算法接受参数 k,然后将事先输入的n个数据对象划分为 k个聚类以便使得所获得的聚类满足:同一聚类中的对象相似度较高;而不同聚类中的对象相似度较小。

 

算法思想:

 

以空间中k个点为中心进行聚类,对最靠近他们的对象归类。通过迭代的方法,逐次更新各聚类中心的值,直至得到最好的聚类结果。

 

一文读懂机器学习的算法分类

 

算法描述:

 

  1. 适当选择c个类的初始中心;
  2. 在第k次迭代中,对任意一个样本,求其到c各中心的距离,将该样本归到距离最短的中心所在的类;
  3. 利用均值等方法更新该类的中心值;
  4. 对于所有的c个聚类中心,如果利用(2)(3)的迭代法更新后,值保持不变,则迭代结束,否则继续迭代。

 

K-mean算法的应用:人脸分类

 

 

用层次聚类算法

 

 

层次聚类算法(hierarchical clustering ),假设有N个待聚类的样本,对于层次聚类来说,步骤:

  • (初始化)把每个样本归为一类,计算每两个类之间的距离,也就是样本与样本之间的相似度;
  • 寻找各个类之间最近的两个类,把他们归为一类(这样类的总数就少了一个);
  • 重新计算新生成的这个类与各个旧类之间的相似度;
  • 重复2和3直到所有样本点都归为一类,结束

 

一文读懂机器学习的算法分类

 

层次聚类算法的应用:人脸噪音排除

 

 

总结

 

机器学习的算法分类总结:

 

监督学习    (分类) 决策树 银行系统自动评估系统
临近取样 人脸识别
支持向量机 图片中的红眼检测
结肠癌早晚期分类
神经网络算法 手写数字识别
图片分类
监督学习    (回归) 线性回归 销量预测
价格预测
非线性回归 销量预测
价格预测
非监督学习 用K-mean算法聚类 人脸分类
用层次算法 人脸噪音排除

weinxin
扫码关注公众号
关注公众号领精彩彩蛋!
机器学习和深度学习 汽车技术

机器学习和深度学习

机器学习 (Machine Learning, ML),是多领域交叉学科,涉及概率论、统计学、逼近论、凸分析、算法复杂度理论等多门学科。专门研究计算机怎样模拟或实现人类的学习行为,以获取新的知识或技能...

发表评论