第 6 课:逻辑回归LR与广义线性模型GLM开发实践

本讲主要介绍隐语SecretFlow中的纵向密态广义线性回归。广义线性回归是非常普遍的,例如常见的逻辑回归LR就属于广义线性回归。本讲主要内容分为以下四部分:

一、背景知识-LR/GLM应用场景及原理

        1、广义线性模型建模场景举例

              首先是二分类问题,利用逻辑回归对数据进行二元分类,例如根据病人数据进行疾病诊断(是否患病),其次在其他场景中,直接输出逻辑回归的sigmoid值,预测某事发生的概率,例如预测某个网站的用户变为付费用户的概率。在保险行业的保费预测场景中,根据提供的保障责任,计算预期总索赔额即纯保费进行建模,其特点是大部分值都集中在0附近(在保期内,大部分时候都不会出险),所以可以使用tweedie分布进行拟合,对于tweedie回归,经常选择参数为1~2之间。另外,也可以通过两步建模间接近似,即纯保费 = 索赔次数*平均索赔金额,其中索赔次数服从泊松分布或负二项分布,平均索赔金额服从伽马分布或逆高斯分布。  

        2、广义线性模型(GLM)介绍

                广义线性模型(GLM)顾名思义就是线性回归的一个拓展,而线性回归是广义线性回归的一个基本形式,线性回归假设响应变量与解释变量之间存在线性关系,误差项独立且服从正态分布。线性回归假设响应变量Y的真实值有两部分组成,一是系统组件,即线性预测器\eta = \mathbf{x}^T \beta(数值项,可拟合),二是误差组件,即白噪声,近似服从N(0,1)(高斯随机变量)。因此

因此,响应变量Y的条件分布为高斯分布Y ~N(\mathbf{x}^T\mathbf{\beta}, 1)

                GLM也允许误差组件的概率分布扩展到所有指数分布族,例如伯努利分布 (逻辑回归),泊松分布,gamma分布,复合泊松Gamma 分布,Tweedie分布等。

                一个GLM有三个关键组件:系统组件、随机组件和连接函数,如下图所示:

                

                在GLM中,当连接函数与\psi相等时,称这个连接函数为标准连接函数。Identity是线性回归的标准连接函数,Logit是逻辑回归的标准连接函数,其反函数是熟知的激活函数sigmoid,Log也是一种常用的标准连接函数,像Tweedie回归,Gemma回归等都可以使用Log作为其连接函数。         

二、隐语模型-密态SSLR/SSGLM

        1、广义线性模型参数估计

                首先要计算导数,这样就可以使用一些优化器做参数估计。优化器有一阶优化器(SGD参数估计方法,在密态中经常会用到SGD)和二阶优化器(迭代重加权最小二乘法,IRLS),前者计算简单,计算量/通信量较小,后者初始化准确( 不同于SGD随机选取,而是根据Y的期望计算得到,初始跟收敛点非常接近),收敛速度快,但是计算量大,因为涉及到多方参与计算,所以计算/通信复杂度高。

                隐语实现中是结合二者的优点,把二阶优化器和一阶优化器叠加使用,训练初始几轮,先用二阶优化器进行初始化,进行简单迭代,之后再用一阶优化器进行快速收敛。有了优化器之后,可以把优化器和任何想要计算的函数,都可以化为加法和乘法的组合来近似,例如求幂和非线性等。在隐语中,具体的加法和乘法的组合是使用Secret Sharing(秘密分享)的方式,进行安全计算。

        2、秘密分享加法

                如下图所示案例,三个参与方A,B,C分别有秘密值15,25,10,如何在不让其他参与方知道自己的秘密值的情况下,计算三个参与方秘密值之和。此时会用到多方安全计算的秘密分享。                

                S_{A} = a_{1}+a_{2}+a_{3}S_{B} = b_{1}+b_{2}+b_{3}S_{C} = c_{1}+c_{2}+c_{3}

                \sum =S_{A}+S_{B}+S_{C}

                S_{A}+S_{B}+S_{C}=a_{1}+a_{2}+a_{3}+b_{1}+b_{2}+b_{3}+c_{1}+c_{2}+c_{3}

                S{}'_{A} = a_{1}+b_{2}+c_{3}S{}'_{B} = b_{1}+c_{2}+a_{3}S{}'_{C} = c_{1}+a_{2}+b_{3}

                S{}'_{A}+S{}'_{B}+S{}'_{C}=a_{1}+b_{2}+c_{3}+b_{1}+c_{2}+a_{3}+c_{1}+a_{2}+b_{3}

                \sum =S_{A}+S_{B}+S_{C}=S{}'_{A}+S{}'_{B}+S{}'_{C}

        3、秘密分享乘法     

           

                首先A把秘密值a,分为a_{0}a_{1},且a=a_{0}+a_{1},B把秘密值b,分为b_{0}b_{1},且b=b_{0}+b_{1}
                然后A得到b_{0},B得到a_{0}
                接着初始化3个临时变量uvz,其中z=uv,A得到u_{0}v_{0}z_{0},B得到u_{1}v_{1}z_{1},其中u=u_{0}+u_{1}v=v_{0}+v_{1}z=z_{0}+z_{1}
                接下来A计算e_{0}=a_{0}-u_{0}f_{0}=b_{0}-v_{0},B计算e_{1}=a_{1}-u_{1}f_{1}=b_{1}-v_{1}
                接着A将e_{0}f_{0}分享给B,B将e_{1}f_{1}分享给A
                再进行本地计算e=e_{0}+e_{1} \because e_{0}=a_{0}-u_{0} \cap e_{1}=a_{1}-u_{1} \therefore e=a_{0}-u_{0}+a_{1}-u_{1}=a-u,同理f=b-v
                A计算c_{0}=fa_{0}+eb_{0}+z_{0},B计算c_{1}=-ef+fa_{1}+eb_{1}+z_{1}
                最后汇总
c_{0}+c_{1}=fa_{0}+eb_{0}+z_{0}-ef+fa_{1}+eb_{1}+z_{1}\\=(b-v)a_{0}+(a-u)b_{0}+z_{0}-(a-u)(b-v)+(b-v)a_{1}+(a-u)b_{1}+z_{1}\\=(b-v)(a_{0}+a_{1})+(a-u)(b_{0}+b_{1})-(ab-va-ub+uv)+z_{0}+z_{1}\\=(b-v)a+(a-u)b-(ab-va-ub+uv)+z\\=ab-va+ab-ub-ab+va+ub-uv+z\\=ab

三、应用实现-从理论到隐语应用

       隐语中具体使用SSLR和SSGLM的方法如下:

        1、SSGLM参数解析

                首先是distribution type,在隐语中支持伯努利回归、泊松回归、Gamma回归和Tweedie回归进行建模,之后针对不同的回归模型,选择不同的Link Function,针对逻辑回归,即伯努利分布,选择Logit,针对泊松回归、Gamma回归和Tweedie回归时,选择Log。如果选择了Tweedie回归,还需要进行P值(Tweedie power)的调参,P值选择一般是根据先验估计(数据服从何种分布),选择1~2这个范围。但是真正建模之前,可能不知道数据分布适用于哪个P值,此时采用循环操作,把P值定义到1~2之间,步长为0.1,迭代选出效果最好的P值。之后选择优化器,SGD和IRLS,可以叠加使用。

                GLM还有若干特殊参数,offset_col,distribution scale(数据方差,先验)以及weight_col。

        2、使用SSLR以及SSGLM

                首先准备SPU和数据(数据需要归一化),之后进行模型训练,最后进行模型评估。

        3、SS-LR / SSGLM 在隐语实现中的独特优势

                可证安全
                不依赖可信第三方
                支持多种模型(伯努利分布(逻辑回归),泊松分布,Gamma分布,Tweedie分布)
                计算高效(结合一阶优化器和二阶优化器的优点,整体提高SSGLM的建模效率)

四、实践

        针对Tweedie分布的GLM建模

        见作业。

  • 9
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值