最近有一个项目需要用多标签分类思想来建模,之前对这块不是太了解,查了一些论文,发现目前主流的算法包括ML-KNN、ML-DT、Rank-SVM、CML等,其中ML-KNN算法思想最简单,结合原始论文,本文大概介绍下算法思想和代码实现。
ML-KNN借鉴了KNN的思想寻找K个近邻样本,并运用贝叶斯条件概率,来计算当前标签为1和0的概率,概率大的标签定为样本最终的标签,这就是ML-KNN的大致思想。
伪代码如下:
1、第1到3行计算样本集中每个样本的K个最近邻。
2、第4到6行计算每个标签出现的概率
其中Hj表示标签j出现这一事件,m表示样本总数,s是平滑项,通常取1。Kj[r]数组表示当前标签为1并且K相邻样本中标签为1的个数为r的样本总数。表示当前样本K近邻中标签j为1的个数。
3、第8行计算未知样本的K近邻
4、第9、10行计算未知样本K近邻中标签j为1的个数