天天看点

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

from:https://www.jianshu.com/p/8ed0703db2c7

作者:caokai1073

链接:https://www.jianshu.com/p/8ed0703db2c7

来源:简书

另:TrAdaBoost源码剖析

为什么要TrAdaBoost

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

TrAdaBoost算法,是一种从old data中提取实例的方法,即将一部分能用的old labeled data,结合new labeled data(可能是少量),构建出比单纯使用new labeled data训练更精确的模型。

TrAdaBoost算法

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

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

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

测试数据集(无标签):

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

训练数据集:

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

其中训练集T可以分为来自不同分布的数据T_d和相同分布的数据T_s,

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

所以全部的训练数据:

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

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

整体算法如下:

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

第一步:归一化每个数据的权重,使其成为一个分布。

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

第二步:调用弱分类器。将T_d和T_s的数据整体作为训练数据,过程和AdaBoost训练弱分类器一样。这一步也是我们的old data对模型起作用的地方。

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

第三步:计算错误率。注意,这边只计算T_s中提取的数据,也就是new data。old data在这边不进入计算。而且计算错误率的时候需要将T_s中的提取数据权重重新归一化。

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

第四步:分别计算T_s和T_d权重调整的速率。注意,每一次迭代,T_s的权重调整速率都不一样,而T_d中的数据,是一样的。Beta_t在AdaBoosting中,相当于每一个弱分类器的话语权有多大,Beta_t越大,该弱分类器话语权越小。

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

第五步:更新数据权重。T_s中的数据,如果分类错误,则提高权重值,与传统AdaBoost算法一致。T_d中的数据,则相反,如果分类错误,则降低权重值,这是因为分类错误的就认为这部分old data与new data差距太大。

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

输出。以后半数弱分类器(N/2~N)的投票为准。

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

参考文献:

[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.

继续阅读