300 likes | 587 Views
KNN 多类标算法. M.-L. Zhang and Z.-H. Zhou . ML-kNN: A lazy learning approach to multi-label learning . Pattern Recognition , 2007, 40(7): 2038-2048.
E N D
KNN多类标算法 M.-L. Zhang and Z.-H. Zhou. ML-kNN: A lazy learning approach to multi-label learning. Pattern Recognition, 2007, 40(7): 2038-2048. E. Spyromitros, G. Tsoumakas, I. Vlahavas, “An Empirical Study of Lazy Multilabel Classification Algorithms”, Proc. 5th Hellenic Conference on Artificial Intelligence (SETN 2008), Springer, Syros, Greece, 2008. Multilabel classification via calibrated label rankingJohannes Fürnkranz · Eyke Hüllermeier ·Eneldo Loza Mencía · Klaus BrinkerReceived: 1 February 2007 / Revised: 21 April 2008 / Accepted: 12 June 2008 /Published online: 6 August 2008 Springer Science+Business Media, LLC 2008
文章组织 • 首先介绍多类标分类问题的算法转化方法的一种:MLKNN • 然后介绍多类标分类问题的问题转化方法的: BRKNN, LPKNN,CLR。 • 两类方法的普遍共识: • 问题转化方法: • 忽略类标关联 • 模型数量多 • 需要数据预处理 • 低效 • 算法转化方法: • 采用类标关联 • 单个模型 • 不需要或有限的预处理 • 高效
MLKNN • 介绍一下标记: • 单个样例表示为x ,x的类标号集合为Y,yx为x的类别向量, yx的第l个分量yx(l)在 时为1,否则为0. • N(x):表示训练数据集中x的k个邻居的标记. • Cx(l) :表示x的k近邻中第l个类标为1的个数: • :
MLKNN • 对于测试样例t,预测yt(l).首先计算t在训练样例集中的k个邻居(N(t)),Ct(l)表示t的k个邻居中第l个类标分量为1的个数,而 表示在t的k个邻居中恰好有Ct(l)个邻居的第l个类标分量为1的事件,方便我们用概率的形式处理。 (1) • 上式就可以求出测试样例t的第l个类标分量的值,也可以看出MLKNN算法的关键步骤:怎样求出(1)。
MLKNN • 利用贝叶斯法则: • 可以推出上页(1)式可变为: • 经过上面的转化和化简,KNN算法就可以用来处理多类标数据了.
MLKNN • 是训练数据集的先验信息,是一个1×|Y|的矩阵。 • 计算后验概率 。 这里有一个s需要解释:s是一个平滑参数用于控制统一的先验(uniform prior), s设为1来服从拉普拉斯smoothing。
MLKNN • 测试过程: • 当新来一个测试样例t时,进行如下操作:
C[]0 1 2 3 0 3 2 1 P(E|Hl1)0.1 0.4 0.3 0.2 C’[]0 1 2 3 0 2 2 0 P(E|Hl0) ¼ 3/8 3/8 ¼ MLKNN P(Elj|Hl1) 0.1 0.4 0.3 0.2 … P(Elj|Hl0) ¼ 3/8 3/8 ¼ … 大小为|Y|×(k+1)
MLKNN 新来一个测试样例t: 2,0,3,1,0 找到训练样例集中它的三个邻居:3,9,10。 计算对于类标分量l的Ctl(l):1,2,2. 对照左边的概率表得到:yt(l) P(Elj|Hl1) 0.1 0.4 0.3 0.2 … P(Elj|Hl1) ¼ 3/8 3/8 ¼ …
MLKNN • 使用的度量方法: • Hamming Loss: • One-error: 文章中是这样解释的: 对于一个测试样例xi,以及向对应的类标集合Yi,好的分类器对于属于Yi的输出应该大于其他的不属于Yi的输出: f(xi,ya)>f(xi,yb), ya属于Yi,yb不属于Yi
MLKNN 文章中解释: 如果: f(xi,ya)>f(xi,yb), rankf(xi,ya)<rankf(xi,yb), ya属于Yi,yb不属于Yi • 度量方法: • Coverage: • Ranking Loss: 但是rankf的输出值是怎样定义的? 假设测试实例(xi,Y),Y=(0,1,1,1) 分类器对于xi的输出为(0.5,0.2,0.6,0.7) Yi表示后三个类标{2,3,4}的集合 根据分类器的输出排序{4,3,1,2} {0.7,0.6,0.5,0.2} 分别标上递增的值{1,2,3,4} 一一对应后得到Yi{2,3,4}对应的rankf值为{4,2,1},取最大的值4
MLKNN • 度量方法: • Average Precision: 本度量方法只计算属于Yi的类标的预测值的排序情况上面的式子还可以变成:
MLKNN • 数据集统计信息: • Label cardinality:数据集中每个样例的平均类标号个数: • Label Density:数据集中每个样例的每个样例的平均类标号个数: (m为数据集样例数量,q为总类别数量,Yi为第i个样例的类标集)
MLKNN • 常用数据集介绍: (distinct表示数据集中互不相同的类标集的个数)
MLKNN • 实验结果:
BRKNN • BR是一种比较常见的多类标问题转化方法,它学习q(类标个数)个二分(binary)分类器,每个分类器对应不同的类标。它把原始数据集转化为q个数据集,每个数据集都包含原始数据集的所有样例。 • 文章中讲到的是BR方法与KNN分类算法的结合。 • BRKNN概念上等价于BR和KNN的简单连接,但是他们的简单结合的计算复杂度是KNN的|L|倍,为了避免,BRKNN像KNN一样独立预测每个类标,但是使用的是单步搜索,这样计算复杂度就和KNN持平了。 • BRKNN有两个基于对每个类标confidence scores的变形: • 类标的confidence:一个新样例x,它的K个最近邻的类标集合为 Yj,j=1…K, 类标r的confidence cr: 这个cr就是MLKNN中的Ctl(l),就是x变成t,l变成了r。
BRKNN • 第一个变形是BRKNN-a,它检查BRKNN对新的测试样例x是否输出空的类标集。也就是对每个类标来说x的K个邻居中至少有一半的邻居不包含这个类标,如果这种状况发生时BRKNN-a负责输出具有最大confidence的类标使x包含这个类标(输出为1)。 • 第二个变形为BRKNN-b,对于测试样例x,先计算它的K近邻的平均类标集合大小(Label cardinality ),得到s,然后输出confidence最高的s个类标为1。
LPKNN • LP:label powerset方法:把训练数据集中出现的不同的类标组合当做是单独的类标,把原始数据集转化成新的单类标数据集,然后可以用各种分类算法进行学习,它更像是一个框架。 • LP方法的优点是考虑到类标号之间的关联,得到这个优点的代价是出现更多的类别,导致不平衡的数据分布,以及更复杂的决策边界。 • LPKNN就是LP方法与KNN算法的结合。
LPKNN • 关于LP方法的组合方法:Random K-Labelsets • 把原问题的训练数据集的类标集合分成若干个类标子集,每个子集的大小都为k,若不足则添加一个类标,划分的方法可以为相交或不相交两种。 • 对每个类标子集训练一个LP学习器。 • 预测时,每个学习器分别预测,然后以投票的方式决定最终输出。 • 可以使用这种方法和LPKNN方法结合,来提高学习效果。
度量方法 • Hamming loss • Accuracy • Subset accuracy: • F-measure: (TPj+TNj)/ (TPj+FPj+ TNj+ FNj)
度量方法 • micro F-measure: • macro F-measure:
BRKNN,BRKNN-a,BRKNN-b • 实验结果:
BRKNN,LPKNN,MLKNN • 实验结果:
Calibrated label ranking(CLR) • 多类标ranking方法:加入一个虚拟类标,这个类别的角色是为类标集合ranking以后提供一个自然地断点,断点前面的为样例包含的类标,后面的为样例不包含的类标。 • 自然而然的,可以把这种方法和KNN算法结合(使用BR)。 • 在这之前先介绍一下多类标偏好学习问题(preference)
CLR 偏好学习 偏好 绝对偏好 相对偏好 binary Gradual(逐步) 全序偏好 偏序偏好 a,b,c,d 1,1,0,0 a,b, c,d .9, .8, .1, .3 a,b,c,d a > b > c >d a,b,c,d是类标序列
CLR 偏好学习 而CLR是绝对偏好和相对偏好的结合方法:训练时用binary+偏序,预测时用的是偏序偏好学习。以下是图示: 不相关的 相关的
Calibrated label ranking(CLR) • 先介绍一下label ranking: 一个训练样例包含一个x,和一个由许多成对标签组成的类标集合(pairwise preferences over labels)Rx,Rx属于L2,L为类标集合, • 多类标ranking: 我们学习一个模型来关联一个输入x和一个完整类标集 还有一个分割点,来把这个类标集分成两个集合,一个不相关的类标集Nx,和一个相关的类标集Px=L\Nx,这样样例信息就可以转化成为偏好集合: (preferences set)
Calibrated label ranking(CLR) • 校验类标号的引入 (虚拟类标) : 多类标分类问题的偏好集合表示 引入能分开P和N的校验类标
Calibrated label ranking(CLR) 偏好集合表示的一个校验类标ranking问题 (the set of preferences representing a calibrated label ranking problem) 直观上就是多类标ranking和校验类标的结合。
Calibrated label ranking(CLR) • 这个校验类标在学习和分类过程中是怎样操作的? • 文章中没有提到怎样选择这个校验类标,所以自己试了两种方案: • 一是统计每个样例的类标号个数,如果大于|Y|/2,这个类标就赋值为0,否则赋值为1. • 二是统计训练数据集的Label- cardinality,然后统计每个样例的类标个数,如果大于它,就给这个样例的校验类标赋值为0,否则赋值为1.