迁移学习系列(一)

来源:互联网 发布:交通组织优化方案 编辑:程序博客网 时间:2024/06/08 05:52

本系列梗概

本次想分享的是迁移学习,不是像目前大部分的论文一样讲想法讲思路,当然我不是觉得思路想法不重要,其实是觉得很重要,但同时我也是一个很注重实战的人,所以想在这里通过科赛网推荐的一次金融大数据比赛(平安旗下的前海征信公司举办)来跟大家分享一次实战经验,谈谈迁移学习。大致分为五个章节来叙述:
1.事情前因后果的概述,思路之类的
2.数据的预处理
3.构建深度学习网络
4.迁移深度学习网络
5.再次构建深度学习网络

题目梗概

1、首先介绍下赛题,为保证无误,基本是复制原文

参赛选手需依据给定的4万条业务A数据及4千条业务B数据,建立业务B的信用评分模型。其中业务A为信用贷款, 其特征就是债务人无需提供抵押品,仅凭自己的信誉就能取得贷款,并以借款人信用程度作为还款保证的;业务B为现金贷,即发薪日贷款(payday loan),与一般的消费金融产品相比,现金贷主要具有以下五个特点:额度小、周期短、无抵押、流程快、利率高,这也是与其借贷门槛低的特征相适应的。由于业务A、B存在关联性,选手如何将业务A的知识迁移到业务B,以此增强业务B的信用评分模型,是本次比赛的重点。

2、数据说明

本次比赛提供不同业务的各种产品特征和用户特征数据,格式为UTF8编码格式的excel文件,以逗号分隔。共包含:A_train.csv,B_train.csv,B_test.csv三个数据文件。A_train.csv(feature+label)为40k条,贷款期限为1-3年,平均贷款金额为几千至几万的中等额度信用贷款业务A训练数据。B_train.csv(feature+label)为4k条,贷款期限为7-30天,平均贷款金额为一千的小额短期贷款业务B训练数据。B_test.csv(feature)为13k条业务B测试数据。训练集里的feature包括了no, ProductInfo_1, ProductInfo_2, ... , UserInfo_1, UserInfo_2, ... , WebInfo_1, WebInfo_2 ...,以及其他除flag字段外小写字母开头的字段。 其中no是每条记录的id,flag字段即是label。训练集A和训练集B的字段相同。备注 1.null代表缺失值 2.参赛选手不得在未经组委会授权情况下将比赛数据作为其他用途使用 3.提供的数据经过了脱敏,和数据的实际信息有一些差距,但是不会影响这个问题的可解性。

3、业务A和业务B的数据字典为:
业务A和业务B的数据字典

4、输出
提交文件为B_predict.csv,其内容如下所示:
输出图片
提交案例中pred字段为0-1概率值。

关于要求和数据就这么多了,如果还有疑问,可以直接查看官网,
相关比赛要求详情可查看这里

5、赛题分析
简单地说,本问题是针对两种相似业务(A业务和B业务)的脱敏数据,其中A业务的数据量远大于B业务,其实就是A业务的经验积淀远比B业务经验积淀多,要发展好B业务,想利用A业务的数据建立模型,使之能迁移至B业务的模型中,指导B业务的开展。
那么就有两个问题摆在眼前了:
A业务的数据能直接用于B吗?如果不能,那该怎么使用A业务的数据?

其实,很容易猜测A数据就是不能直接加持到B中使用的,因为A,B数据的分布情况都是不同的。说道分布不同而不能直接用A数据,那么就有一条很直观的思路了:
在A数据中取和B等量的数据,再取其中80%的数据为训练集,20%为测试集
这样得到的结果很差,AUC才0.52,为什么呢?
其实显然嘛~,数据没有物尽其用。B才4000条数据,A有4万条,多了10倍,显然大部分数据都没有用到,效果差也就可以想象啦~~~

是不是在此陷入了没有思路的囧地呢?O(∩_∩)O哈哈~所以说思路还是很重要滴~~~

经过多番查找论文和与高手交流,最后提出了一种思路:我们应该先找到A业务数据和B业务数据的共性部分,再将共性部分的网络输出取出来作为共性深度网络,成为model1,B数据通过model1后得到了输出,如果再次作为输入,构建第二个网络,其输出才是最后的输出,以B_train数据的80%为训练集,20%为测试集,将此模型为model2,至此model1+model2才是整个迁移学习构建的模型,后面四章将围绕这个思路展开进行分享。

持续更新中~~~

0 0