学员背景
W同学
本科背景
南京理工大学 通信工程
GPA 81.2
背提项目
指南者留学机器学习项目实战
汇丰银行外币理财用户购买意愿预测
01 契机背景
我是一名大四的本科生,在大三升大四的暑假参加了指南者留学的机器学习背景提升项目,主要内容是汇丰银行外币理财用户购买意愿预测。
首先,我想谈一谈为什么选择指南者的背景提升项目。
在大学前三年的学习中,作为电子信息类专业的学生,除了需要接触大量的与电子学科相关理论,编程能力也是很重要的一部分,谁能够将器件的理论知识与编程代码相结合,谁就能在短时间内实现器件功能的设计,并且相较于一些传统的电子设计软件,通过编程设计出来的器件能够更好的实现功能的多样性和创新性。譬如在一个传统芯片的设计中,可能添加一个功能就需要在版图上进行全部芯线的重新连接和绘制,但在数字化的芯片设计中只需要添加或修改其中的一部分代码。
其次,是为了个人能力的进一步提升。在本科的学习过程中,我从未接触过python这类语言,也未参与过机器学习相关的课程,但python无疑是当下最热门的计算机语言之一,“大数据分析+机器学习”的模式也无疑是当下最热门的项目之一。我希望能通过我的个人能力,对某类数据集实现从无到有、从复杂到简单的分析过程,能够从单一的数字中挖掘出有用的信息。这对我来说是一个全新的项目和挑战,而指南者的背提项目恰好给予了我这一机会。
最后一条是为了弥补自己在留学申请时科研项目上的空缺。在大学阶段我虽然完成了不少实验和课程设计,但所接触的科研经历总体较少,而在院校申请时科研项目经历又是很被看重的一方面,因此这一机会成为了我背景提升的“救命稻草”。
02 项目过程及收获
主要的项目过程是首先通过老师的课程学习相关的基础知识,譬如科研项目的一般流程、机器学习的项目简介、Numpy库、Matplotlib库、Pandas库、数据清洗的一般方法、回归模型、分类模型、评价指标等。每一次课程都会对应着相关的作业(主要是对老师给的题目进行编程并写一份简单的报告),之后老师会集中几次作业的情况对我的作业进行单独讲解,这个过程大约持续了3~4周。这些作业内容帮助我很好地理解了课程的相关内容,并进一步加深了对python编程的理解。
完成了上述课程的学习之后就进入了具体的项目实战。我的项目内容主要是结合汇丰银行以往的用户购买外汇理财产品的数据以及用户本身的信息(如住房情况、信贷状况、家庭背景、工作信息等)来进行有效特征的筛选,也就是从其中挑选出对购买理财产品影响因子较大的因素放入最终的模型,而无关的因素则可以删去,并且通过用户自身信息与过往金融行为来搭建购买意愿预测系统,提高最终预测模型的效率。
首先需要在数据预处理中进行了缺失值填补、独热编码等步骤,并进行了朴素的过采样处理保证数据集的平衡性。在数据处理的第一步我就碰到了问题,但我的指导老师梅老师一直对我的每次问题进行了详细的解答,为我省去了很多不必要的麻烦。
在进行模型搭建之前先对数据进行一定的清洗,毕竟在以后面对实际的数据集时,不可能得到一个完完整整的数据库,因此数据清洗是必要的,以某数据集为例统计可得到该数据集共有19439行损失,64列损失。查看每列数据的缺失值比例,其中部分结果如下:
从中可以看出,该数据集中有大量的缺失值,出于下一步模型的需要因此不能进行简单的删除,对此我使用Imputer进行了缺失值填补等数据预处理步骤。
同时,在该数据集中有几个特征是无序的分类特征。为了处理这一问题,我进行了独热编码等步骤,即为每一个无序分类特征的每一个可能的类别创建一个“虚拟”变量。经过以上处理之后数据集就显得有序了许多,于是就开始进行下面的步骤。
在特征抽取步骤中,我使用了GBDT和PCA的方法进行,两种方法各有优点和缺点,我都进行了尝试并对相应的结果进行了对比。在本项目中的PCA降维中,可以绘制出n_components与cum_explained_variance_ratio对应的图像曲线如下,最终选择n=20作为新生成的特征个数。
最终结合了测试集上的指标以及模型的运算量大小等综合因素,本项目采用PCA的特征抽取方法。
在特征过滤中主要选择了方差选择法、递归特征消除法和基于惩罚项的特征选择法,并对原理和结果进行了说明。最后利用不同的机器学习算法分别进行交叉验证和网格搜索确定模型的参数(如:n_estimators、max_depth等)并对该数据集进行预测,例如随机森林、逻辑回归、stacking集成等,最后通过AUC和ROC等评价指标的对比分析确定最佳模型,即随机森林模型可以对银行外币理财用户购买意愿起到比较好的预测效果。该系统还可以通过数据来对用户的购买意愿进行判断,并且提供意愿排名,来更为精准的找到意愿强烈的客户提高产品的购买率。
(我的最终报告部分展示)
03 收获与感悟
最后我还想谈一谈我在这一过程中的收获。
首先是指南者的背景提升项目让我更加清楚了自身的兴趣和学习的意义,书本上的理论知识虽然是枯燥的但也是必备的,如何将这些理论知识运用到实践中去并取得真正有意义的成果才是最重要的,而成果是否有意义的重要衡量标准之一就是是否能解决实际问题,本次的背提项目让我看到了知识与实践融合的魅力。
第二是让我在留学申请中提升了自己的竞争力,对于科研小白的我来说,这无疑是我的申请简历中浓墨重彩的一笔,该项目不仅是对我个人能力的证明,也能够帮助申请院校的老师们进一步了解我。
第三是提高了我对新事物的接受能力,从接触一门全新的编程语言到能够最终完成该项目,这对我来说是一次挑战也是一次飞跃,这让我对接下来的学习生活更有自信。