根据邵俊明老师的课件整理而成
监督学习和无监督学习
无监督的学习(关联规则,聚类分析)
- 数据集中对象的类标记(概念)是未知的
- 挖掘潜在的数据内部模式
监督学习(分类/预测)
- 数据集中对象的类标记已知
- 通过类标记的指导下学习数据中的模式
- 利用获取的模式或者模型对新数据进行分类预测
模型分类
生成模型(Generative Model)
- 希望从数据中学习/还原出原始的真实数据生成模型。
- 常见的方法是学习数据的联合概率分布。
- E.g 朴素贝叶斯方法、隐马尔科夫模型等
- 当容量大时,生成模型容易接近真实模型
- 能处理具有隐含变量的情景
判别模型 (Discriminative Model)
- 从数据中学习到不同类概念的区别从而进行分类。
- 如KNN,SVM, ANN, Decision Tree, etc.
- 速度快、准确率较高
对比分类和预测
- 分类和预测是监督学习中的两种主要类型
- 分类:
- 预测分类标号(或离散值)
- 根据训练数据集和类标号属性,构建模型来分类现有数据,并用来分类新数据
- 预测:
- 建立连续函数值模型,预测未来的情况、连续值或趋势,比如预测空缺值
- 回归分析、数值预测常常作为同义词混用
分类算法
决策树(Decision Tree)
- 类似于流程图的树结构
- 每个内部节点表示在一个属性上的测试
- 每个分枝代表该测试的输出
- 每个树叶节点代表类或类分布
决策归纳树算法
- 一个贪心算法
- 自顶向下的分治方式构造决策树
- 使用分类属性(如果是量化属性,则需先进行离散化)递归的通过选择相应的测试属性,来划分样本。
- 测试属性是根据某种启发信息或者是统计信息来进行选择(如:信息增益)
属性选择度量
- 又称分裂规则,决定给定节点上的元组如何分裂
- 具有最好度量得分的属性(对分出的数据类别越“纯”)选定为分裂属性
- 三种度量:信息增益、信息增益率、Gini指标
信息增益(ID3)
- 选择具有最高信息增益的属性
- 令 pi 为 D 中的任一元组属于类 Ci 概率, 估计为 Ci,D/D
- D 中元组分类需要的信息熵(entropy) : Info(D)=−∑mi=1pilog2(pi)
- (利用 A 分裂D 为v个部分后)分类D 需要的信息熵为: InfoA(D)=∑vj=1|DjD|⋅Info(Dj)
- 以属性A分枝得到的信息增益: Gain(A)=Info(D)−InfoA(D)
- 信息增益倾向于有大量不同取值的属性(划分更细,更纯)
- 每个划分子集只有一个样本,即一个类,此时 Info(D)=0
- 例子
增益率 (C4.5)
- C4.5(ID3 后继)使用增益率来规范化信息增益
SplitInfoA(D)=−∑vj=1|DjD|log2(|DjD|) - 具有最大增益率的属性选为分裂属性
Gini Index 指标 (CART)
- Gini 指数度量数据元组的不纯度
- 数据 D 包含n类别的样本, Gini(D)=1−∑nj=1p2j , pj 为类别 j 在D中的频率
- 数据集 D 基于属性A 分裂为子集 D1 和 D2 , GiniA(D)=|D1D|⋅Gini(D1)+|D2D|⋅Gini(D2)
- 具有最小 Ginisplit(D) 的属性(或不纯度减少最大的)用于分裂节点
过拟合(Overfitting)问题
- 为了得到一致假设而使假设变得过度复杂称为过拟合
- 分枝太多,某些反映训练数据中的异常,噪音或是孤立点
- 对未参与训练的样本的低精度预测
- 过拟合是监督学习中普遍存在的一个问题
- 因为训练样本只是真实模型下的一个抽样集,导致模型泛化能力不强
- 解决策略
- 增加样本集,去除噪声
- 降低模型复杂度
- Train-Validation-Test
- 模型选择:正则项等(e.g. VC维)
由决策树提取分类规则
- 可以提取决策树表示的知识,并以IF-THEN 形式的分类规则表示
- 对从根到树叶的每条路径创建一个规则
- 沿着给定路径上的每个属性-值对形成规则前件(”IF”部分)的一个合取项
- 叶节点包含类预测,形成规则后件(”THEN”部分)
- IF-THEN 规则易于理解,尤其树很大时
K近邻算法(K-Nearest Neighbor)
- 最初由Cover和Hart于1968年提出,是非参数法中最重要的方法之一。
- 思路简单直观,易于快速实现
- KNN算法以其实现的简单性及较高的分类准确性在中文文本自动分类等领域中得到了广泛应用
KNN的基本思想
- 根据距离函数计算待分类样本X和每个训练样本的距离(作为相似度),选择与待分类样本距离最小的K个样本作为X的K个最近邻,最后以X的K个最近邻中的大多数所属的类别作为X的类别
- 有一堆已分类的数据,当一个新数据进入的时候,跟训练数据里的每个点求距离,然后挑出离这个数据最近的K个点,看看这K个点属于什么类型,然后用少数服从多数的原则,给新数据归类
算法步骤
- 算距离:给定测试对象,计算它与训练集中的每个对象的距离
- 找邻居:圈定距离最近的k个训练对象,作为测试对象的近邻
- 做分类:根据这k个近邻归属的主要类别,来对测试对象分类
算法的优缺点
- 简单,易于理解,易于实现,无需估计参数,无需训练;
- 准确度一般较高
- 特别适合于多标签问题(multi-label, 对象具有多个类别标签),KNN 比SVM 的表现要好
- 对测试样本分类时的计算量大,内存开销大,评分慢
- 当样本不平衡时,如一个类的样本容量很大,而其他类样本容量很小时,有可能导致当输入一个新样本时,该样本的K个邻居中大容量类的样本占多数
- 可解释性较差,无法给出决策树那样的规则
常见问题
- K值设定
- 值选择过小,得到的近邻数过少,会降低分类精度,同时也会放大噪声数据的干扰;
- 而如果k值选择过大,并且待分类样本属于训练集中包含数据数较少的类,那么在选择k个近邻的时候,实际上并不相似的数据亦被包含进来,造成噪声增加而导致分类效果的降低
- 类别的判定方式
- 投票法没有考虑近邻的距离的远近,距离更近的近邻也许更应该决定最终的分类
- 加权投票法更恰当一些
- 距离度量方式
- 当变量数越多(高维),欧式距离的区分能力就越差
- 值域越大的变量常常会在距离计算中占据主导作用,因此应先对变量进行标准化
- 训练样本的参考原则
- 减少训练集的大小
- 通过聚类,将聚类所产生的中心点作为新的训练样本
- 性能问题
- KNN 是一种懒惰算法
- 构造模型很简单但在对测试样本分类地的系统开销大,因为要扫描全部训练样本并计算距离
- 可通过压缩训练样本量等方法提高计算的效率
朴素贝叶斯(Naïve Bayes)
- 待写
支持向量机(Support Vector Machine)
- 待写
人工神经网络(Artificial Neural Network)
- 待写
分类评价
分类器评价指标
- 准确度
- 误差率
- 精度
- 召回率
- 灵敏度
- 特效性
例子
真实类\预测类 | cancer = yes | cancer = no | total |
---|---|---|---|
cancer = yes | 90 | 210 | 300 |
cancer = no | 140 | 9560 | 9700 |
total | 230 | 9770 | 10000 |
- 准确率Accuracy = 9650/10000 = 96.5%
- 精度Precision = 90/230 = 39.13%
- 回召率Recall = 90/300 = 30.00%
- 灵敏度Sensitivity = 90/300 = 30%
- 特效性Specificity = 9650/9700 = 98.56%