文章目录
- 前言
- 一、pandas是什么?
- 二、使用步骤
- 1.引入库
- 2.读入数据
- 总结
2.14 贝叶斯分类器
2.14.1 图解极大似然估计
极大似然估计的原理,用一张图片来说明,如下图所示:
例:有两个外形完全相同的箱子,1号箱有99只白球,1只黑球;2号箱子有1只白球,99只黑球。在一次实验中,取出的是黑球,请问从哪个箱子中取出的?
一般的根据经验想法,会猜测这只黑球最像是从2号箱取出,此时描述的“最像”就有“最大似然”的意思,这种想法常称为“最大似然原理”。
2.14.2 极大似然估计原理
总结起来,最大似然估计的目的就是:利用已知的样本结果,反推最有可能(最大概率)导致这样结果的参数值。
极大似然估计是建立在极大似然原理的基础上的一个统计方法。极大似然估计提供了一种给定观察数据来评估模型参数的方法,即:“模型已定,参数未知”。通过若干次试验,利用试验结果得到某个参数值能够使样本出现的概率为最大,则称为极大似然估计。
由于样本集中的样本都是独立同分布,可以只考虑一类样本集,来估计参数向量。记已知样本集为:,似然函数(likelihood function):联合概率密度函数称为相对于的的似然函数。如果是参数空间中能使似然函数最大的值,则应该是“最可能”的参数值,那么就是的极大似然估计量。它是样本集的函数,记作:。称为极大似然函数的估计值。
2.14.3 贝叶斯分类器基本原理
贝叶斯决策论通过相关概率已知的情况下利用误判损失来选择最优的类别分类。
假设有种可能的分类标记,记为:,那对于样本,它属于哪一类呢?
计算步骤如下:
step1:算出样本属于第个类的概率,即。
step2:通过比较所有的,得到样本所属的最佳类别。
step3:将类别和样本代入到贝叶斯公式,得到:。
一般来说,为先验概率,为条件概率,是用于归一化的证据因子。对于可以通过训练样本中类别为的样本所占的比例进行估计;此外,由于只需要找到最大的,因此我们并不需要计算。
为了求解条件概率,基于不同假设提出了不同的方法,以下将介绍朴素贝叶斯分类器和半朴素贝叶斯分类器。
2.14.4 朴素贝叶斯分类器
假设样本包含个属性,即。于是有:。这个联合概率难以从有限的训练样本中直接估计得到。于是,朴素贝叶斯(Naive Bayesian,简称NB)采用了“属性条件独立性假设”:对已知类别,假设所有属性相互独立。于是有:。这样的话,我们就可以很容易地推出相应的判定准则了:条件概率的求解。
如果是标签属性,那么我们可以通过计数的方法估计, 。其中,表示在训练样本中与共同出现的次数。
如果是数值属性,通常我们假设类别中的所有样本第个属性的值服从正态分布。我们首先估计这个分布的均值和方差,然后计算在这个分布中的概率密度。
2.14.5 举例理解朴素贝叶斯分类器
使用经典的西瓜训练集如下:
编号 | 色泽 | 根蒂 | 敲声 | 纹理 | 脐部 | 触感 | 密度 | 含糖率 | 好瓜 |
---|---|---|---|---|---|---|---|---|---|
1 | 青绿 | 蜷缩 | 浊响 | 清晰 | 凹陷 | 硬滑 | 0.697 | 0.460 | 是 |
2 | 乌黑 | 蜷缩 | 沉闷 | 清晰 | 凹陷 | 硬滑 | 0.774 | 0.376 | 是 |
3 | 乌黑 | 蜷缩 | 浊响 | 清晰 | 凹陷 | 硬滑 | 0.634 | 0.264 | 是 |
4 | 青绿 | 蜷缩 | 沉闷 | 清晰 | 凹陷 | 硬滑 | 0.608 | 0.318 | 是 |
5 | 浅白 | 蜷缩 | 浊响 | 清晰 | 凹陷 | 硬滑 | 0.556 | 0.215 | 是 |
6 | 青绿 | 稍蜷 | 浊响 | 清晰 | 稍凹 | 软粘 | 0.403 | 0.237 | 是 |
7 | 乌黑 | 稍蜷 | 浊响 | 稍糊 | 稍凹 | 软粘 | 0.481 | 0.149 | 是 |
8 | 乌黑 | 稍蜷 | 浊响 | 清晰 | 稍凹 | 硬滑 | 0.437 | 0.211 | 是 |
9 | 乌黑 | 稍蜷 | 沉闷 | 稍糊 | 稍凹 | 硬滑 | 0.666 | 0.091 | 否 |
10 | 青绿 | 硬挺 | 清脆 | 清晰 | 平坦 | 软粘 | 0.243 | 0.267 | 否 |
11 | 浅白 | 硬挺 | 清脆 | 模糊 | 平坦 | 硬滑 | 0.245 | 0.057 | 否 |
12 | 浅白 | 蜷缩 | 浊响 | 模糊 | 平坦 | 软粘 | 0.343 | 0.099 | 否 |
13 | 青绿 | 稍蜷 | 浊响 | 稍糊 | 凹陷 | 硬滑 | 0.639 | 0.161 | 否 |
14 | 浅白 | 稍蜷 | 沉闷 | 稍糊 | 凹陷 | 硬滑 | 0.657 | 0.198 | 否 |
15 | 乌黑 | 稍蜷 | 浊响 | 清晰 | 稍凹 | 软粘 | 0.360 | 0.370 | 否 |
16 | 浅白 | 蜷缩 | 浊响 | 模糊 | 平坦 | 硬滑 | 0.593 | 0.042 | 否 |
17 | 青绿 | 蜷缩 | 沉闷 | 稍糊 | 稍凹 | 硬滑 | 0.719 | 0.103 | 否 |
对下面的测试例“测1”进行 分类:
编号 | 色泽 | 根蒂 | 敲声 | 纹理 | 脐部 | 触感 | 密度 | 含糖率 | 好瓜 |
---|---|---|---|---|---|---|---|---|---|
测1 | 青绿 | 蜷缩 | 浊响 | 清晰 | 凹陷 | 硬滑 | 0.697 | 0.460 | ? |
首先,估计类先验概率,有:
然后,为每个属性估计条件概率(这里,对于连续属性,假定它们服从正态分布):
于是有:
由于,因此,朴素贝叶斯分类器将测试样本“测1”判别为“好瓜”。
2.14.6 半朴素贝叶斯分类器
朴素贝叶斯采用了“属性条件独立性假设”,半朴素贝叶斯分类器的基本想法是适当考虑一部分属性间的相互依赖信息。独依赖估计(One-Dependence Estimator,简称ODE)是半朴素贝叶斯分类器最常用的一种策略。
顾名思义,独依赖是假设每个属性在类别之外最多依赖一个其他属性,即:
其中为属性所依赖的属性,成为的父属性。假设父属性已知,那么可以使用下面的公式估计,。
2.15 EM 算法
2.15.1 EM算法基本思想
最大期望算法(Expectation-Maximization algorithm, EM),是一类通过迭代进行极大似然估计的优化算法,通常作为牛顿迭代法的替代,用于对包含隐变量或缺失数据的概率模型进行参数估计。
最大期望算法基本思想是经过两个步骤交替进行计算:
第一步是计算期望(E),利用对隐藏变量的现有估计值,计算其最大似然估计值;
第二步是最大化(M),最大化在E步上求得的最大似然值来计算参数的值。
M步上找到的参数估计值被用于下一个E步计算中,这个过程不断交替进行。
2.15.2 EM算法推导
对于个样本观察数据,现在想找出样本的模型参数,其极大化模型分布的对数似然函数为:。 如果得到的观察数据有未观察到的隐含数据,极大化模型分布的对数似然函数则为:
由于上式不能直接求出,采用缩放技巧:
上式用到了Jensen不等式: ,并且引入了一个未知的新分布。
此时,如果需要满足Jensen不等式中的等号,所以有: ,c为常数。
由于是一个分布,所以满足 综上,可得:
如果 ,则第(1)式是我们的包含隐藏数据的对数似然的一个下界。如果我们能极大化这个下界,则也在尝试极大化我们的对数似然。即我们需要最大化下式:
简化得:
以上即为EM算法的M步,,可理解为,基于条件概率分布的期望。以上即为EM算法中E步和M步的具体数学含义。
2.15.3 图解EM算法
考虑上一节中的(a)式,表达式中存在隐变量,直接找到参数估计比较困难,通过EM算法迭代求解下界的最大值到收敛为止。
图片中的紫色部分是我们的目标模型,该模型复杂,难以求解析解,为了消除隐变量的影响,我们可以选择一个不包含的模型,使其满足条件。
求解步骤如下:
(1)选取,使得,然后对此时的求取最大值,得到极值点,实现参数的更新。
(2)重复以上过程到收敛为止,在更新过程中始终满足。
2.15.4 EM算法流程
输入:观察数据,联合分布,条件分布,最大迭代次数。
1)随机初始化模型参数的初值。
2):
a) E步。计算联合分布的条件概率期望:
b) M步。极大化,得到:
c) 如果收敛,则算法结束。否则继续回到步骤a)进行E步迭代。
2.16 降维聚类
2.16.1 图解为什么会产生维数灾难
假如数据集包含10张照片,照片中包含三角形和圆两种形状。现在来设计一个分类器进行训练,让这个分类器对其他的照片进行正确分类(假设三角形和圆的总数是无限大),简单的,我们用一个特征进行分类:
图2.21.1.a
从上图可看到,如果仅仅只有一个特征进行分类,三角形和圆几乎是均匀分布在这条线段上,很难将10张照片线性分类。那么,增加一个特征后的情况会怎么样:
图2.21.1.b
增加一个特征后,我们发现仍然无法找到一条直线将猫和狗分开。所以,考虑需要再增加一个特征:
图2.21.1.c
此时,可以找到一个平面将三角形和圆分开。
现在计算一下不同特征数是样本的密度:
(1)一个特征时,假设特征空间时长度为5的线段,则样本密度为。
(2)两个特征时,特征空间大小为,样本密度为。
(3)三个特征时,特征空间大小是,样本密度为。
以此类推,如果继续增加特征数量,样本密度会越来越稀疏,此时,更容易找到一个超平面将训练样本分开。当特征数量增长至无限大时,样本密度就变得非常稀疏。
下面看一下将高维空间的分类结果映射到低维空间时,会出现什么情况?
图2.21.1.e
上图是将三维特征空间映射到二维特征空间后的结果。尽管在高维特征空间时训练样本线性可分,但是映射到低维空间后,结果正好相反。事实上,增加特征数量使得高维空间线性可分,相当于在低维空间内训练一个复杂的非线性分类器。不过,这个非线性分类器太过“聪明”,仅仅学到了一些特例。如果将其用来辨别那些未曾出现在训练样本中的测试样本时,通常结果不太理想,会造成过拟合问题。
图2.21.1.f
上图所示的只采用2个特征的线性分类器分错了一些训练样本,准确率似乎没有图2.21.1.e的高,但是,采用2个特征的线性分类器的泛化能力比采用3个特征的线性分类器要强。因为,采用2个特征的线性分类器学习到的不只是特例,而是一个整体趋势,对于那些未曾出现过的样本也可以比较好地辨别开来。换句话说,通过减少特征数量,可以避免出现过拟合问题,从而避免“维数灾难”。
上图从另一个角度诠释了“维数灾难”。假设只有一个特征时,特征的值域是0到1,每一个三角形和圆的特征值都是唯一的。如果我们希望训练样本覆盖特征值值域的20%,那么就需要三角形和圆总数的20%。我们增加一个特征后,为了继续覆盖特征值值域的20%就需要三角形和圆总数的45%(0.4522≈0.2)。继续增加一个特征后,需要三角形和圆总数的58%(0.5833≈0.2)。随着特征数量的增加,为了覆盖特征值值域的20%,就需要更多的训练样本。如果没有足够的训练样本,就可能会出现过拟合问题。
通过上述例子,我们可以看到特征数量越多,训练样本就会越稀疏,分类器的参数估计就会越不准确,更加容易出现过拟合问题。“维数灾难”的另一个影响是训练样本的稀疏性并不是均匀分布的。处于中心位置的训练样本比四周的训练样本更加稀疏。
假设有一个二维特征空间,如上图所示的矩形,在矩形内部有一个内切的圆形。由于越接近圆心的样本越稀疏,因此,相比于圆形内的样本,那些位于矩形四角的样本更加难以分类。当维数变大时,特征超空间的容量不变,但单位圆的容量会趋于0,在高维空间中,大多数训练数据驻留在特征超空间的角落。散落在角落的数据要比处于中心的数据难于分类。
2.16.2 怎样避免维数灾难
有待完善!!!
解决维度灾难问题:
主成分分析法PCA,线性判别法LDA
奇异值分解简化数据、拉普拉斯特征映射
Lassio缩减系数法、小波分析法、
2.16.3 聚类和降维有什么区别和联系
聚类用于寻找数据内在的分布结构,既可以作为一个单独的过程,比如异常检测等等。也可作为分类等其他学习任务的前驱过程。聚类是标准的无监督学习。
1)在一些推荐系统中需要确定新用户的类型,但定义“用户类型”却可能不太容易,此时往往可先对原有的用户数据进行聚类,根据聚类结果将每个簇定义为一个类,然后再基于这些类训练分类模型,用于判断新用户的类型。
2)而降维是为了缓解维数灾难的一个重要方法,就是通过某种数学变换将原始高维属性空间转变为一个低维“子空间”。其基于的假设就是,虽然人们平时观测到的数据样本虽然是高维的,但是实际上真正与学习任务相关的是个低纬度的分布。从而通过最主要的几个特征维度就可以实现对数据的描述,对于后续的分类很有帮助。比如对于Kaggle(数据分析竞赛平台之一)上的泰坦尼克号生还问题。通过给定一个乘客的许多特征如年龄、姓名、性别、票价等,来判断其是否能在海滩中生还。这就需要首先进行特征筛选,从而能够找出主要的特征,让学习到的模型有更好的泛化性。
聚类和降维都可以作为分类等问题的预处理步骤。
但是他们虽然都能实现对数据的约减。但是二者适用的对象不同,聚类针对的是数据点,而降维则是对于数据的特征。另外它们有着很多种实现方法。聚类中常用的有K-means、层次聚类、基于密度的聚类等;降维中常用的则PCA、Isomap、LLE等。
2.16.4 有哪些聚类算法优劣衡量标准
不同聚类算法有不同的优劣和不同的适用条件。可从以下方面进行衡量判断:
1、算法的处理能力:处理大的数据集的能力,即算法复杂度;处理数据噪声的能力;处理任意形状,包括有间隙的嵌套的数据的能力;
2、算法是否需要预设条件:是否需要预先知道聚类个数,是否需要用户给出领域知识;
3、算法的数据输入属性:算法处理的结果与数据输入的顺序是否相关,也就是说算法是否独立于数据输入顺序;算法处理有很多属性数据的能力,也就是对数据维数是否敏感,对数据的类型有无要求。
2.16.5 聚类和分类有什么区别
聚类(Clustering)
聚类,简单地说就是把相似的东西分到一组,聚类的时候,我们并不关心某一类是什么,我们需要实现的目标只是把相似的东西聚到一起。一个聚类算法通常只需要知道如何计算相似度就可以开始工作了,因此聚类通常并不需要使用训练数据进行学习,在机器学习中属于无监督学习。
分类(Classification)
分类,对于一个分类器,通常需要你告诉它“这个东西被分为某某类”。一般情况下,一个分类器会从它得到的训练集中进行学习,从而具备对未知数据进行分类的能力,在机器学习中属于监督学习。
2.16.6 不同聚类算法特点性能比较
算法名称 | 可伸缩性 | 适合的数据类型 | 高维性 | 异常数据抗干扰性 | 聚类形状 | 算法效率 |
---|---|---|---|---|---|---|
WAVECLUSTER | 很高 | 数值型 | 很高 | 较高 | 任意形状 | 很高 |
ROCK | 很高 | 混合型 | 很高 | 很高 | 任意形状 | 一般 |
BIRCH | 较高 | 数值型 | 较低 | 较低 | 球形 | 很高 |
CURE | 较高 | 数值型 | 一般 | 很高 | 任意形状 | 较高 |
K-PROTOTYPES | 一般 | 混合型 | 较低 | 较低 | 任意形状 | 一般 |
DENCLUE | 较低 | 数值型 | 较高 | 一般 | 任意形状 | 较高 |
OPTIGRID | 一般 | 数值型 | 较高 | 一般 | 任意形状 | 一般 |
CLIQUE | 较高 | 数值型 | 较高 | 较高 | 任意形状 | 较低 |
DBSCAN | 一般 | 数值型 | 较低 | 较高 | 任意形状 | 一般 |
CLARANS | 较低 | 数值型 | 较低 | 较高 | 球形 | 较低 |
2.16.7 四种常见的聚类方法之比较
聚类就是按照某个特定标准把一个数据集分割成不同的类或簇,使得同一个簇内的数据对象的相似性尽可能大,同时不在同一个簇中的数据对象的差异性也尽可能地大。即聚类后同一类的数据尽可能聚集到一起,不同类数据尽量分离。
主要的聚类算法可以划分为如下几类:划分方法、层次方法、基于密度的方法、基于网格的方法以及基于模型的方法。
下面主要对k-means聚类算法、凝聚型层次聚类算法、神经网络聚类算法之SOM,以及模糊聚类的FCM算法通过通用测试数据集进行聚类效果的比较和分析。
2.16.8 k-means聚类算法
k-means是划分方法中较经典的聚类算法之一。由于该算法的效率高,所以在对大规模数据进行聚类时被广泛应用。目前,许多算法均围绕着该算法进行扩展和改进。 k-means算法以k为参数,把n个对象分成k个簇,使簇内具有较高的相似度,而簇间的相似度较低。
k-means算法的处理过程如下:首先,随机地 选择k个对象,每个对象初始地代表了一个簇的平均值或中心;对剩余的每个对象,根据其与各簇中心的距离,将它赋给最近的簇;然后重新计算每个簇的平均值。 这个过程不断重复,直到准则函数收敛。通常,采用平方误差准则,其定义如下:
这里E是数据中所有对象的平方误差的总和,p是空间中的点,是簇的平均值[9]。该目标函数使生成的簇尽可能紧凑独立,使用的距离度量是欧几里得距离,当然也可以用其他距离度量。
算法流程:
输入:包含n个对象的数据和簇的数目k;
输出:n个对象到k个簇,使平方误差准则最小。
步骤:
(1) 任意选择k个对象作为初始的簇中心;
(2) 根据簇中对象的平均值,将每个对象(重新)赋予最类似的簇;
(3) 更新簇的平均值,即计算每个簇中对象的平均值;
(4) 重复步骤(2)、(3)直到簇中心不再变化;
2.16.9 层次聚类算法
根据层次分解的顺序是自底向上的还是自上向下的,层次聚类算法分为凝聚的层次聚类算法和分裂的层次聚类算法。
凝聚型层次聚类的策略是先将每个对象作为一个簇,然后合并这些原子簇为越来越大的簇,直到所有对象都在一个簇中,或者某个终结条件被满足。绝大多数层次聚类属于凝聚型层次聚类,它们只是在簇间相似度的定义上有所不同。
算法流程:
注:以采用最小距离的凝聚层次聚类算法为例:
(1)将每个对象看作一类,计算两两之间的最小距离;
(2)将距离最小的两个类合并成一个新类;
(3)重新计算新类与所有类之间的距离;
(4)重复(2)、(3),直到所有类最后合并成一类。
2.16.10 SOM聚类算法
SOM神经网络[11]是由芬兰神经网络专家Kohonen教授提出的,该算法假设在输入对象中存在一些拓扑结构或顺序,可以实现从输入空间(n维)到输出平面(2维)的降维映射,其映射具有拓扑特征保持性质,与实际的大脑处理有很强的理论联系。
SOM网络包含输入层和输出层。输入层对应一个高维的输入向量,输出层由一系列组织在2维网格上的有序节点构成,输入节点与输出节点通过权重向量连接。 学习过程中,找到与之距离最短的输出层单元,即获胜单元,对其更新。同时,将邻近区域的权值更新,使输出节点保持输入向量的拓扑特征。
算法流程:
(1) 网络初始化,对输出层每个节点权重赋初值;
(2) 从输入样本中随机选取输入向量并且归一化,找到与输入向量距离最小的权重向量;
(3) 定义获胜单元,在获胜单元的邻近区域调整权重使其向输入向量靠拢;
(4) 提供新样本、进行训练;
(5) 收缩邻域半径、减小学习率、重复,直到小于允许值,输出聚类结果。
2.16.11 FCM聚类算法
1965年美国加州大学柏克莱分校的扎德教授第一次提出了‘集合’的概念。经过十多年的发展,模糊集合理论渐渐被应用到各个实际应用方面。为克服非此即彼的分类缺点,出现了以模糊集合论为数学基础的聚类分析。用模糊数学的方法进行聚类分析,就是模糊聚类分析[12]。
FCM算法是一种以隶属度来确定每个数据点属于某个聚类程度的算法。该聚类算法是传统硬聚类算法的一种改进。
设数据集,它的模糊划分可用模糊矩阵表示,矩阵的元素表示第个数据点属于第类的隶属度,满足如下条件:
目前被广泛使用的聚类准则是取类内加权误差平方和的极小值。即:
其中为聚类中心,为加权指数,。
算法流程:
(1) 标准化数据矩阵;
(2) 建立模糊相似矩阵,初始化隶属矩阵;
(3) 算法开始迭代,直到目标函数收敛到极小值;
(4) 根据迭代结果,由最后的隶属矩阵确定数据所属的类,显示最后的聚类结果。
2.16.12 四种聚类算法试验
选取专门用于测试分类、聚类算法的国际通用的UCI数据库中的IRIS数据集,IRIS数据集包含150个样本数据,分别取自三种不同 的莺尾属植物setosa、versicolor和virginica的花朵样本,每个数据含有4个属性,即萼片长度、萼片宽度、花瓣长度、花瓣宽度,单位为cm。 在数据集上执行不同的聚类算法,可以得到不同精度的聚类结果。基于前面描述的各算法原理及流程,可初步得如下聚类结果。
聚类方法 | 聚错样本数 | 运行时间/s | 平均准确率/(%) |
---|---|---|---|
K-means | 17 | 0.146001 | 89 |
层次聚类 | 51 | 0.128744 | 66 |
SOM | 22 | 5.267283 | 86 |
FCM | 12 | 0.470417 | 92 |
注:
(1) 聚错样本数:总的聚错的样本数,即各类中聚错的样本数的和;
(2) 运行时间:即聚类整个过程所耗费的时间,单位为s;
(3) 平均准确度:设原有数据集有k个类,用c_i表示第i类,n_i为c_i中样本的个数,m_i为聚类正确的个数,则m_i/n_i为第i类中的精度,则平均精度为:avg=\frac{1}{k}\sum_{i=1}^{k}\frac{m_{i}}{n_{i}}。
参考文献
[1] Goodfellow I, Bengio Y, Courville A. Deep learning[M]. MIT press, 2016.
[2] 周志华. 机器学习[M].清华大学出版社, 2016.
[3] Michael A. Nielsen. "Neural Networks and Deep Learning", Determination Press, 2015.
[4] Suryansh S. Gradient Descent: All You Need to Know, 2018.
[5] 刘建平. 梯度下降小结,EM算法的推导, 2018
[6] 杨小兵.聚类分析中若干关键技术的研究[D]. 杭州:浙江大学, 2005.
[7] XU Rui, Donald Wunsch 1 1. survey of clustering algorithm[J].IEEE.Transactions on Neural Networks, 2005, 16(3):645-67 8.
[8] YI Hong, SAM K. Learning assignment order of instances for the constrained k-means clustering algorithm[J].IEEE Transactions on Systems, Man, and Cybernetics, Part B:Cybernetics,2009,39 (2):568-574.
[9] 贺玲, 吴玲达, 蔡益朝.数据挖掘中的聚类算法综述[J].计算机应用研究, 2007, 24(1):10-13.
[10] 孙吉贵, 刘杰, 赵连宇.聚类算法研究[J].软件学报, 2008, 19(1):48-61.
[11] 孔英会, 苑津莎, 张铁峰等.基于数据流管理技术的配变负荷分类方法研究.中国国际供电会议, CICED2006.
[12] 马晓艳, 唐雁.层次聚类算法研究[J].计算机科学, 2008, 34(7):34-36.
[13] FISHER R A. Iris Plants Database https://www.ics.uci.edu/vmlearn/MLRepository.html, Authorized license.
[14] Quinlan J R. Induction of decision trees[J]. Machine learning, 1986, 1(1): 81-106.
[15] Breiman L. Random forests[J]. Machine learning, 2001, 45(1): 5-32.