美文网首页
基于协同训练的半监督文本分类算法

基于协同训练的半监督文本分类算法

作者: 炼己者 | 来源:发表于2018-10-20 00:03 被阅读317次

标签: 半监督学习,文本分类
作者:炼己者


本博客所有内容以学习、研究和分享为主,如需转载,请联系本人,标明作者和出处,并且是非商业用途,谢谢!


半监督学习文本分类系列

用半监督算法做文本分类(sklearn)
sklearn半监督学习
基于自训练的半监督文本分类算法


一. 摘要

本文主要讲述基于协同训练的半监督算法做文本分类,用三个差异性比较大的分类器对未标注数据进行标注,它们可以进行交叉验证,大大提升了对未标注数据标记的置信度(简单理解就是三个分类器同时对一个未标注数据标记一样的标签,那么这个标签就可信了),从而提高分类器标注的准确率

二. 操作流程

1. 文本预处理

这里就不再赘述,参考这篇文章:中文文本预处理流程
这上面的流程很完整,而且有代码,你只需要按着那个操作来即可

2. 协同训练的操作方法

操作思路:

  1. 数据data平均分成三份data1,data2,data3(也就是把上面操作之后得到的文本向量均分成三份)
  2. 写一个函数:包含三个分类算法。就是构建三个差异性较大的分类器,我采用的是SVM,贝叶斯,xgboost三种算法。
  3. 用data1训练SVM分类器,用data2训练贝叶斯分类器,用data3训练xgboost分类器。这样我们就得到了三个初步训练好的分类器。
  4. 接下来就是对剩下的所有未标注数据进行操作了,未标注数据一条一条过
    操作思路:假设有10条未标注数据,第一条取出来了,三个分类器对它进行预测。有以下三种可能:
  • 如果大家预测的都一样,那就把它连同预测的标签加入到总的训练集data里。
  • 如果有两个预测的一样,另外一个分类器预测的不一样,比如SVM和贝叶斯预测的一样,xgboost的不一样,就把它们俩的标注结果放到data3里,然后再让xgboost对更新的data3进行训练。
  • 如果大家都预测的不一样,就把它放回未标注数据中

这样操作的目的就是为了不断地训练三个分类器,让它们最终对未标注数据预测的结果一样。这样一条一条未标注数据地过,直到未标注数据为空,最终过完。

3. 测试结果

我选了5000条数据进行预测。

测试的操作流程

  1. 把测试数据用同样的方法转化成文本向量
  2. 上面训练过程中会保存模型,怎么操作可以看这篇文章 :
    如何保存sklearn训练好的算法模型
  3. 你把所有的模型都保存到一个目录下了,那么我们进行预测的时候怎么批量地读取这些模型呢?简单地说就是怎么把目录下所有的文件的文件名读取到一个列表上。看这里—— python如何获取目录下的所有文件名
  4. 读取模型,调用sklearn里的函数计算精度。因为保存的模型太多了,我是每种模型取100个左右,做测试,然后画折线图,看看精度的变化情况。

先放图,看结果

1)这是svm的结果,我们发现训练到后面,模型的效果在降低

svm

2)这是bayes的结果,一开始有点诡异,但后面趋于稳定

bayes

3)这是xgboost的结果,很鬼畜,不知道为什么会如此波动

xgboost

从模型效果上来讲,我选出了每种模型效果最好的情况

SVM:0.62
bayes:0.67
xgboost:0.75

4.结论

从图中观察,我们发现:svm先升后降,bayes先升后稳定,而xgboost很鬼畜。但是效果xgboost是最强的。这里面的原因我知识有限,暂时无法解释,大伙要是有什么想法可以在底下评论,我们可以交流交流

以下是我所有文章的目录,大家如果感兴趣,也可以前往查看
👉戳右边:打开它,也许会看到很多对你有帮助的文章

相关文章

  • 基于协同训练的半监督文本分类算法

    标签: 半监督学习,文本分类作者:炼己者 本博客所有内容以学习、研究和分享为主,如需转载,请联系本人,标明作者和出...

  • 基于自训练的半监督文本分类算法

    标签: 半监督学习,文本分类作者:炼己者 欢迎大家访问我的简书以及我的博客本博客所有内容以学习、研究和分享为主,如...

  • 推荐算法

    推荐算法分类 基于流行度的算法 基于内容的算法 协同过滤算法 基于模型 混合算法 算法分析 1. 基于流行度的算法...

  • 推荐算法-CF

    分类 基于领域的协同过滤。(又可以细分为基于用户和基于项)。 基于模型的协同过滤。 描述 协同过滤算法(Colla...

  • 常用算法介绍

    常见算法分类 监督式学习 无监督学习 半监督学习 监督式学习 分类1.贝叶斯分类2.决策树算法3.神经网络算法4....

  • 客户分群-聚类算法

    机器学习算法分类 有监督学习 有训练样本 分类模型 预测模型 无监督学习 无训练样本 关联模型 聚类模型 聚类算法...

  • 机器学习概述

    机器学习的算法主要分为: 监督学习 非监督学习 半监督学习 强化学习 监督学习就是分类,通过已有的训练样本去得到一...

  • 2019-03-28

    基于模型的协同过滤算法 基于模型的协同过滤算法是源自于推荐过程可以被视为分类或预测问题的这一思想,它将评分矩阵作为...

  • Adaboost算法简介

    Adaboost算法 Adaboost算法是一种有监督的学习方法,是基于Adaboost算法的分类器把若干个分类器...

  • 无标题文章

    有监督、无监督和半监督 最简单也最普遍的一类机器学习算法就是分类(classification)。对于分类,输入的...

网友评论

      本文标题:基于协同训练的半监督文本分类算法

      本文链接:https://www.haomeiwen.com/subject/doloaftx.html