本系列是天冕隐私计算团队打造的知识分享系列,该系列注重于分享隐私计算领域的相关技术,分享课题涉及联邦学习,安全多方计算,同态加密等多个方向,致力于提供隐私计算领域最简单易懂的知识分享。
欢迎关注 WeFe 隐私计算开源平台 https://github.com/tianmiantech/WeFe
传统的逻辑回归算法(Logistic regression,简称LR)因其模型简单和模型可解释性强的优点,被广泛的应用在各个领域中,如在金融领域信用卡发卡机构可以根据逻辑回归建立信用卡评分模型,评估当前客户的信用情况。为了满足实际的需要,现阶段在隐私计算中已经出现多种实现逻辑回归的安全解决方案。本知识系列将从隐私计算的多个技术路线,科普介绍逻辑回归算法的实现。本篇文章将先介绍传统逻辑回归的一些算法知识,为理解后续理解隐私计算中的逻辑回归算法做铺垫。
1. Logit 变换
在实际应用中经常会遇到定性变量,如:用户性别男女,用户购买与不购买,贷款人违约与不违约等。如果建立用户购买与不购买的模型,这时不再满足线性回归方程的基本假定,需要新模型来解决这类问题。通常将因变量是定性的二元变量,转换为研究因变量取值1的概率 P,但直接处理 P 存在一下两点困难:
-
0≤ P ≤1,因此 P 与自变量的关系难以用线性模型来描述;
-
当 P 接近0或1时,P 值的微小变化用普通的方法难以发现和处理。
解决方案:
-
转化去处理 P 的一个严格单调函数 f = f ( P ) f=f(P) f=f(P) ;
-
函数 f ( P ) f(P) f(P) 需要满足在 P=0 或者 P=1 附近的发生的微小变化很敏感,即 d f d P \frac{df}{dP} dPdf 与 1 P ( P − 1 ) \frac{1}{P(P-1)} P(P−1)1 成比例,可以得到:
f
=
l
n
P
1
−
P
f=ln\frac{P}{1-P}
f=ln1−PP
当 P 取值从0 趋近于1 时,
f
f
f 的值从
−
∞
-\infty
−∞ 趋向于
∞
\infty
∞,通过单调函数
f
f
f 解决了以上存在问题,该过程称为 Logit变换 。若因变量包含
x
1
,
x
2
,
.
.
.
,
x
n
x_1,x_2,...,x_n
x1,x2,...,xn,可得到:
l
n
P
1
−
P
=
w
0
+
w
1
x
1
+
.
.
.
+
w
k
x
k
ln \frac{P}{1-P} = w_0+w_1x_1+...+w_kx_k
ln1−PP=w0+w1x1+...+wkxk
进而得到逻辑回归模型:
P
=
e
w
0
+
w
1
x
1
+
.
.
.
+
w
k
x
k
1
+
e
w
0
+
w
1
x
1
+
.
.
.
+
w
k
x
k
P = \frac{e^{w_0+w_1x_1+...+w_kx_k}}{1+e^{w_0+w_1x_1+...+w_kx_k}}
P=1+ew0+w1x1+...+wkxkew0+w1x1+...+wkxk
2. 逻辑回归模型
P ( Y = 1 ∣ x ) = g ( w T x ) = e w T x 1 + e w T x = 1 1 + e − w T x P Y = 0 ∣ x ) = 1 − g ( w T x ) = 1 − e w T x 1 + e w T x = 1 1 + e w T x P(Y=1| x ) = g(w^Tx)=\frac{e^{w^Tx}}{1+e^{w^Tx}} = \frac{1}{1+e^{-w^Tx}}\\ PY=0| x ) = 1-g(w^Tx)=1-\frac{e^{w^Tx}}{1+e^{w^Tx}} = \frac{1}{1+e^{w^Tx}} P(Y=1∣x)=g(wTx)=1+ewTxewTx=1+e−wTx1PY=0∣x)=1−g(wTx)=1−1+ewTxewTx=1+ewTx1
其中
g
(
x
)
g(x)
g(x) 为 sigmod 函数:
g
(
x
)
=
e
x
1
+
e
x
=
1
1
+
e
−
x
g(x) = \frac{e^x}{1+e^x}=\frac{1}{1+e^{-x}}
g(x)=1+exex=1+e−x1
函数图像如下:
3. 损失函数
3.1 无正则项的损失函数
数据集
D
=
(
x
1
,
y
i
)
,
(
x
2
,
y
2
)
,
.
.
.
.
,
(
x
n
,
y
n
)
D ={ (x_1,y_i),( x_2,y_2),....,( x_n,y_n) }
D=(x1,yi),(x2,y2),....,(xn,yn) , 其中
x
i
=
(
x
i
1
,
x
i
2
,
.
.
.
,
x
i
k
)
T
x _i =(x_{i1},x_{i2},...,x_{ik})^T
xi=(xi1,xi2,...,xik)T。在参数估计计算过程中,逻辑回归采用极大似然估计,可以得到逻辑回归的损失函数为:
L
(
w
)
=
−
∑
i
=
1
n
[
y
i
l
o
g
g
(
w
T
x
i
)
+
(
1
−
y
i
)
l
o
g
(
1
−
g
(
w
T
x
i
)
)
]
L(w) = - \sum_{i=1}^n [y_i log \ g(w^Tx_i) +(1-y_i)log \ (1- g(w^Tx_i))]
L(w)=−i=1∑n[yilog g(wTxi)+(1−yi)log (1−g(wTxi))]
根据逻辑回归的损失函数可以得到该问题的交叉熵损失函数:
J
(
w
)
=
−
1
n
∑
i
=
1
n
[
y
i
l
o
g
g
(
w
T
x
i
)
+
(
1
−
y
i
)
l
o
g
(
1
−
g
(
w
T
x
i
)
)
]
J(w) = - \frac {1} {n} \sum_{i=1}^n [y_i log \ g(w^Tx_i) +(1-y_i)log \ (1- g(w^Tx_i))]
J(w)=−n1i=1∑n[yilog g(wTxi)+(1−yi)log (1−g(wTxi))]
对交叉熵损失函数
J
(
w
)
J(w)
J(w) 的其中某一项
w
j
w_j
wj 求导得到损失函数的梯度值:
其中
x
i
j
x_{ij}
xij是第 i 行第 j 列数据,
x
j
x^j
xj 是第 j 列数据 ,
j
=
0
,
1
,
2
,
.
.
.
,
n
j = 0,1,2,...,n
j=0,1,2,...,n,
i
=
1
,
2
,
3
,
.
.
.
,
n
i = 1,2,3,...,n
i=1,2,3,...,n 。于是梯度
∇
J
(
w
)
\nabla J(w)
∇J(w) :
3.2 带有正则的损失函数
模型越复杂但越容易产生过拟合,为了避免模型过拟合,会加入正则化项降低过拟合的风险。正则化项一般是模型复杂度的单调递增函数,模型越复杂,正则化项就越大。正则化项可以取不同形式,如 l 1 l1 l1 正则化和 l 2 l2 l2 正则化。
3.2.1 l 1 l1 l1 正则化
l
1
l1
l1正则化下交叉熵损失函数为:
J
(
w
)
=
−
1
n
∑
i
=
1
n
[
y
i
l
o
g
g
(
w
T
x
i
)
+
(
1
−
y
i
)
l
o
g
(
1
−
g
(
w
T
x
i
)
)
]
+
λ
∣
∣
w
∣
∣
1
J(w) = - \frac{1}{n}\sum_{i=1}^n [y_i log \ g(w^Tx_i) +(1-y_i)log \ (1- g(w^Tx_i))] +\lambda||w||_1
J(w)=−n1i=1∑n[yilog g(wTxi)+(1−yi)log (1−g(wTxi))]+λ∣∣w∣∣1
其中 ∣ ∣ w ∣ ∣ 1 ||w||_1 ∣∣w∣∣1是参数向量的 L 1 L_1 L1范数,即向量元素绝对值之和, λ ≥ 0 \lambda \geq 0 λ≥0 是调整正则化项与经验风险的系数。 l 1 l1 l1 正则化下梯度计算方式如下,其中的 sgn 函数是符号函数:
3.2.2 l 2 l2 l2 正则化
l
2
l2
l2 正则化下交叉熵损失函数为:
J
(
w
)
=
−
1
n
∑
i
=
1
n
[
y
i
l
o
g
g
(
w
T
x
i
)
+
(
1
−
y
i
)
l
o
g
(
1
−
g
(
w
T
x
i
)
)
]
+
λ
2
∣
∣
w
∣
∣
2
2
J(w) = - \frac {1} {n} \sum_{i=1}^n [y_i log \ g(w^Tx_i) +(1-y_i)log \ (1- g(w^Tx_i))] + \frac{\lambda}{2}||w||_2^{2}
J(w)=−n1i=1∑n[yilog g(wTxi)+(1−yi)log (1−g(wTxi))]+2λ∣∣w∣∣22
其中 ∣ ∣ w ∣ ∣ 2 ||w||_2 ∣∣w∣∣2是参数向量的 L 2 L_2 L2范数,即向量元素绝对值的平方和后开方, λ ≥ 0 \lambda \geq 0 λ≥0 是调整正则化项与经验风险的系数。 l 2 l2 l2 正则化下梯度计算方式如下:
4. 参数更新
若使用梯度下降法来更新梯度(沿梯度的反方向寻找最小值),可以得到如下的参数更新方式,其中
η
∈
(
0
,
1
)
\eta \in (0,1)
η∈(0,1) 为学习率:
w
i
=
w
i
−
η
∂
(
J
(
w
)
)
∂
(
w
j
)
w_i = w_i -\eta \frac {\partial(J(w))} {\partial(w_j)}
wi=wi−η∂(wj)∂(J(w))
在实际应用的大批量数据中,往往会使用梯度提升的优化算法处理问题,如AdaGrad 算法,RMSProp 算法等,具体算法实现可以参阅 WeFe 开源平台查看算法实现。
5. 参考资料
何晓群《应用回归分析》
李航《统计学方法》
6. 结束
以上介绍了逻辑回归的一些基础知识,了解这些基础知识对后续章节学习隐私计算模式下的逻辑回归有很大的帮助,我们希望为读者展示一个全面的知识框架体系。同时,我们的 WeFe 隐私计算开源平台提供了一套完整且友好的开源框架,在各位读者朋友了解基础理论框架后,欢迎使用我们的开源平台进行工程实现的算法学习。
欢迎扫码添加 WeFe 小助手(微信号:tianmiantech001),加入我们的WeFe 技术交流群哦~