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

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.

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。