机器学习与数据挖掘

迁移学习---TrAdaBoost算法介绍

2017-12-17  本文已影响0人  caokai1073

1. 为什么要TrAdaBoost

传统的机器学习,有一个假设: 训练集和测试集分布相同。而事实上,在许多情况下,这种单一分布假设不成立。如果来了一批新的数据(new data),分布与之前的训练的旧数据(old data)不一样,那么我们的算法的准确率就会下降很多。但是使用新数据,完全抛弃旧数据,有两个问题。第一,新数据可能量不够;第二,旧数据可能还有利用价值,完全抛弃太浪费。所以才有了迁移学习,从旧数据从提取信息,用于新的模型训练。
TrAdaBoost算法,是一种从old data中提取实例的方法,即将一部分能用的old labeled data,结合new labeled data(可能是少量),构建出比单纯使用new labeled data训练更精确的模型。

2. TrAdaBoost算法

以测试数据空间为基准,new data有一样数据分布空间,记为X_s,old data是不一样的分布空间,记为X_d。假设是二分类问题,labels是Y={0,1}。整个训练数据空间是

所以我们就是要找到X->Y的映射函数c。

测试数据集(无标签): 训练数据集: 其中训练集T可以分为来自不同分布的数据T_d和相同分布的数据T_s, 所以全部的训练数据:

有n个数据来自X_d空间,有m个数据来自X_s空间。

整体算法如下: 第一步:归一化每个数据的权重,使其成为一个分布。 第二步:调用弱分类器。将T_d和T_s的数据整体作为训练数据,过程和AdaBoost训练弱分类器一样。这一步也是我们的old data对模型起作用的地方。 第三步:计算错误率。注意,这边只计算T_s中提取的数据,也就是new data。old data在这边不进入计算。而且计算错误率的时候需要将T_s中的提取数据权重重新归一化。 第四步:分别计算T_s和T_d权重调整的速率。注意,每一次迭代,T_s的权重调整速率都不一样,而T_d中的数据,是一样的。Beta_t在AdaBoosting中,相当于每一个弱分类器的话语权有多大,Beta_t越大,该弱分类器话语权越小。 第五步:更新数据权重。T_s中的数据,如果分类错误,则提高权重值,与传统AdaBoost算法一致。T_d中的数据,则相反,如果分类错误,则降低权重值,这是因为分类错误的就认为这部分old data与new data差距太大。 输出。以后半数弱分类器(N/2~N)的投票为准。

参考文献:
[1]W. Dai, Q. Yang, G. Xue, and Y. Yu, “Boosting for Transfer Learning,” Proc. 24th Int’l Conf. Machine Learning, pp. 193-200, June 2007.

上一篇 下一篇

猜你喜欢

热点阅读