- 对概率的基本概念有所了解;
- 具备微积分和线性代数的基础知识;
- 有一定的编程基础(有Python基础就更好了);
概念学习是指从有关某个布尔函数的输入输出训练样例中推断出该布尔函数
样例 | 天气 | 温度 | 湿度 | 风力 | 水温 | 预报 | 享受运动 |
1 | 晴 | 暖 | 普通 | 强 | 暖 | 一样 | 是 |
2 | 晴 | 暖 | 大 | 强 | 暖 | 一样 | 是 |
3 | 雨 | 冷 | 大 | 强 | 暖 | 变化 | 否 |
4 | 晴 | 暖 | 大 | 强 | 冷 | 变化 | 是 |
… | … | … | … | … | … | … | … |
50 | 雨 | 暖 | 大 | 弱 | 暖 | 一样 | 是 |
湿度:普通,大
风力:强,弱
水温:暖,冷
预报:一样,变化
享受运动:是,否
从上面这个例子,我们可以了解”概念学习“的概念,它本质就是一个布尔函数,包含享受运动和不享受运动两种情况,我们就是通过对布尔函数的输入输出样例中,来最终判断这个布尔函数。
标记(label): c(x), 实例类别的标记
标记包含正例(positive example)和反例(negative example)之分。
分类 (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)上,多层向前神经网络由以下部分组成:
每层由单元(units)组成;
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个点为中心进行聚类,对最靠近他们的对象归类。通过迭代的方法,逐次更新各聚类中心的值,直至得到最好的聚类结果。
算法描述:
-
适当选择c个类的初始中心; -
在第k次迭代中,对任意一个样本,求其到c各中心的距离,将该样本归到距离最短的中心所在的类; -
利用均值等方法更新该类的中心值; -
对于所有的c个聚类中心,如果利用(2)(3)的迭代法更新后,值保持不变,则迭代结束,否则继续迭代。
K-mean算法的应用:人脸分类
用层次聚类算法
层次聚类算法(hierarchical clustering ),假设有N个待聚类的样本,对于层次聚类来说,步骤:
-
(初始化)把每个样本归为一类,计算每两个类之间的距离,也就是样本与样本之间的相似度; -
寻找各个类之间最近的两个类,把他们归为一类(这样类的总数就少了一个); -
重新计算新生成的这个类与各个旧类之间的相似度; -
重复2和3直到所有样本点都归为一类,结束
层次聚类算法的应用:人脸噪音排除
总结
机器学习的算法分类总结:
监督学习 (分类) | 决策树 | 银行系统自动评估系统 |
临近取样 | 人脸识别 | |
支持向量机 | 图片中的红眼检测 结肠癌早晚期分类 |
|
神经网络算法 | 手写数字识别 图片分类 |
|
监督学习 (回归) | 线性回归 | 销量预测 价格预测 |
非线性回归 | 销量预测 价格预测 |
|
非监督学习 | 用K-mean算法聚类 | 人脸分类 |
用层次算法 | 人脸噪音排除 |