
6.3.4 场景案例
在本节中,为了使读者对所述算法有更加直观的理解,我们展示了一个符合真实应用场景的案例。该案例的目的是利用机器学习模型求解真实的金融数据集UCICreditCard上的问题——根据用户的多项个人信息预测用户是否会出现贷款违约情况。该案例可以帮助读者理解如何在具体任务中应用所提算法。具体地,我们在UCICreditCard数据集上应用所提出的VFKL算法,求解具有式(6.1)形式的最优化问题模型。
(1)场景介绍
该数据集包含23个特征,分别为贷款额度、性别、教育程度、婚姻状况、年龄、月还款状况、月度账单总额以及月支付金额等个人信息;标签(是否会出现贷款违约情况,其中1表示违约,0表示不违约);数据集一共包含30000个样本。据此数据集我们设想有如下所述的场景。假设A、B、C公司分别拥有客户的不同特征,其中公司A拥有贷款额度、性别、年龄和6个月的月还款情况等9个特征;公司B拥有贷款额度、性别、年龄、教育程度以及6个月的月度账单总额等9个特征,公司C拥有性别、年龄、婚姻状况以及6个月的月支付金额等9个特征;且每个公司的客户不尽相同(即样本ID不完全相同)。特别地,公司A、B、C都是贷款发放方,想利用机器模型判断用户是否会出现贷款违约情况。一般来说,各个公司会利用自己的数据训练一个机器学习模型,然而由于每个公司都只有9个特征的数据,没有其他对于判断用户是否违约有帮助的信息(例如公司A没有教育程度、婚姻状况、月度账单等信息),所以利用自己的数据训练而得的模型可能会出现表现不佳的情况。其他公司拥有相关用户的其他信息,且这些信息对学习所需的模型有一定的帮助。因此,一个理想的方式是将几个公司的特征数据聚合在一起训练模型,以求获得一个表现更好的模型。然而,由于隐私保护的相关法律法规和商业竞争等,公司之间无法直接共享这些用户数据。在这种情况下,一个可行的方案是利用联邦学习在技术上实现三个公司在隐私保护下的协同学习。
(2)模型建立
首先,我们假设各公司的数据已经被处理为纵向联邦学习中的标准分布形式,以与数据集UCICreditCard对应。其中,公司A提供贷款额度、性别、年龄和6个月的月还款情况等9个特征(即xg1=[x1,x2,x6,···,x11]∈);公司B提供教育程度、6个月的月度账单总额等7个特征(即xg2=[x3,x12,···,x17]∈
);公司C提供婚姻状况、6个月的月度账单总额等7个特征(即xg3=[x4,x18,···,x23]∈
);且每个公司均包含30000个共同的样本编号(实验中我们按照3:1的比例将数据集划分为训练集和验证测试集),由于该场景下所有公司都是贷款发放方,所以A、B、C三个公司都有标签数据。采用ℓ2正则化的最优化问题来建模,则该场景下的问题可以表示为:

其中,m=3,n=22500,d=23,f=αϕ(x),见式(6.15),x=[xg1,xg2,xg3],且特征数据和模型参数α分别存储在对应的公司中。
(3)模型学习
由情景设定可知,公司A、B、C都有标签数据,都是主动方,所以公司A、B、C都能主动执行算法6.3。接下来,我们将以公司A为例讲解学习过程。根据算法6.3,公司A随机挑选序号为i的样本,同时确定每个公司的随机种子均为i并分别采样出随机方向ωi,然后本地调用算法6.1计算并保存。接下来,公司A本地调用算法6.2计算自身
。同时,公司B、C利用当前的本地模型参数和本地特征数据分别协同计算
和
。注意,算法6.1中涉及的聚合累加等操作(第5行和第6行)是在不同树结构上完成的,在技术上保证了计算操作过程中的隐私性。由于公司A是主动发起计算的一方,因此公司A充当协作者,在算法6.1中计算并得到
。在算法6.3的步骤9中,公司A根据聚合而得的
和标签数据计算模型参数α并保存,并在步骤10中更新其本地模型参数。与公司A类似,公司B、C也可以执行算法6.3并对本地模型参数进行对应的更新。三个公司A、B、C可以并行地重复上述过程,直至收敛,即可获得对应的模型。