Logistic回归的目标函数
∙
\bullet
∙ Logistic回归的损失函数采用Logistic损失/交叉熵损失
L
(
y
,
μ
(
x
)
)
=
−
y
l
o
g
μ
(
x
)
−
(
1
−
y
)
l
o
g
(
1
−
μ
(
x
)
)
L(y, \mu(x)) = -ylog\mu(x) - (1-y)log(1-\mu(x))
L(y,μ(x))=−ylogμ(x)−(1−y)log(1−μ(x))
∙
\bullet
∙ 其中y为真值,
μ
(
x
)
=
σ
(
w
T
x
)
\mu(x) = \sigma(\mathbf w^T \mathbf x)
μ(x)=σ(wTx)为预测值为1的概率。
∙
\bullet
∙ 同其他机器学习模型一样,Logistic回归的目标函数也包括两项:训练集上的损失和 + 正则项
J
(
w
;
λ
)
=
∑
i
=
1
N
L
(
y
i
,
μ
(
x
i
;
w
)
)
+
λ
R
(
w
)
J(\mathbf w;\lambda) = \sum_{i=1}^{N}L(y_{i}, \mu(\mathbf x_{i};\mathbf w)) + \lambda R(\mathbf w)
J(w;λ)=i=1∑NL(yi,μ(xi;w))+λR(w)
∙
\bullet
∙ 类似回归任务,正则项R(w)可以是L1正则、L2正则、L1正则+L2正则,在线性回归模型中,分别对应岭回归(Ridge)、Lasso、弹性网络(ElasticNet)。
正则项
∙
\bullet
∙ 线性回归的目标函数可以不加正则项,这就是最小二乘(OLS)
∙
\bullet
∙ Logistic回归必须要加正则。原因:当训练万完全可分时,为了使Logistic损失和最小,也就是为0,则需要每个
L
(
y
i
,
μ
(
x
i
)
)
=
0
L(y_{i}, \mu(\mathbf x_{i})) = 0
L(yi,μ(xi))=0,进一步需要
μ
(
x
i
)
\mu(x_{i})
μ(xi)为0或1,而要使
μ
(
x
i
)
=
σ
(
w
T
x
i
)
=
1
/
0
\mu(x_{i}) = \sigma(\mathbf w^T\mathbf x_{i}) = 1/0
μ(xi)=σ(wTxi)=1/0,则要求
w
T
x
=
∞
/
−
∞
,
∣
w
j
∣
=
∞
\mathbf w^T \mathbf x =∞/-∞,|w_{j}| = ∞
wTx=∞/−∞,∣wj∣=∞,老师说,系数太大会使得模型没有意义,我觉具体点,这会使得模型震荡较大,对噪声很敏感。总之,这不是一个好模型。
∙
\bullet
∙ L1正则:
∣
∣
w
∣
∣
1
=
∑
i
=
1
D
∣
w
j
∣
||w||_{1} = \sum_{i=1}^{D} |w_{j}|
∣∣w∣∣1=∑i=1D∣wj∣
∙
\bullet
∙ L2正则:
∣
∣
w
∣
∣
2
2
=
∑
i
=
1
D
w
j
2
||w||_{2}^2 = \sum_{i=1}^{D} w_{j}^2
∣∣w∣∣22=∑i=1Dwj2
∙
\bullet
∙ Scikit-Learn中实现Logistic回归的LogisticRegression也是带正则项的,默认为L2。class sklearn.linear_model.LogisticRegression(penalty=‘L2’, dual=‘False’, tol=0.0001, c=1.0, …)。实现的目标函数为:
J
(
w
;
c
)
=
c
∑
i
=
1
N
L
(
y
i
,
μ
(
x
i
;
w
)
)
+
R
(
w
)
J(\mathbf w;c) = c\sum_{i=1}^{N}L(y_{i}, \mu(\mathbf x_{i};\mathbf w)) + R(\mathbf w)
J(w;c)=ci=1∑NL(yi,μ(xi;w))+R(w)正如上边目标函数表达的那样,Scikit-Learn中实现的目标函数与理论中讲的不太一样:正则项没有
λ
\lambda
λ,而损失函数前多了系数
c
c
c,从之前讲的
λ
\lambda
λ作用是控制损失项与正则项的权重来看,此处实现的函数是可以理解的。老师讲到
λ
\lambda
λ与
c
c
c相当于是倒数关系,这个应如何理解呢?