使用Pseudo Labeling(伪标签)提高模型的分类效果

Pseudo Labeling原理

目前为止,大部分的机器学习和深度学习分类问题都需要大量的数据进行训练,而人类往往通过认识几个新鲜事物就能够很好地进行判断,这主要是由于人类可以由自己的判断产生的结果进行推断和强化但是机器面对未知的对象却不行。这种相差巨大的判别机制让人们开始思考机器进行认知分类任务的原理能够有所改进,于是Pseudo Labeling应运而生。

简而言之,Pseudo Labeling将测试集中判断结果正确的置信度高的样本加入到训练集中,从而模拟一部分人类对新对象进行判断推演的过程。效果比不上人脑那么好,但是在监督学习问题中,Pseudo Labeling几乎是万金油,几乎能够让你模型各个方面的表现都得到提升。

实际应用Pseudo Labeling pipeline

Pseudo Labeling会影响到数据处理、模型构建、模型调试、结果预测等各个方面,因此将其视为一个trick更为合适,引用kaggle notebook:Pseudo Labeling - QDA - [0.969]中的流程总结,:

  1. 使用原始训练集训练并建立模型
  2. 使用训练好的模型对测试集进行分类
  3. 将预测正确置信度高的样本加入到训练集中
  4. 使用结合了部分测试集样本的新训练集再次训练模型
  5. 使用新模型再次进行预测

流程比较简单,但是存在几个问题:

  • 以上步骤可否重复进行,如果可以,进行几轮Pseudo Labeling效果最好?
  • 置信度在不同的问题中应该如何进行确定?

可见引入

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
标签方法是一种半监督学习的方法,可以利用预测标签来帮助模型进行训练。在对鸢尾花数据集进行预测时,可以使用决策树模型,并结合标签方法,具体步骤如下: 1. 加载鸢尾花数据集,并将数据集分为训练集和测试集两部分。 2. 使用训练集对决策树模型进行训练。 3. 对测试集进行预测,并将预测结果作为标签添加到训练集中。 4. 使用扩充后的训练集对决策树模型进行重新训练。 5. 对测试集进行最终预测。 代码如下: ```python from sklearn.datasets import load_iris from sklearn.tree import DecisionTreeClassifier from sklearn.metrics import accuracy_score # 加载鸢尾花数据集 iris = load_iris() X, y = iris.data, iris.target # 将数据集分为训练集和测试集 X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42) # 初始化决策树模型 clf = DecisionTreeClassifier() # 使用训练集对决策树模型进行训练 clf.fit(X_train, y_train) # 对测试集进行预测,并将预测结果作为标签添加到训练集中 X_train_pseudo = np.vstack([X_train, X_test]) y_train_pseudo = np.hstack([y_train, clf.predict(X_test)]) # 使用扩充后的训练集对决策树模型进行重新训练 clf.fit(X_train_pseudo, y_train_pseudo) # 对测试集进行最终预测 y_pred = clf.predict(X_test) # 计算模型的准确率 acc = accuracy_score(y_test, y_pred) print('Accuracy:', acc) ``` 需要注意的是,标签方法的效果取决于标签的质量和数量,因此需要在使用时进行适当的调整和优化。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值