二元逻辑回归 · 数学推导过程及代码实现完全解析




最近修改:2021/6/17

原文《从二元逻辑回归到多元逻辑回归 · 推导过程完全解析》经过多次修改后变得越来越长,因此笔者将其分为两部分:

第一部分:二元逻辑回归 · 数学推导过程及代码实现完全解析
第二部分:多元逻辑回归 · 数学推导过程及代码实现完全解析


概述

以下是此篇文章要用的包

# 加载包
import numpy as np
import seaborn as sns
import matplotlib.pyplot as plt
sns.set_style('darkgrid')

两个重要函数


二元逻辑回归的出发点是sigmoid函数
S ( x ) = 1 1 + e − x = e x 1 + e x S(x)= \frac{1}{1+e^{-x}}= \frac{e^{x}}{1+e^{x}} S(x)=1+ex1=1+exex

Sigmoid函数能将实数域的连续数映射到0,1区间,概率的取值范围就在0,1之间,因此可以用来做概率的预测。

以下是Sigmoid函数的代码和图像

x=np.arange(-10,10)
y=1/(1+np.exp(-x))
plt.plot(x,y)

Output:



多元逻辑回归的出发点是softmax函数
S ( x ) = e x i ∑ j = 1 k e x j S(x)=\frac{e^{x_i}}{\sum_{j=1}^{k}e^{x_j}} S(x)=j=1kexjexi
Softmax函数也是将实数域的连续数映射到0,1区间,进而可以理解为是概率。

以下是softmax函数的代码和图像

图像的特点:

  • 设向量x=[0,1,2,3,…,49],其输出也是一个向量y
  • 这里Softmax函数会将x里的每个数映射到0,1区间
  • 并且y里元素加和为一
  • 数越大,其输出也越大,即概率越大。
x=np.arange(0,50)
y=np.exp(x)/np.sum(np.exp(x))
plt.plot(x,y)
print('the sum of y={}'.format(y.sum()))

Output:
the sum of y=1.0


预测的基本思想


我们想处理分类问题,最基本的统计模型便是逻辑回归,之所以使用它,最主要的原因是其输出是在0,1之间。

注意,我们并不是直接输出类别编号,而是一个概率值

然后我们会根据情况的不同来确定一个阈值,通常这个阈值定在0.5。比如,二元模型中(类别0和1),我的输出是P(Y=1)=0.75(0.75>0.5),则认为此时Y是属于类别1的。




二元逻辑回归


线性模型的简单回顾

要解释二元逻辑回归,我们得先来了解下什么是线性模型

首先这个模型建立在两个个假设上

  • 假设 y y y X X X之间是一个线性关系
  • y i ( i = 1 , 2 , 3 , . . . , n ) y_i(i=1,2,3,...,n) yi(i=1,2,3,...,n)是独立同分布

y y y X X X之间的线性关系

y = X β y=Xβ y=Xβ

因变量 y y y是一个nx1向量

y = [ y 1 y 2 ⋮ y n ] y= \left[ \begin{matrix} y_1 \\ y_2 \\ \vdots\\ y_n \end{matrix} \right] y=y1y2yn

带截距项的自变量 X X X是一个nx(m+1)的矩阵
X = [ 1 x 11 x 12 . . . x 1 m 1 x 21 x 21 . . . x 2 m ⋮ ⋮ ⋮ 1 x n 1 x n 2 . . . x n m ] X= \left[ \begin{matrix} 1&x_{11}&x_{12}&...&x_{1m}\\ 1&x_{21}&x_{21}&...&x_{2m}\\ \vdots&\vdots&&\vdots\\ 1&x_{n1}&x_{n2}&...&x_{nm} \end{matrix} \right] X=111x11x21xn1x12x21xn2.........x1mx2mxnm

带截距项的参数 β β β是一个mx1向量
β = [ β 0 β 1 β 2 ⋮ β m ] β= \left[ \begin{matrix} β_0 \\ β_1 \\ β_2 \\ \vdots\\ β_m \end{matrix} \right] β=β0β1β2βm

从线性回归到二元逻辑回归

对于二值因变量

  • 7
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值