function P = TSL_LRSR(Xs,Xt,Xs_label,alpha,beta,lambda)
Y = Construct_Y(Xs_label,length(Xs_label));
B = Construct_B(Y);
Class = length(unique(Xs_label));
Max_iter = 100;
[m,n1] = size(Xs); n2 = size(Xt,2);
max_mu = 10^6;
mu = 0.1;
rho = 1.01;
convergence = 10^-6;
options = [];
options.ReducedDim = Class;
[P1,~] = PCA1(Xs', options);
% ----------------------------------------------
% Initialization
% ----------------------------------------------
M = ones(Class,n1);
P = zeros(m,Class);
E = zeros(Class,n2);
Z = zeros(n1,n2);
Z1 = zeros(n1,n2);
Z2 = zeros(n1,n2);
Y1 = zeros(Class,n2);
Y2 = zeros(n1,n2);
Y3 = zeros(n1,n2);
% ------------------------------------------------
% Main Loop
% ------------------------------------------------
for iter = 1:Max_iter
% updating P
V0 = Y+B.*M;
V1 = Xt-Xs*Z;
V2 = E-Y1/mu;
if (iter == 1)
P = P1;
else
P = (2*Xs*Xs'+mu*V1*V1'+2*lambda*eye(m))\(2*Xs*V0'+mu*V1*V2');
end
% updating M
R = P'*Xs-Y;
gp = B.*R;
[numm1,numm2] = size(gp);
for jk1 = 1:numm1
for jk2 = 1:numm2
M(jk1,jk2) = max(gp(jk1,jk2),0);
end
end
% updating E
the2 = beta/mu;
temp_E = P'*Xt-P'*Xs*Z+Y1/mu;
E = max(0,temp_E-the2)+min(0,temp_E+the2);
% updating Z
V3 = Z1-Y2/mu;
V4 = Z2-Y3/mu;
V5 = P'*Xt-E+Y1/mu;
Z = (2*eye(n1)+Xs'*P*P'*Xs)\(V3+V4+Xs'*P*V5);
% updating Z1
ta = 1/mu;
temp_Z1 = Z+Y2/mu;
[U01,S01,V01] = svd(temp_Z1,'econ');
S01 = diag(S01);
svp = length(find(S01>ta));
if svp >= 1
S01 = S01(1:svp)-ta;
else
svp = 1;
S01 = 0;
end
Z1 = U01(:,1:svp)*diag(S01)*V01(:,1:svp)';
% updating Z2
taa = alpha/mu;
temp_Z2 = Z+Y3/mu;
Z2 = max(0,temp_Z2-taa)+min(0,temp_Z2+taa);
% updating Y1, Y2, Y3
Y1 = Y1+mu*(P'*Xt-P'*Xs*Z-E);
Y2 = Y2+mu*(Z-Z1);
Y3 = Y3+mu*(Z-Z2);
% updating mu
mu = min(rho*mu,max_mu);
% checking convergence
leq1 = norm(P'*Xt-P'*Xs*Z-E,Inf);
leq2 = norm(Z-Z1,Inf);
leq3 = norm(Z-Z2,Inf);
if iter > 2
if leq1<convergence && leq2<convergence && leq3<convergence
break
end
end
end
end
function B = Construct_B(Y)
%%
B = Y;
B(Y==0) = -1;
end
function Y = Construct_Y(gnd,num_l)
%%
% gnd:标签向量;
% num_l:表示有标签样本的数目;
% Y:生成的标签矩阵;
nClass = length(unique(gnd));
Y = zeros(nClass,length(gnd));
for i = 1:num_l
for j = 1:nClass
if j == gnd(i)
Y(j,i) = 1;
end
end
end
end
没有合适的资源?快使用搜索试试~ 我知道了~
TSL.zip_tsl_概率分布失配_欠适配_欠适配问题_负迁移负适配
共3个文件
m:3个
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 186 浏览量
2022-09-23
18:12:01
上传
评论
收藏 2KB ZIP 举报
温馨提示
迁移学习中,过拟合、欠拟合、欠适配、负迁移等关键问题与挑战交错叠加。 首先,在拟合观测数据所服从的未知概率分布时存在模型的过拟合或欠拟合问题; 其次,在领域间适配不同的未知概率分布时存在模型的欠适配或负迁移问题:欠 适配是指跨领域的概率分布失配问题未能充分修正,负迁移是指辅助领域任务对 目标领域任务有负面效果。本文重点面向欠拟合、欠适配、负迁移等问题挑战, 分析原因并设计针对性的学习方法
资源详情
资源评论
资源推荐
收起资源包目录
TSL.zip (3个子文件)
run_me_svm.m 2KB
TSL_LRSR.m 3KB
run_me_nn.m 1KB
共 3 条
- 1
我虽横行却不霸道
- 粉丝: 90
- 资源: 1万+
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论0