数据科学实战系列之ML-KNN(一)

写在开头:最近确实事情比较多,每天没有啥时间去学习其他的东西,也就没有时间来继续创作博客,不过最近学习了一些多标签分类的东西,并简单的实现了一下。

内容安排

对于多标签分类任务还有许多常见的方法比如ML-DT(决策树)、Rank-SVM等,由于ML-KNN沿袭KNN的思想比较容易上手,于是本文将对多标签分类任务中的ML-KNN算法进行简单的介绍,并通过代码进行实例操作,使用数据及为MULAN的eurlex-directory-codes(点击可下载)。

1.ML-KNN算法简介

ML-KNN的核心思想与KNN相似,即通过寻找K个最近的样本来判断当前测试样本类别,不过在ML-KNN中是运用贝叶斯条件概率,来计算当前测试样本标签是存在还是不存在,如果存在的概率大于不存在的概率,那么该标签存在。这里将论文的伪代码放过来,讲述思路借鉴基于ML-KNN的多标签分类算法,伪代码如下:
在这里插入图片描述其主要思想是单独观察样本的每个标签存在的概率,那么通过伪代码可以看到
Step1.(训练阶段第1到3行)利用knn算法计算出样本集中每个样本的K个最近邻;
Step2.(第4到6行)计算标签出现的概率、已经在K近邻中出现的次数统计,计算公式如下
在这里插入图片描述第一个式子表示的时某个标签在样本总体中存在的频率,其中, H j H_j Hj表示的是标签 j j j的出现, m m m表示的是样本总量,分子中的求和项表示的是存在标签 j j j的个数总计, s s s是拉普拉斯平滑项,避免某个标签计算出的概率为0,具体解释可以参考这篇文章:平滑处理-拉普拉斯。与之对应的第二个式子表示的则是某个标签在样本总体中不存在的频率。
在这里插入图片描述计算 κ j [ r ] \kappa_j[r] κj[r]表示的就是当前标签存在,并且当前样本的K近邻中标签 j j j存在数为 r r r的样本总数。也就是统计多少样本的K近邻在标签 j j j上出现 r r r次。其中 δ j ( x i ) \delta_j(x_i) δj(xi)就表示的是当前样本的K近邻中标签 j j j存在的个数。简单来说就是看总体情况下标签 j j j存在,那么其每个样本的KNN近邻存在次数的一个分布,反之 κ ~ j [ r ] \tilde{\kappa}_j[r] κ~j[r]就是计算当总体中标签 j j j不存在时,每个样本的K近邻在标签 j j j上的一个分布;
Step3.(预测阶段第8行)计算测试样本的K近邻;
Step4.(第9到11行)计算测试样本K近邻中标签 j j j为1的个数
在这里插入图片描述
Step5.(第12行)计算测试样本每个标签出现的概率,并进行判断,其计算公式如下,

  • 11
    点赞
  • 31
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值