01 k-近邻算法(2)

来源:互联网 发布:app端口指的是什么 编辑:程序博客网 时间:2024/06/01 10:00

——论文笔记1-1

"基于K近邻的分类算法研究"


关键术语概念补充:

(此部分为直接引用,来源为[经验分享] 先验概率、似然函数与后验概率)

1.先验概率 — prior probability

在贝叶斯统计中,先验概率分布,即关于某个变量 p 的概率分布,是在获得某些信息或者依据前,对 p 的不确定性进行猜测。例如, p 可以是抢火车票开始时,抢到某一车次的概率。这是对不确定性(而不是随机性)赋予一个量化的数值的表征,这个量化数值可以是一个参数,或者是一个潜在的变量。

先验概率仅仅依赖于主观上的经验估计,也就是事先根据已有的知识的推断,

在应用贝叶斯理论时,通常将先验概率乘以似然函数(likelihoodfunction)再归一化后,得到后验概率分布,后验概率分布即在已知给定的数据后,对不确定性的条件分布。


2.似然函数 — likelihood function

也称作似然,是一个关于统计模型参数的函数。也就是这个函数中自变量是统计模型的参数。对于结果 x ,在参数集合 θ 上的似然,就是在给定这些参数值的基础上,观察到的结果的概率 L(θ|x)=P(x|θ) 。也就是说,似然是关于参数的函数,在参数给定的条件下,对于观察到的 x 的值的条件分布。

似然函数在统计推测中发挥重要的作用,因为它是关于统计参数的函数,所以可以用来评估一组统计的参数,也就是说在一组统计方案的参数中,可以用似然函数做筛选。在非正式的语境下,“似然”会和“概率”混着用;但是严格区分的话,在统计上,二者是有不同。

不同就在于,观察值 x 与参数 θ 的不同的角色。概率是用于描述一个函数,这个函数是在给定参数值的情况下的关于观察值的函数。例如,已知一个硬币是均匀的(在抛落中,正反面的概率相等),那连续10次正面朝上的概率是多少?这是个概率。

而似然是用于在给定一个观察值时,关于用于描述参数的情况。例如,如果一个硬币在10次抛落中正面均朝上,那硬币是均匀的(在抛落中,正反面的概率相等)概率是多少?这里用了概率这个词,但是实质上是“可能性”,也就是似然了。


3.后验概率 — posterior probability

后验概率是关于随机事件或者不确定性断言的条件概率,是在相关证据或者背景给定并纳入考虑之后的条件概率。后验概率分布就是未知量作为随机变量的概率分布,并且是在基于实验或者调查所获得的信息上的条件分布。“后验”在这里意思是,考虑相关事件已经被检视并且能够得到一些信息。

后验概率是关于参数 θ 在给定的证据信息 X 下的概率: p(θ|x) 。

若对比后验概率和似然函数,似然函数是在给定参数下的证据信息 X 的概率分布: p(x|θ) 。


4.条件概率 — Conditional probability

一个事件发生后另一个事件发生的概率。一般的形式为P(x|y)表示y发生的条件下x发生的概率。

贝叶斯公式:

P(y|x) = ( P(x|y) * P(y) ) / P(x)


5.实例

如果有一所学校,有60%是男生和40%是女生。女生穿裤子与裙子的数量相同;所有男生穿裤子。一个观察者,随机从远处看到一名学生,观察者只能看到该学生穿裤子。那么该学生是女生的概率是多少?这里题目中观察者比如近似眼看直接不清性别,或者从装扮上看不出。答案可以用贝叶斯定理来算。

用事件 G 表示观察到的学生是女生,用事件 T 表示观察到的学生穿裤子。于是,现在要计算 P(G|T) ,我们需要知道:

P(G) ,表示一个学生是女生的概率,这是在没有任何其他信息下的概率。这也就是我们说的先验概率。由于观察者随机看到一名学生,意味着所有的学生都可能被看到,女生在全体学生中的占比是 40% ,所以概率是 0.4 。

P(B) ,是学生不是女生的概率,也就是学生是男生的概率,也就是在没有其他任何信息的情况下,学生是男生的先验概率。 B 事件是 G 事件的互补的事件,这个比例是 60% ,也即 0.6 。

P(T|G) 是在女生中穿裤子的概率,根据题目描述,是相同的 0.5 。这也是 T 事件的概率,given G 事件。

P(T|B) 是在男生中穿裤子的概率,这个值是1。

P(T) 是学生穿裤子的概率,即任意选一个学生,在没有其他信息的情况下,TA穿裤子的概率。如果要计算的话,那可以计算出所有穿裤子的学生的数量,除以总数,总数可以假设为常数 C ,但是最后会被约去。或者根据全概率公式 P(T)=P(T|G)P(G)+P(T|B)P(B) 计算得到 P(T)=0.5×0.4+1×0.6=0.8 。

基于以上所有信息,如果观察到一个穿裤子的学生,并且是女生的概率是

P(G|T)=P(T|G)P(G)/P(T)=0.5×0.4/0.8=0.25.


基础KNN算法性能分析:

近邻方法是在一组历史数据记录中寻找一个或者若干个与当前记录最相似的历史纪录的已知特征值来预测当前记录的未知或遗失特征值。而KNN分类算法是根据待识样本在特征空间中 K个最近邻样本中的多数样本的类别来进行分类,因此具有直观、无需先验统计知识、无师学习等特点,从而成为非参数分类的一种重要方法。大多数分类方法是基于向量空间模型的。 当前在分类方法中,对任意两个向量存在3 种最通用的距离度量:欧氏距离、余弦距离和内积

有两种常用的分类策略:一种是计算待分类向量到所有训练集中的向量间的距离:如K 近邻选择K 个距离最小的向量然后进行综合,以决定其类别。另一种是用训练集中的向量构成类别向量,仅计算待分类向量到所有类别向量的距离,选择一个距离最小的类别向量决定类别的归属。很明显,距离计算在分类中起关键作用。由于以上3 种距离度量不涉及向量的特征之间的关系,这使得距离的计算不精确,从而影响分类的效果。
下面分
3 种情况说明:
①无用特征的影响:在分类算法的向量空间模型中,向量常常是多维的。所谓无用特征是指与类别无关的特征。也就是各个类别中均可以出现的特征,它不代表类别的特点
,必须要进行删除,否则他们将会导致距离的计算不准确,即向量间的距离远近将被无关特征的出现所影响。
②特征间关系的影响:我们认为如果不考虑特征间的关系,距离的计算同样会存在问题。例如在文本分类中,可分两种情况说明:一种是同义词的影响,另一种是具有某种语义关联词的影响。
③特征间地位不平等性的影响:特征对类别支持作用大小尽管可用权值大小来体现,但我们觉得还不够。存在一些特征对类别具有较强的支持作用(决策特征),它们的存在可以在很大程度上决定类别的归属。而在向量空间模型中,这种决策作用将被众多非决策特征的影响所淹没掉

其次对于
K 近邻算法中选取不同的K 值对分类结果有较大的影响,也就是说,不同的K 值直接决定分类结果的正确率

如上图所示,其中具有空心方格和实心圆圈两类数据,待测数据点(问号代表)如果采用1近邻则其所属类别应该是如图所示的属于方格类,如果采用3 近邻则属于圆圈类。所以说,采用怎样的K 近邻个数是分类结果正确与否的关键条件之一。

最后查找近邻的效率问题也是值得研究的一项内容。K 近邻分类算法需要进行全局搜索,计算的时间复杂度大,速度慢。当训练集数据量非常大时,寻找近邻就需要相应的提高效率算法,使得查找速度提高。目前已有的一些快速K 近邻分类算法,尽管在提高快速性方面作了一些改进,但是有的需要事先进行大量复杂的训练并且存在着收敛性问题,有的同样需要进行全局搜索并且对搜索顺序有较强的敏感性。


论文研究目标:

本论文主要针对 KNN 算法的计算速度慢,准确度不高的缺点进行改进,提出一种能在保持准确度的前提下减少搜索范围、有效提高算法速度的改进方法。
首先,针对
KNN 算法计算量大的缺点,目前提出较多的快速算法主要有分块和Voronoi图方法,但是速度的改善均不是很大。本文利用分块的策略,提出一种KNN与聚类算法相结合的改进算法,使得能够在对准确度影响不大的前提下提高算法的收敛速度。
其次,针对分类准确度的问题,构造新的相似性度量或特征权重型的距离度量,以达到提高分类的准确度的目的。
最后,可以尝试关于特征选择方面的研究,以达到能同时提高速度和准确度。


理论基础:

目前,有多种分类方法和算法,主要有统计方法、机器学习方法、神经网络方法等。分类算法一般分为Lazy Eager两种类型。 Lazy 学习算法思想是从局部出发,推迟对训练例子的归纳过程,直到一个新的测试例子出现,例如 K近邻(K Nearest Neighbor)算法、局部加权回归(Locally Weighted Regression)、基于案例的推理(Case-based Reasoning)等;而 Eager学习算法则是从全局出发,在新的测试例子出现之前,由训练例子总结归纳出相似判断的目标函数,这个目标函数应用于训练数据和测试数据,例如决策树(Decision Tree)、BPBack-Propagation)神经网络算法、径向基函数(Radial Basis Functions)、遗传分类方法、粗糙集分类方法等。
LazyEager 这两种分类方法有本质的不同。从计算时间的角度讲,Lazy 方法的训练阶段基本不需要计算时间,但是当一个新例子到来时就需要预测目标函数值,所以测试阶段的计算量比较大。而Eager方法则与之相反,训练阶段需要计算得到目标函数,所以训练阶段的计算量比较大; 从对新例子分类的角度讲,Lazy 方法总是当新例子到来时才开始预测, 而Eager方法在训练阶段就完成了对所有例子目标函数的建立。因此,它们的归纳偏好不同,Lazy 方法侧重当前具体例子具体分析,而Eager 方法在遇到测试例子之前就已经为其选择了对应的目标函数。这两种分类方法哪一种更具有概括性呢?假设在同样的假说空间中解决问题,Lazy 方法明显具有更丰富的假说空间,因为它可以选择多个局部相似的组合来表示目标函数;Eager 方法则在训练阶段必须确定一个全局相似。
现在广泛应用的基于统计的模型有向量空间模型、Naive Bayes 概率模型、实例映射模型和支持向量机模型。Naive Bayes 模型是基于两项假设之上的一种概率分类模型。支持向量机是一个用于解决模式识别问题的机器学习方法,它主要基于结构风险最小化原理。映射模型的主要思想是把分类问题转化为矩阵变换的问题。其中变换矩阵用奇异值分解的方法求得。但实例映射模型需要大量的良好代表性数据。相对于支持向量机模型,实例映射模型计算量大,分类速度慢且精度较低。向量空间模型(Vector Space Model.VSM)是由 G.Salton等人在 20 世纪60 年代提出的。它把文档分类简化为以项的权重为分量的向量表示,把分类过程简化为空间向量的运算,使得问题的复杂性大大减低。此外,向量空间模型对项的权重评价、相似度的计算都没有作统一的规定,只是提供了一个理论框架,可以使用不同的权重评价函数和相似度计算方法,使得此模型有广泛的适应性
基于实例的学习算法并不像上面介绍的决策树算法等分类算法一样建立明确的分类规则,而是直接存储训练样本,并没有在训练样本的基础上获取一个模拟输出函数。当一个测试样本点到来时,才开始计算训练样本与其的相似度,从而确定未知样本的分类。也就是说,基于实例的学习算法是对每一个测试样本点都创建相应不同的目标输出函数,这是与神经网络算法、决策树算法不同的思想。事实上,很多技术都对测试样本点的某一个近邻范围内创建局部模拟函数,而不是在整个训练样本空间创建测试样本的模拟输出函数。这种局部近似的优点是当目标函数比较复杂时,可以选择相对简单的局部模拟函数进行分类输出。但是基于实例的学习算法有一个明显的缺点是对每一个测试样本点分类的计算代价相对较高。这主要是因为算法把所有的计算都在一个测试样本点到来的时候开始的。另一个缺点是在寻求测试样本点与训练样本点的相似度的时侯,往往考虑了描述样本点的所有属性,如果不考虑所有属性而只参考一部分属性的话,两个样本点相似度将会有很大的变化
近邻算法是基于实例学习的分类算法中比较常用的一种方法。



原创粉丝点击