ML-KNN(多标签分类)

ML-kNN 多标签k近邻算法 MLL Week 1


  学习张敏灵老师的《ML-kNN: a lazy learning approach to multi-label learning》的学习笔记。

传统kNN


  k近邻算法(k-Nearest Neighbour, KNN)是机器学习中最基础,最简单的常用算法之一。其思想非常直接:如果一个样本在特征空间中的k个最相似(即特征空间中距离最邻近)的样本中的大多数属于某一个类别,则该样本也属于这个类别。
  如下图的 Xu ,它最近的邻居中属于 ω1 的最多,因此他被归类于 ω1 类。
这里写图片描述
  这个思想很容易理解,就是俗话中常说的“近朱者赤,近墨者黑”。在单标签学习中,与一个实例在特征空间中越相近(即距离越近)的实例,他们之间标签相同的可能性就越大。

多标签kNN


  而在多标签问题中,我们仍可根据这个思想推导出多标签学习的kNN算法,即ML-kNN算法。
  多标签kNN的主要思想是对于每一个新实例(instance),距离它最近的k个实例(特征空间中与它的距离最小的k个实例)可以首先得到,然后得到这些实例的标签集合,之后通过最大后验概率准则来确定新实例的标签集合。


这里给出算法的具体数学计算方法:

变量定义:
k 为取最近邻个数
Y 为所有标签的集合,总标签个数可以定义为 n
l 为一个标签, lY
x 为一个实例
Yx 为实例 x 对应的标签集合, YxY
y⃗ x x 的标记向量,是一个 1×n 的行向量,它的元素 y⃗ x(l) 若为1,代表 lYx ,若为0,则 lYx
N(x) 记录 x k 个最近邻的索引


然后,我们可以得到对应 k 近邻实例的标签信息:

C⃗ x(l)=aN(x)y⃗ xa(l),lY

这里, C⃗ x 是一个 1×n 的行向量,它的元素 C⃗ x(l) 指的是对于标签 l x k 个近邻中有多少个近邻拥有这个标签。

则,对于新的实例 t ,首先得到其 k 个近邻索引集合 N(t) ,定义事件 Hl1 t 有标签 l ,事件 Hl0 t 无标签 l ,定义事件 Elj ( j{0,1,,k}) 为对于标签 l k 个近邻中有 j 个包含这个标签。则基于向量 C⃗ t ,可以通过最大后验概率准则和贝叶斯准则得到:

y⃗ t(l)=argmaxb{0,1}P(Hlb)P(ElC⃗ t(l)|Hlb)

其中, y⃗ t(l) 即为我们要求的结果,代表 t 实例是否有 l 标签。

本人注释:注意,这里的Elj 千万不要理解为针对实例t,而是针对整个数据集而言的,即任一数据点,其k近邻中有j个包含标签l这一事件,因此后边的条件概率就是在实例t的状态下
()


(此处状态就两种,即实例t包含标签l和不包含标签l),整个数据集中任一数据点,其k近邻中含l标签的有j个这一事件的概率.

因此上述式子本质上是个联合概率,参数是b,即实例t含l标签或者不含l标签,目标是实例t的状态和与t同一状态(指与t同含标签l或者同不含标签l)的任一的数据点k近邻中标签l数量与实例t相等这一事件的联合分布.

其实这个问题可以这样考虑,给定实例t,考察其是否含有标签l,假设其k近邻中含有标签l的有j个,那么我们就考察任抽一数据点其含有标签l&&其k近邻有j个含有标签l这个事件的概率P1,以及任抽一数据点其不含有标签l&&其k近邻有j个含有标签l这个事件的概率P2。若P1概率大,则我们认定实例t应含有标签l,否则实例t应不含有标签l.

Elj


其中 P(Hlb) 代表 t 是否有 l 标签的先验概率,可以用 l 标签在整个训练集上出现的次数除以标签总次数来求出。

P(Hl1)=mi=1y⃗ xi(l)m

本人注释:此处似乎有误,H右下标应为b,而不是1,虽然b要么是0要么是1.这里的先验概率实际上有两个值,分别对应b=0和b=1.


即样本中拥有 l 标签的向量数目除以向量总数。


后验概率 P(ElC⃗ t(l)|Hlb) 计算方法为:

P(ElC⃗ t(l)|Hl1)=c[j]kp=0c[p]

本人注释:上述公式有误,左边条件概率中H右下标应为b,所以这个后验概率实际上有两个值,分别对应b=0和b=1. P(Hlb)

其中 c[j] j 等于 C⃗ t(l) ,即 t k 近邻中有标签 l 的个数。

c[] 的意思是:若 xn k 近邻中有 l 标签的个数为 δ ,且 xn 有标签 l ,则 c[δ]+1 n{1,2,,m}

c[j] 代表的就是所有向量中,其 k 近邻有 j l 标签,且其自身也有 l 标签的向量的个数。

由此, kp=0c[p] 即为这个向量有 l 标签,其 k 近邻有 0m 个有 l 标签的情况的向量个数总和。

算出 P(Hlb)P(ElC⃗ t(l)|Hlb) 之后,我们只需看 b={0,1} 中哪种情况使得这个乘积值最大,若 b=1 时最大,则向量 t l 标签,反之则没有。


本文转载自:http://blog.csdn.net/Kodoo/article/details/49905877

P(Hlb)
  • 1
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值