逻辑回归¶
1、逻辑回归与线性回归的联系与区别
2、逻辑回归的原理
3、逻辑回归损失函数推导及优化
4、正则化与模型评估指标
5、逻辑回归的优缺点
6、样本不均衡问题解决办法
7、sklearn参数
8、代码实现
1、逻辑回归与线性回归的联系与区别
2、逻辑回归的原理
3、逻辑回归损失函数推导及优化
4、正则化与模型评估指标
5、逻辑回归的优缺点
6、样本不均衡问题解决办法
7、sklearn参数
8、代码实现
## 1、逻辑回归与线性回归的联系与区别
1、逻辑回归与线性回归的联系与区别¶
线性回归解决的是连续变量问题,那么在分类任务中可以用线性回归吗?例如判断是良性肿瘤还是恶性肿瘤,判断是垃圾邮件还是正常邮件,等等……
线性回归解决的是连续变量问题,那么在分类任务中可以用线性回归吗?例如判断是良性肿瘤还是恶性肿瘤,判断是垃圾邮件还是正常邮件,等等……
答案是也可以,但是效果不好,见下图:
答案是也可以,但是效果不好,见下图:
<img src = "https://i-blog.csdnimg.cn/blog_migrate/e4350051994f785fe1fbf010b73b5cfb.png">
图显示了是否购买玩具和年龄之间的关系,可以用线性回归拟合成一条直线,将购买标注为1,不购买标注为0,拟合后取当0.5值为阈值来划分类别。
图显示了是否购买玩具和年龄之间的关系,可以用线性回归拟合成一条直线,将购买标注为1,不购买标注为0,拟合后取当0.5值为阈值来划分类别。
$$\hat y = \begin{cases}
1,& f(x)>0.5\\
0,& f(x)<0.5
\end{cases}$$
𝑦̂={1,0,𝑓(𝑥)>0.5𝑓(𝑥)<0.5y^={1,f(x)>0.50,f(x)<0.5
可以看到,在途中,年龄的区分点约为19岁。
可以看到,在途中,年龄的区分点约为19岁。
但当数据点不平衡时,很容易影响到阈值,见以下图:
但当数据点不平衡时,很容易影响到阈值,见以下图:
<img src = "https://i-blog.csdnimg.cn/blog_migrate/dfce9f2649af62ce64e3edcfc8c620a9.png">
img src = "https://i-blog.csdnimg.cn/blog_migrate/dfce9f2649af62ce64e3edcfc8c620a9.png">
可以看到,0值样本的年龄段往高年龄端偏移后,真实的阈值依然是19岁左右,但拟合出来的曲线的阈值往后边偏移了。可以想想,负样本越多,年龄大的人越多,偏移越严重。
可以看到,0值样本的年龄段往高年龄端偏移后,真实的阈值依然是19岁左右,但拟合出来的曲线的阈值往后边偏移了。可以想想,负样本越多,年龄大的人越多,偏移越严重。
可是这符合实际情况吗?实际情况是60岁的老人和80岁的老人都不会购买玩具,增加几位80岁的老人,并不会影响20岁以下人群购买玩具的概率。但因为拟合曲线原本的值域为$(-\infty \ \infty)$而转换后的值域为[0,1],阈值对变量偏移很敏感。
$(-\infty \ \infty)$而转换后的值域为[0,1],阈值对变量偏移很敏感。
可是这符合实际情况吗?实际情况是60岁的老人和80岁的老人都不会购买玩具,增加几位80岁的老人,并不会影响20岁以下人群购买玩具的概率。但因为拟合曲线原本的值域为(−∞ ∞)(−∞ ∞) 而转换后的值域为[0,1],阈值对变量偏移很敏感。
## 2、逻辑回归的原理
2、逻辑回归的原理¶
因此理想的替代函数应当预测分类为0或1的概率,当为1的概率大于0.5时,判断为1,当为1的概率小于0.5时,判断为0。因概率的值域为$[0,1]$,这样的设定比线性回归合理很多。
因此理想的替代函数应当预测分类为0或1的概率,当为1的概率大于0.5时,判断为1,当为1的概率小于0.5时,判断为0。因概率的值域为[0,1][0,1] ,这样的设定比线性回归合理很多。
常用的替代函数为Sigmoid函数,即:
常用的替代函数为Sigmoid函数,即:
$$
h(z) = \frac{1}{1+e^{-z}}
$$
ℎ(𝑧)=11+𝑒−𝑧h(z)=11+e−z
其中,$z = \theta^T x$
其中,𝑧=𝜃𝑇𝑥z=θTx
我们可以看到,当z大于0时,函数大于0.5;当函数等于0时,函数等于0.5;函数小于0时,函数小于0.5。如果用函数表示目标分到某一类的概率,我们可以采用以下“单位阶跃函数”来判断数据的类别:
我们可以看到,当z大于0时,函数大于0.5;当函数等于0时,函数等于0.5;函数小于0时,函数小于0.5。如果用函数表示目标分到某一类的概率,我们可以采用以下“单位阶跃函数”来判断数据的类别:
$$h(z) = \left\{
\begin{aligned}
0,& & z<0 \\
0.5, & & z=0 \\
1, & & z>0
\end{aligned}
\right.$$
ℎ(𝑧)=0,0.5,1,𝑧<0𝑧=0𝑧>0h(z)={0,z<00.5,z=01,z>0
若Z大于0,则判断为正例;若小于0,判断为反例;若等于0,可任意判别。由于Sigmoid函数单调且可导,函数在(0,1)之间程Z字型,可以很好的模拟二分类情况,因此很适合我们要解决的问题。
接下来我们来推导逻辑回归函数的优化
若Z大于0,则判断为正例;若小于0,判断为反例;若等于0,可任意判别。由于Sigmoid函数单调且可导,函数在(0,1)之间程Z字型,可以很好的模拟二分类情况,因此很适合我们要解决的问题。
接下来我们来推导逻辑回归函数的优化
## 3、逻辑回归损失函数推导及优化
3、逻辑回归损失函数推导及优化¶
$$
P(y=1|x;\theta) = h_\theta (x) \\
P(y=0|x;\theta) = 1-h_\theta (x)
$$
𝑃(𝑦=1|𝑥;𝜃)=ℎ𝜃(𝑥)𝑃(𝑦=0|𝑥;𝜃)=1−ℎ𝜃(𝑥)P(y=1|x;θ)=hθ(x)P(y=0|x;θ)=1−hθ(x)
可以写作一般公式,
可以写作一般公式,
$$P(y|x;\theta)= h(x)^y (1-h(x))^{(1-y)}$$
𝑃(𝑦|𝑥;𝜃)=ℎ(𝑥)𝑦(1−ℎ(𝑥))(1−𝑦)P(y|x;θ)=h(x)y(1−h(x))(1−y)
极大似然函数为,
极大似然函数为,
$$
L(\theta) = \prod^{m}_{i=1}h_\theta (x^{(i)})^{y^{(i)}} (1-h_\theta (x^{(i)})^{(1-y^{(i)})}
$$
𝐿(𝜃)=∏𝑖=1𝑚ℎ𝜃(𝑥(𝑖))𝑦(𝑖)(1−ℎ𝜃(𝑥(𝑖))(1−𝑦(𝑖))L(θ)=∏i=1mhθ(x(i))y(i)(1−hθ(x(i))(1−y(i))
对数极大似然函数为,
对数极大似然函数为,
$$l(\theta) = log L(\theta) = \sum^{m}_{i=1} y^{(i)}log h_\theta (x^{(i)}) + (1-y^{(i)})log (1-h_\theta (x^{(i)}))
$$
𝑙(𝜃)=𝑙𝑜𝑔𝐿(𝜃)=∑𝑖=1𝑚𝑦(𝑖)𝑙𝑜𝑔ℎ𝜃(𝑥(𝑖))+(1−𝑦(𝑖))𝑙𝑜𝑔(1−ℎ𝜃(𝑥(𝑖)))l(θ)=logL(θ)=∑i=1my(i)loghθ(x(i))+(1−y(i))log(1−hθ(x(i)))
损失函数为,
损失函数为,
$$
J(\theta) = -\frac{1}{m}l(\theta) = -\frac{1}{m}\sum^{m}_{i=1} y^{(i)}h_\theta (x^{(i)}) + (1-y^{(i)})(1-h_\theta (x^{(i)}))
$$
𝐽(𝜃)=−1𝑚𝑙(𝜃)=−1𝑚∑𝑖=1𝑚𝑦(𝑖)ℎ𝜃(𝑥(𝑖))+(1−𝑦(𝑖))(1−ℎ𝜃(𝑥(𝑖)))J(θ)=−1ml(θ)=−1m∑i=1my(i)hθ(x(i))+(1−y(i))(1−hθ(x(i)))
损失函数表示了预测值和真实值之间的差异程度,预测值和真实值越接近,则损失函数越小。
损失函数表示了预测值和真实值之间的差异程度,预测值和真实值越接近,则损失函数越小。
#### 思考题:为什么不直接用和线性回归一样的平方损失函数?
思考题:为什么不直接用和线性回归一样的平方损失函数?¶
*回答:如果和线性回归一样的平方损失函数,则损失函数的形式为$\sum^m_{i=1}(y^{(i)}-\frac{1}{1+e^{-\theta^T x}})^2$,此为非凸函数,求解复杂,而且很容易求得局部最优解为非全局最优解。*
回答:如果和线性回归一样的平方损失函数,则损失函数的形式为∑𝑚𝑖=1(𝑦(𝑖)−11+𝑒−𝜃𝑇𝑥)2∑i=1m(y(i)−11+e−θTx)2 ,此为非凸函数,求解复杂,而且很容易求得局部最优解为非全局最优解。
我们用梯度下降法求解,
我们用梯度下降法求解,
$$\theta:=\theta-\alpha\Delta_\theta J(\theta) = \theta + \frac{\alpha}{m}\Delta_\theta l(\theta)$$
𝜃:=𝜃−𝛼Δ𝜃𝐽(𝜃)=𝜃+𝛼𝑚Δ𝜃𝑙(𝜃)θ:=θ−αΔθJ(θ)=θ+αmΔθl(θ)
由于$g'_\theta(z) = g_\theta (z)(1-g_\theta(z))$
由于𝑔′𝜃(𝑧)=𝑔𝜃(𝑧)(1−𝑔𝜃(𝑧))gθ′(z)=gθ(z)(1−gθ(z))
<td bgcolor=#87CEEB>小练习:试证明,当$g(z) = \frac{1}{1+e^{-z}}$</td>
<td bgcolor=#87CEEB>$g'(z) = g(z)(1-g(z))$</td>小练习:试证明,当𝑔(𝑧)=11+𝑒−𝑧g(z)=11+e−z𝑔′(𝑧)=𝑔(𝑧)(1−𝑔(𝑧))g′(z)=g(z)(1−g(z))
证明:
证明:
\begin{align*}
g'(z)
&= \frac{-1}{(1+e^{-z})^2}(-e^{-z}) \\
&= \frac{e^{-z}}{(1+e^{-z})^2} \\
&= \frac{1}{1+e^{-z}} \cdot \frac{e^{-z}}{1+e^{-z}} \\
&= g(z)(1-g(z))
\end{align*}
𝑔′(𝑧)=−1(1+𝑒−𝑧)2(−𝑒−𝑧)=𝑒−𝑧(1+𝑒−𝑧)2=11+𝑒−𝑧⋅𝑒−𝑧1+𝑒−𝑧=𝑔(𝑧)(1−𝑔(𝑧))g′(z)=−1(1+e−z)2(−e−z)=e−z(1+e−z)2=11+e−z⋅e−z1+e−z=g(z)(1−g(z))
因此可以求得,
因此可以求得,
\begin{align*}
\frac{\partial J(\theta)}{\partial \theta_i}
&= \frac{1}{m}\sum^m_{i=1} y^{(i)}\frac{1}{h_\theta (x^{(i)})} h_\theta (x^{(i)})(1-h_\theta (x^{(i)}))x^{(i)} + (1-y^{(i)})\frac{1}{1-h_\theta (x^{(i)})}h_\theta (x^{(i)})(h_\theta (x^{(i)})-1)\\
&= \frac{1}{m}\sum^m_{i=1}y^{(i)}(1-h_\theta (x^{(i)}))x^{(i)}+(y^{(i)}-1)h_\theta (x^{(i)})x^{(i)} \\
& = \frac{1}{m}\sum^m_{i=1}(y^{(i)} - h_\theta (x^{(i)}))x^{(i)}
\end{align*}
∂𝐽(𝜃)∂𝜃𝑖=1𝑚∑𝑖=1𝑚𝑦(𝑖)1ℎ𝜃(𝑥(𝑖))ℎ𝜃(𝑥(𝑖))(1−ℎ𝜃(𝑥(𝑖)))𝑥(𝑖)+(1−𝑦(𝑖))11−ℎ𝜃(𝑥(𝑖))ℎ𝜃(𝑥(𝑖))(ℎ𝜃(𝑥(𝑖))−1)=1𝑚∑𝑖=1𝑚𝑦(𝑖)(1−ℎ𝜃(𝑥(𝑖)))𝑥(𝑖)+(𝑦(𝑖)−1)ℎ𝜃(𝑥(𝑖))𝑥(𝑖)=1𝑚∑𝑖=1𝑚(𝑦(𝑖)−ℎ𝜃(𝑥(𝑖)))𝑥(𝑖)∂J(θ)∂θi=1m∑i=1my(i)1hθ(x(i))hθ(x(i))(1−hθ(x(i)))x(i)+(1−y(i))11−hθ(x(i))hθ(x(i))(hθ(x(i))−1)=1m∑i=1my(i)(1−hθ(x(i)))x(i)+(y(i)−1)hθ(x(i))x(i)=1m∑i=1m(y(i)−hθ(x(i)))x(i)
可以看到,形式和线性回归很相似,这是因为他们都属于广义线性模型(GLM,可参考吴恩达-CS229 第四课)。
可以看到,形式和线性回归很相似,这是因为他们都属于广义线性模型(GLM,可参考吴恩达-CS229 第四课)。
### 逻辑回归的分布式实现
逻辑回归的分布式实现¶
由于单机处理能力的限制,在对大规模样本训练时,往往需要将求解过程并行化。我们知道在求解过程中,行和列都存在批向量处理的情况,我们可以按行并行和按列并行。
由于单机处理能力的限制,在对大规模样本训练时,往往需要将求解过程并行化。我们知道在求解过程中,行和列都存在批向量处理的情况,我们可以按行并行和按列并行。
#### 按行并行
按行并行¶
看$\frac{\partial J(\theta)}{\partial \theta_i} =\frac{1}{m}\sum^m_{i=1}(y^{(i)} - h_\theta (x^{(i)}))x^{(i)}$,相当于将上个迭代步骤结果,将每个样本进行运算后求和,那么只需将样本拆分到不同机器上运算,最后在求和即可。
看∂𝐽(𝜃)∂𝜃𝑖=1𝑚∑𝑚𝑖=1(𝑦(𝑖)−ℎ𝜃(𝑥(𝑖)))𝑥(𝑖)∂J(θ)∂θi=1m∑i=1m(y(i)−hθ(x(i)))x(i) ,相当于将上个迭代步骤结果,将每个样本进行运算后求和,那么只需将样本拆分到不同机器上运算,最后在求和即可。
#### 按列并行
按列并行¶
$\frac{\partial J(\theta)}{\partial \theta_i} =\frac{1}{m}\sum^m_{i=1}(y^{(i)} - h_\theta (x^{(i)}))x^{(i)}$是对参数$\theta_i$进行的运算,那么只需将特征分配到不同的机器上,分别计算梯度后,再归并到完整的特征向量进行梯度更新即可。
∂𝐽(𝜃)∂𝜃𝑖=1𝑚∑𝑚𝑖=1(𝑦(𝑖)−ℎ𝜃(𝑥(𝑖)))𝑥(𝑖)∂J(θ)∂θi=1m∑i=1m(y(i)−hθ(x(i)))x(i) 是对参数𝜃𝑖θi 进行的运算,那么只需将特征分配到不同的机器上,分别计算梯度后,再归并到完整的特征向量进行梯度更新即可。
## 4、正则化与模型评估指标
4、正则化与模型评估指标¶
### 正则化
正则化¶
我们可以在损失函数后面,加上正则化函数,即$\theta$的惩罚项,来抑制过拟合问题。
我们可以在损失函数后面,加上正则化函数,即𝜃θ 的惩罚项,来抑制过拟合问题。
#### L1正则:
L1正则:¶
$$
J(\theta) =\frac{1}{m}\sum^{m}_{i=1} y^{(i)}h_\theta (x^{(i)}) + (1-y^{(i)})(1-h_\theta (x^{(i)})) + \frac{\lambda}{m
}\sum^m_{i=1}|\theta_i|
$$
𝐽(𝜃)=1𝑚∑𝑖=1𝑚𝑦(𝑖)ℎ𝜃(𝑥(𝑖))+(1−𝑦(𝑖))(1−ℎ𝜃(𝑥(𝑖)))+𝜆𝑚∑𝑖=1𝑚|𝜃𝑖|J(θ)=1m∑i=1my(i)hθ(x(i))+(1−y(i))(1−hθ(x(i)))+λm∑i=1m|θi|
$$
\Delta_{\theta_i} l(\theta) = \frac{1}{m}\sum^m_{i=1}(y^{(i)} - h_\theta (x^{(i)}))x^{(i)} + \frac{\lambda}{m}sgn(\theta_i)
$$
Δ𝜃𝑖𝑙(𝜃)=1𝑚∑𝑖=1𝑚(𝑦(𝑖)−ℎ𝜃(𝑥(𝑖)))𝑥(𝑖)+𝜆𝑚𝑠𝑔𝑛(𝜃𝑖)Δθil(θ)=1m∑i=1m(y(i)−hθ(x(i)))x(i)+λmsgn(θi)
梯度下降法的迭代函数变为,
梯度下降法的迭代函数变为,
$$\theta:=\theta-K'(\theta)-\frac{\lambda}{m}sgn(\theta)$$
𝜃:=𝜃−𝐾′(𝜃)−𝜆𝑚𝑠𝑔𝑛(𝜃)θ:=θ−K′(θ)−λmsgn(θ)
$K(\theta)$为原来的损失函数,由于最后一项的符号由$\theta$决定,可以看到,当$\theta$大于零时,更新后的$\theta$变小;当$\theta$小于零时,更新后的$\theta$变大。因此,L1正则化调整后的结果会更加稀疏(结果向量中有更多的0值)。(见图示,相当于在等高线上找令菱形最小的点。)
𝐾(𝜃)K(θ) 为原来的损失函数,由于最后一项的符号由𝜃θ 决定,可以看到,当𝜃θ 大于零时,更新后的𝜃θ 变小;当𝜃θ 小于零时,更新后的𝜃θ 变大。因此,L1正则化调整后的结果会更加稀疏(结果向量中有更多的0值)。(见图示,相当于在等高线上找令菱形最小的点。)
![image.png](attachment:image.png)
#### L2正则
L2正则¶
$$
J(\theta) =\frac{1}{m}\sum^{m}_{i=1} y^{(i)}h_\theta (x^{(i)}) + (1-y^{(i)})(1-h_\theta (x^{(i)})) + \frac{\lambda}{2m}\sum^m_{i=1}\theta_i^2
$$
𝐽(𝜃)=1𝑚∑𝑖=1𝑚𝑦(𝑖)ℎ𝜃(𝑥(𝑖))+(1−𝑦(𝑖))(1−ℎ𝜃(𝑥(𝑖)))+𝜆2𝑚∑𝑖=1𝑚𝜃2𝑖J(θ)=1m∑i=1my(i)hθ(x(i))+(1−y(i))(1−hθ(x(i)))+λ2m∑i=1mθi2
$$
\Delta_{\theta_i} l(\theta) = \frac{1}{m}\sum^m_{i=1}(y^{(i)} - h_\theta (x^{(i)}))x^{(i)} + \frac{\lambda}{m}\theta_i
$$
Δ𝜃𝑖𝑙(𝜃)=1𝑚∑𝑖=1𝑚(𝑦(𝑖)−ℎ𝜃(𝑥(𝑖)))𝑥(𝑖)+𝜆𝑚𝜃𝑖Δθil(θ)=1m∑i=1m(y(i)−hθ(x(i)))x(i)+λmθi
梯度下降法的迭代函数变为,
梯度下降法的迭代函数变为,
$$\theta:=\theta-K'(\theta)-\frac{2\lambda}{m}\theta$$
𝜃:=𝜃−𝐾′(𝜃)−2𝜆𝑚𝜃θ:=θ−K′(θ)−2λmθ
$K(\theta)$为原来的损失函数,最有一项的$\lambda$决定了对参数的惩罚力度,惩罚力度越大,最后的结果向量的参数普遍较小且分散,避免了个别参数对整个函数起较大的影响。(见图示,相当于在等高线上找令圆形最小的点)
𝐾(𝜃)K(θ) 为原来的损失函数,最有一项的𝜆λ 决定了对参数的惩罚力度,惩罚力度越大,最后的结果向量的参数普遍较小且分散,避免了个别参数对整个函数起较大的影响。(见图示,相当于在等高线上找令圆形最小的点)
![image.png](attachment:image.png)
#### 逻辑回归的评价指标
逻辑回归的评价指标¶
由于逻辑回归模型属于分类模型,不能用线性回归的评价指标。
二元分类的评价指标基本都适用于逻辑回归。
观察以下混淆矩阵,
由于逻辑回归模型属于分类模型,不能用线性回归的评价指标。 二元分类的评价指标基本都适用于逻辑回归。 观察以下混淆矩阵,
![image.png](attachment:image.png)
我们可以用查准率和查全率来评价预测结果:
* 查准率 $P =\frac{TP}{TP+FP}$
* 查全率 $R =\frac{TP}{TP+FN}$
我们可以用查准率和查全率来评价预测结果:
- 查准率 𝑃=𝑇𝑃𝑇𝑃+𝐹𝑃P=TPTP+FP
- 查全率 𝑅=𝑇𝑃𝑇𝑃+𝐹𝑁R=TPTP+FN
我们可以用P-R曲线表示查准率和查全率之间的关系:
我们可以用P-R曲线表示查准率和查全率之间的关系:
查准率和查全率经常相互矛盾,一般查准率高时查全率低,查全率高时查准率低。我们经常针对具体的应用场景决定更看重哪一个指标。
查准率和查全率经
逻辑回归¶
1、逻辑回归与线性回归的联系与区别
2、逻辑回归的原理
3、逻辑回归损失函数推导及优化
4、正则化与模型评估指标
5、逻辑回归的优缺点
6、样本不均衡问题解决办法
7、sklearn参数
8、代码实现
1、逻辑回归与线性回归的联系与区别
2、逻辑回归的原理
3、逻辑回归损失函数推导及优化
4、正则化与模型评估指标
5、逻辑回归的优缺点
6、样本不均衡问题解决办法
7、sklearn参数
8、代码实现
## 1、逻辑回归与线性回归的联系与区别
1、逻辑回归与线性回归的联系与区别¶
线性回归解决的是连续变量问题,那么在分类任务中可以用线性回归吗?例如判断是良性肿瘤还是恶性肿瘤,判断是垃圾邮件还是正常邮件,等等……
线性回归解决的是连续变量问题,那么在分类任务中可以用线性回归吗?例如判断是良性肿瘤还是恶性肿瘤,判断是垃圾邮件还是正常邮件,等等……
答案是也可以,但是效果不好,见下图:
答案是也可以,但是效果不好,见下图:
<img src = "https://i-blog.csdnimg.cn/blog_migrate/e4350051994f785fe1fbf010b73b5cfb.png">
图显示了是否购买玩具和年龄之间的关系,可以用线性回归拟合成一条直线,将购买标注为1,不购买标注为0,拟合后取当0.5值为阈值来划分类别。
图显示了是否购买玩具和年龄之间的关系,可以用线性回归拟合成一条直线,将购买标注为1,不购买标注为0,拟合后取当0.5值为阈值来划分类别。
$$\hat y = \begin{cases}
1,& f(x)>0.5\\
0,& f(x)<0.5
\end{cases}$$
𝑦̂={1,0,𝑓(𝑥)>0.5𝑓(𝑥)<0.5y^={1,f(x)>0.50,f(x)<0.5
可以看到,在途中,年龄的区分点约为19岁。
可以看到,在途中,年龄的区分点约为19岁。
但当数据点不平衡时,很容易影响到阈值,见以下图:
但当数据点不平衡时,很容易影响到阈值,见以下图:
<img src = "https://i-blog.csdnimg.cn/blog_migrate/dfce9f2649af62ce64e3edcfc8c620a9.png">
img src = "https://i-blog.csdnimg.cn/blog_migrate/dfce9f2649af62ce64e3edcfc8c620a9.png">
可以看到,0值样本的年龄段往高年龄端偏移后,真实的阈值依然是19岁左右,但拟合出来的曲线的阈值往后边偏移了。可以想想,负样本越多,年龄大的人越多,偏移越严重。
可以看到,0值样本的年龄段往高年龄端偏移后,真实的阈值依然是19岁左右,但拟合出来的曲线的阈值往后边偏移了。可以想想,负样本越多,年龄大的人越多,偏移越严重。
可是这符合实际情况吗?实际情况是60岁的老人和80岁的老人都不会购买玩具,增加几位80岁的老人,并不会影响20岁以下人群购买玩具的概率。但因为拟合曲线原本的值域为$(-\infty \ \infty)$而转换后的值域为[0,1],阈值对变量偏移很敏感。
$(-\infty \ \infty)$而转换后的值域为[0,1],阈值对变量偏移很敏感。
可是这符合实际情况吗?实际情况是60岁的老人和80岁的老人都不会购买玩具,增加几位80岁的老人,并不会影响20岁以下人群购买玩具的概率。但因为拟合曲线原本的值域为(−∞ ∞)(−∞ ∞) 而转换后的值域为[0,1],阈值对变量偏移很敏感。
## 2、逻辑回归的原理
2、逻辑回归的原理¶
因此理想的替代函数应当预测分类为0或1的概率,当为1的概率大于0.5时,判断为1,当为1的概率小于0.5时,判断为0。因概率的值域为$[0,1]$,这样的设定比线性回归合理很多。
因此理想的替代函数应当预测分类为0或1的概率,当为1的概率大于0.5时,判断为1,当为1的概率小于0.5时,判断为0。因概率的值域为[0,1][0,1] ,这样的设定比线性回归合理很多。
常用的替代函数为Sigmoid函数,即:
常用的替代函数为Sigmoid函数,即:
$$
h(z) = \frac{1}{1+e^{-z}}
$$
ℎ(𝑧)=11+𝑒−𝑧h(z)=11+e−z
其中,$z = \theta^T x$
其中,𝑧=𝜃𝑇𝑥z=θTx
我们可以看到,当z大于0时,函数大于0.5;当函数等于0时,函数等于0.5;函数小于0时,函数小于0.5。如果用函数表示目标分到某一类的概率,我们可以采用以下“单位阶跃函数”来判断数据的类别:
我们可以看到,当z大于0时,函数大于0.5;当函数等于0时,函数等于0.5;函数小于0时,函数小于0.5。如果用函数表示目标分到某一类的概率,我们可以采用以下“单位阶跃函数”来判断数据的类别:
$$h(z) = \left\{
\begin{aligned}
0,& & z<0 \\
0.5, & & z=0 \\
1, & & z>0
\end{aligned}
\right.$$
ℎ(𝑧)=0,0.5,1,𝑧<0𝑧=0𝑧>0h(z)={0,z<00.5,z=01,z>0
若Z大于0,则判断为正例;若小于0,判断为反例;若等于0,可任意判别。由于Sigmoid函数单调且可导,函数在(0,1)之间程Z字型,可以很好的模拟二分类情况,因此很适合我们要解决的问题。
接下来我们来推导逻辑回归函数的优化
若Z大于0,则判断为正例;若小于0,判断为反例;若等于0,可任意判别。由于Sigmoid函数单调且可导,函数在(0,1)之间程Z字型,可以很好的模拟二分类情况,因此很适合我们要解决的问题。
接下来我们来推导逻辑回归函数的优化
## 3、逻辑回归损失函数推导及优化
3、逻辑回归损失函数推导及优化¶
$$
P(y=1|x;\theta) = h_\theta (x) \\
P(y=0|x;\theta) = 1-h_\theta (x)
$$
𝑃(𝑦=1|𝑥;𝜃)=ℎ𝜃(𝑥)𝑃(𝑦=0|𝑥;𝜃)=1−ℎ𝜃(𝑥)P(y=1|x;θ)=hθ(x)P(y=0|x;θ)=1−hθ(x)
可以写作一般公式,
可以写作一般公式,
$$P(y|x;\theta)= h(x)^y (1-h(x))^{(1-y)}$$
𝑃(𝑦|𝑥;𝜃)=ℎ(𝑥)𝑦(1−ℎ(𝑥))(1−𝑦)P(y|x;θ)=h(x)y(1−h(x))(1−y)
极大似然函数为,
极大似然函数为,
$$
L(\theta) = \prod^{m}_{i=1}h_\theta (x^{(i)})^{y^{(i)}} (1-h_\theta (x^{(i)})^{(1-y^{(i)})}
$$
𝐿(𝜃)=∏𝑖=1𝑚ℎ𝜃(𝑥(𝑖))𝑦(𝑖)(1−ℎ𝜃(𝑥(𝑖))(1−𝑦(𝑖))L(θ)=∏i=1mhθ(x(i))y(i)(1−hθ(x(i))(1−y(i))
对数极大似然函数为,
对数极大似然函数为,
$$l(\theta) = log L(\theta) = \sum^{m}_{i=1} y^{(i)}log h_\theta (x^{(i)}) + (1-y^{(i)})log (1-h_\theta (x^{(i)}))
$$
𝑙(𝜃)=𝑙𝑜𝑔𝐿(𝜃)=∑𝑖=1𝑚𝑦(𝑖)𝑙𝑜𝑔ℎ𝜃(𝑥(𝑖))+(1−𝑦(𝑖))𝑙𝑜𝑔(1−ℎ𝜃(𝑥(𝑖)))l(θ)=logL(θ)=∑i=1my(i)loghθ(x(i))+(1−y(i))log(1−hθ(x(i)))
损失函数为,
损失函数为,
$$
J(\theta) = -\frac{1}{m}l(\theta) = -\frac{1}{m}\sum^{m}_{i=1} y^{(i)}h_\theta (x^{(i)}) + (1-y^{(i)})(1-h_\theta (x^{(i)}))
$$
𝐽(𝜃)=−1𝑚𝑙(𝜃)=−1𝑚∑𝑖=1𝑚𝑦(𝑖)ℎ𝜃(𝑥(𝑖))+(1−𝑦(𝑖))(1−ℎ𝜃(𝑥(𝑖)))J(θ)=−1ml(θ)=−1m∑i=1my(i)hθ(x(i))+(1−y(i))(1−hθ(x(i)))
损失函数表示了预测值和真实值之间的差异程度,预测值和真实值越接近,则损失函数越小。
损失函数表示了预测值和真实值之间的差异程度,预测值和真实值越接近,则损失函数越小。
#### 思考题:为什么不直接用和线性回归一样的平方损失函数?
思考题:为什么不直接用和线性回归一样的平方损失函数?¶
*回答:如果和线性回归一样的平方损失函数,则损失函数的形式为$\sum^m_{i=1}(y^{(i)}-\frac{1}{1+e^{-\theta^T x}})^2$,此为非凸函数,求解复杂,而且很容易求得局部最优解为非全局最优解。*
回答:如果和线性回归一样的平方损失函数,则损失函数的形式为∑𝑚𝑖=1(𝑦(𝑖)−11+𝑒−𝜃𝑇𝑥)2∑i=1m(y(i)−11+e−θTx)2 ,此为非凸函数,求解复杂,而且很容易求得局部最优解为非全局最优解。
我们用梯度下降法求解,
我们用梯度下降法求解,
$$\theta:=\theta-\alpha\Delta_\theta J(\theta) = \theta + \frac{\alpha}{m}\Delta_\theta l(\theta)$$
𝜃:=𝜃−𝛼Δ𝜃𝐽(𝜃)=𝜃+𝛼𝑚Δ𝜃𝑙(𝜃)θ:=θ−αΔθJ(θ)=θ+αmΔθl(θ)
由于$g'_\theta(z) = g_\theta (z)(1-g_\theta(z))$
由于𝑔′𝜃(𝑧)=𝑔𝜃(𝑧)(1−𝑔𝜃(𝑧))gθ′(z)=gθ(z)(1−gθ(z))
<td bgcolor=#87CEEB>小练习:试证明,当$g(z) = \frac{1}{1+e^{-z}}$</td>
<td bgcolor=#87CEEB>$g'(z) = g(z)(1-g(z))$</td>小练习:试证明,当𝑔(𝑧)=11+𝑒−𝑧g(z)=11+e−z𝑔′(𝑧)=𝑔(𝑧)(1−𝑔(𝑧))g′(z)=g(z)(1−g(z))
证明:
证明:
\begin{align*}
g'(z)
&= \frac{-1}{(1+e^{-z})^2}(-e^{-z}) \\
&= \frac{e^{-z}}{(1+e^{-z})^2} \\
&= \frac{1}{1+e^{-z}} \cdot \frac{e^{-z}}{1+e^{-z}} \\
&= g(z)(1-g(z))
\end{align*}
𝑔′(𝑧)=−1(1+𝑒−𝑧)2(−𝑒−𝑧)=𝑒−𝑧(1+𝑒−𝑧)2=11+𝑒−𝑧⋅𝑒−𝑧1+𝑒−𝑧=𝑔(𝑧)(1−𝑔(𝑧))g′(z)=−1(1+e−z)2(−e−z)=e−z(1+e−z)2=11+e−z⋅e−z1+e−z=g(z)(1−g(z))
因此可以求得,
因此可以求得,
\begin{align*}
\frac{\partial J(\theta)}{\partial \theta_i}
&= \frac{1}{m}\sum^m_{i=1} y^{(i)}\frac{1}{h_\theta (x^{(i)})} h_\theta (x^{(i)})(1-h_\theta (x^{(i)}))x^{(i)} + (1-y^{(i)})\frac{1}{1-h_\theta (x^{(i)})}h_\theta (x^{(i)})(h_\theta (x^{(i)})-1)\\
&= \frac{1}{m}\sum^m_{i=1}y^{(i)}(1-h_\theta (x^{(i)}))x^{(i)}+(y^{(i)}-1)h_\theta (x^{(i)})x^{(i)} \\
& = \frac{1}{m}\sum^m_{i=1}(y^{(i)} - h_\theta (x^{(i)}))x^{(i)}
\end{align*}
∂𝐽(𝜃)∂𝜃𝑖=1𝑚∑𝑖=1𝑚𝑦(𝑖)1ℎ𝜃(𝑥(𝑖))ℎ𝜃(𝑥(𝑖))(1−ℎ𝜃(𝑥(𝑖)))𝑥(𝑖)+(1−𝑦(𝑖))11−ℎ𝜃(𝑥(𝑖))ℎ𝜃(𝑥(𝑖))(ℎ𝜃(𝑥(𝑖))−1)=1𝑚∑𝑖=1𝑚𝑦(𝑖)(1−ℎ𝜃(𝑥(𝑖)))𝑥(𝑖)+(𝑦(𝑖)−1)ℎ𝜃(𝑥(𝑖))𝑥(𝑖)=1𝑚∑𝑖=1𝑚(𝑦(𝑖)−ℎ𝜃(𝑥(𝑖)))𝑥(𝑖)∂J(θ)∂θi=1m∑i=1my(i)1hθ(x(i))hθ(x(i))(1−hθ(x(i)))x(i)+(1−y(i))11−hθ(x(i))hθ(x(i))(hθ(x(i))−1)=1m∑i=1my(i)(1−hθ(x(i)))x(i)+(y(i)−1)hθ(x(i))x(i)=1m∑i=1m(y(i)−hθ(x(i)))x(i)
可以看到,形式和线性回归很相似,这是因为他们都属于广义线性模型(GLM,可参考吴恩达-CS229 第四课)。
可以看到,形式和线性回归很相似,这是因为他们都属于广义线性模型(GLM,可参考吴恩达-CS229 第四课)。
### 逻辑回归的分布式实现
逻辑回归的分布式实现¶
由于单机处理能力的限制,在对大规模样本训练时,往往需要将求解过程并行化。我们知道在求解过程中,行和列都存在批向量处理的情况,我们可以按行并行和按列并行。
由于单机处理能力的限制,在对大规模样本训练时,往往需要将求解过程并行化。我们知道在求解过程中,行和列都存在批向量处理的情况,我们可以按行并行和按列并行。
#### 按行并行
按行并行¶
看$\frac{\partial J(\theta)}{\partial \theta_i} =\frac{1}{m}\sum^m_{i=1}(y^{(i)} - h_\theta (x^{(i)}))x^{(i)}$,相当于将上个迭代步骤结果,将每个样本进行运算后求和,那么只需将样本拆分到不同机器上运算,最后在求和即可。
看∂𝐽(𝜃)∂𝜃𝑖=1𝑚∑𝑚𝑖=1(𝑦(𝑖)−ℎ𝜃(𝑥(𝑖)))𝑥(𝑖)∂J(θ)∂θi=1m∑i=1m(y(i)−hθ(x(i)))x(i) ,相当于将上个迭代步骤结果,将每个样本进行运算后求和,那么只需将样本拆分到不同机器上运算,最后在求和即可。
#### 按列并行
按列并行¶
$\frac{\partial J(\theta)}{\partial \theta_i} =\frac{1}{m}\sum^m_{i=1}(y^{(i)} - h_\theta (x^{(i)}))x^{(i)}$是对参数$\theta_i$进行的运算,那么只需将特征分配到不同的机器上,分别计算梯度后,再归并到完整的特征向量进行梯度更新即可。
∂𝐽(𝜃)∂𝜃𝑖=1𝑚∑𝑚𝑖=1(𝑦(𝑖)−ℎ𝜃(𝑥(𝑖)))𝑥(𝑖)∂J(θ)∂θi=1m∑i=1m(y(i)−hθ(x(i)))x(i) 是对参数𝜃𝑖θi 进行的运算,那么只需将特征分配到不同的机器上,分别计算梯度后,再归并到完整的特征向量进行梯度更新即可。
## 4、正则化与模型评估指标
4、正则化与模型评估指标¶
### 正则化
正则化¶
我们可以在损失函数后面,加上正则化函数,即$\theta$的惩罚项,来抑制过拟合问题。
我们可以在损失函数后面,加上正则化函数,即𝜃θ 的惩罚项,来抑制过拟合问题。
#### L1正则:
L1正则:¶
$$
J(\theta) =\frac{1}{m}\sum^{m}_{i=1} y^{(i)}h_\theta (x^{(i)}) + (1-y^{(i)})(1-h_\theta (x^{(i)})) + \frac{\lambda}{m
}\sum^m_{i=1}|\theta_i|
$$
𝐽(𝜃)=1𝑚∑𝑖=1𝑚𝑦(𝑖)ℎ𝜃(𝑥(𝑖))+(1−𝑦(𝑖))(1−ℎ𝜃(𝑥(𝑖)))+𝜆𝑚∑𝑖=1𝑚|𝜃𝑖|J(θ)=1m∑i=1my(i)hθ(x(i))+(1−y(i))(1−hθ(x(i)))+λm∑i=1m|θi|
$$
\Delta_{\theta_i} l(\theta) = \frac{1}{m}\sum^m_{i=1}(y^{(i)} - h_\theta (x^{(i)}))x^{(i)} + \frac{\lambda}{m}sgn(\theta_i)
$$
Δ𝜃𝑖𝑙(𝜃)=1𝑚∑𝑖=1𝑚(𝑦(𝑖)−ℎ𝜃(𝑥(𝑖)))𝑥(𝑖)+𝜆𝑚𝑠𝑔𝑛(𝜃𝑖)Δθil(θ)=1m∑i=1m(y(i)−hθ(x(i)))x(i)+λmsgn(θi)
梯度下降法的迭代函数变为,
梯度下降法的迭代函数变为,
$$\theta:=\theta-K'(\theta)-\frac{\lambda}{m}sgn(\theta)$$
𝜃:=𝜃−𝐾′(𝜃)−𝜆𝑚𝑠𝑔𝑛(𝜃)θ:=θ−K′(θ)−λmsgn(θ)
$K(\theta)$为原来的损失函数,由于最后一项的符号由$\theta$决定,可以看到,当$\theta$大于零时,更新后的$\theta$变小;当$\theta$小于零时,更新后的$\theta$变大。因此,L1正则化调整后的结果会更加稀疏(结果向量中有更多的0值)。(见图示,相当于在等高线上找令菱形最小的点。)
𝐾(𝜃)K(θ) 为原来的损失函数,由于最后一项的符号由𝜃θ 决定,可以看到,当𝜃θ 大于零时,更新后的𝜃θ 变小;当𝜃θ 小于零时,更新后的𝜃θ 变大。因此,L1正则化调整后的结果会更加稀疏(结果向量中有更多的0值)。(见图示,相当于在等高线上找令菱形最小的点。)
![image.png](attachment:image.png)
#### L2正则
L2正则¶
$$
J(\theta) =\frac{1}{m}\sum^{m}_{i=1} y^{(i)}h_\theta (x^{(i)}) + (1-y^{(i)})(1-h_\theta (x^{(i)})) + \frac{\lambda}{2m}\sum^m_{i=1}\theta_i^2
$$
𝐽(𝜃)=1𝑚∑𝑖=1𝑚𝑦(𝑖)ℎ𝜃(𝑥(𝑖))+(1−𝑦(𝑖))(1−ℎ𝜃(𝑥(𝑖)))+𝜆2𝑚∑𝑖=1𝑚𝜃2𝑖J(θ)=1m∑i=1my(i)hθ(x(i))+(1−y(i))(1−hθ(x(i)))+λ2m∑i=1mθi2
$$
\Delta_{\theta_i} l(\theta) = \frac{1}{m}\sum^m_{i=1}(y^{(i)} - h_\theta (x^{(i)}))x^{(i)} + \frac{\lambda}{m}\theta_i
$$
Δ𝜃𝑖𝑙(𝜃)=1𝑚∑𝑖=1𝑚(𝑦(𝑖)−ℎ𝜃(𝑥(𝑖)))𝑥(𝑖)+𝜆𝑚𝜃𝑖Δθil(θ)=1m∑i=1m(y(i)−hθ(x(i)))x(i)+λmθi
梯度下降法的迭代函数变为,
梯度下降法的迭代函数变为,
$$\theta:=\theta-K'(\theta)-\frac{2\lambda}{m}\theta$$
𝜃:=𝜃−𝐾′(𝜃)−2𝜆𝑚𝜃θ:=θ−K′(θ)−2λmθ
$K(\theta)$为原来的损失函数,最有一项的$\lambda$决定了对参数的惩罚力度,惩罚力度越大,最后的结果向量的参数普遍较小且分散,避免了个别参数对整个函数起较大的影响。(见图示,相当于在等高线上找令圆形最小的点)
𝐾(𝜃)K(θ) 为原来的损失函数,最有一项的𝜆λ 决定了对参数的惩罚力度,惩罚力度越大,最后的结果向量的参数普遍较小且分散,避免了个别参数对整个函数起较大的影响。(见图示,相当于在等高线上找令圆形最小的点)
![image.png](attachment:image.png)
#### 逻辑回归的评价指标
逻辑回归的评价指标¶
由于逻辑回归模型属于分类模型,不能用线性回归的评价指标。
二元分类的评价指标基本都适用于逻辑回归。
观察以下混淆矩阵,
由于逻辑回归模型属于分类模型,不能用线性回归的评价指标。 二元分类的评价指标基本都适用于逻辑回归。 观察以下混淆矩阵,
![image.png](attachment:image.png)
我们可以用查准率和查全率来评价预测结果:
* 查准率 $P =\frac{TP}{TP+FP}$
* 查全率 $R =\frac{TP}{TP+FN}$
我们可以用查准率和查全率来评价预测结果:
- 查准率 𝑃=𝑇𝑃𝑇𝑃+𝐹𝑃P=TPTP+FP
- 查全率 𝑅=𝑇𝑃𝑇𝑃+𝐹𝑁R=TPTP+FN
我们可以用P-R曲线表示查准率和查全率之间的关系:
我们可以用P-R曲线表示查准率和查全率之间的关系:
查准率和查全率经常相互矛盾,一般查准率高时查全率低,查全率高时查准率低。我们经常针对具体的应用场景决定更看重哪一个指标。
查准率和查全率经常相互矛盾,一般查准率高时查全率低,查全率高时查准率低。我们经常针对具体的应用场景决定更看重哪一个指标。
<td bgcolor=#87CEEB>小练习:试举例说明,在什么场景下,更看重查准率;在什么情况下,更看重查全率,并说明原因。</td>小练习:试举例说明,在什么场景下,更看重查准率;在什么情况下,更看重查全率,并说明原因。
<img src = "https://ask.qcloudimg.com/http-save/developer-news/4b1eek0aoz.jpeg?imageView2/2/w/1620"></img>
常相互矛盾,一般查准率高时查全率低,查全率高时查准率低。我们经常针对具体的应用场景决定更看重哪一个指标。
<td bgcolor=#87CEEB>小练习:试举例说明,在什么场景下,更看重查准率;在什么情况下,更看重查全率,并说明原因。</td>小练习:试举例说明,在什么场景下,更看重查准率;在什么情况下,更看重查全率,并说明原因。
<img src = "https://ask.qcloudimg.com/http-save/developer-news/4b1eek0aoz.jpeg?imageView2/2/w/1620"></img>