2-逻辑回归

1-逻辑回归相关基础概念

1.1最大似然估计

硬币有正反两面,如果硬币正反两面是均匀的,即每次抛掷后硬币为正的概率是0.5。使用这个硬币,很可能抛10次,有5次是正面。但是假如有人对硬币做了手脚,比如提前对硬币做了修改,硬币正面朝上概率大幅度提升了,你拿到硬币在尝试抛了10次,结果8次都是正面,如何估算下次硬币为正的概率呢?

1.2概率

现在我们可以做出猜测,假设硬币出现正面概率的参数 θ \theta θ分别等于(0.6,0.7,0.8),那么这三种硬币参数下,出现“8正2反”的整体概率分别是多少呢:

P ( 8 正 2 反 ∣ θ ) = C 10 2 ( 1 − θ ) 2 ∗ θ 8 P(8正2反|\theta) = C_{10}^{2}(1-\theta)^2 * \theta^8 P(82θ)=C102(1θ)2θ8

import numpy as np

print(f"theta = 0.6,  概率为{10*9/2 * np.power(1-0.6, 2) * np.power(0.6, 8):.3}")

print(f"theta = 0.7,  概率为{10*9/2 * np.power(1-0.7, 2) * np.power(0.7, 8):.3}")

print(f"theta = 0.8,  概率为{10*9/2 * np.power(1-0.8, 2) * np.power(0.8, 8):.3}")
# theta = 0.6,  概率为0.121
# theta = 0.7,  概率为0.233
# theta = 0.8,  概率为0.302

可以看出,我们假设硬币朝正面参数为0.8的时候,出现8正2反情况的概率最大。我们有理由相信,0.8是候选的3个参数中的最接近真实概率的选项。

1.3 似然函数(likelihood function)

在上面的尝试中,0.8似乎是一个不错的猜测没,,但是否可能是0.81或者0.79呢,我们当然可以按照上面的方法再次计算概率,但是问题是我们无法遍历整个空间。因此我们需要定义一个函数来表示不同的参数 θ \theta θ下,表示多个独立事件 ( x 1 , x 2 , . . , x n ) (x_1, x_2, .., x_n) (x1,x2,..,xn)发生的整体概率,这个函数我们叫它似然函数(likelihood function, 通常用L表示),其中组合数部分是常数,我们可以直接忽略。

L ( x 1 , x 2 , . . . , x n ∣ θ ) = ∏ 1 n p ( x i ∣ θ ) L(x_1, x_2, ..., x_n|\theta) = \prod_{1}^{n}p(x_i|\theta) L(x1,x2,...,xnθ)=1np(xiθ)

似然函数通常用L表示,观察到抛硬币“8正2反”的事实,硬币参数 θ \theta θ取不同值时,似然函数表示为:
L ( 8 正 2 反 ∣ θ ) = ( 1 − θ ) 2 ∗ θ 8 L(8正2反|\theta) = (1- \theta)^2 * \theta^8 L(82θ)=(1θ)2θ8

通过似然函数,我们只要能找到使得似然函数最大(多个独立事件 ( x 1 , x 2 , . . , x n ) (x_1, x_2, .., x_n) (x1,x2,..,xn)发生的整体概率最大化)的 θ \theta θ,就可以完成对硬币参数的估计了,这就是最大似然估计:

θ ^ = a r g m a x θ ∏ 1 n p ( x i ∣ θ ) \hat{\theta} = argmax_{\theta}\prod_{1}^{n}p(x_i|\theta) θ^=argmaxθ1np(xiθ)

1.4最大似然估计

通常,由于似然函数为连乘,会造成小数位过高,无法有效表示,我们采用对数似然函数进行表示,把连乘转化为累加形式:

l ( x 1 , x 2 , . . . , x n ∣ θ ) = ∑ 1 n l o g p ( x i ∣ θ ) l(x_1, x_2, ..., x_n|\theta) = \sum_{1}^{n}log p(x_i|\theta) l(x1,x2,...,xnθ)=1nlogp(xiθ)

θ ^ = a r g m a x θ ∑ 1 n l o g p ( x i ∣ θ ) \hat{\theta} = argmax_{\theta}\sum_{1}^{n}log p(x_i|\theta) θ^=argmaxθ1nlogp(xiθ)

2.0逻辑回归

逻辑回归是线性分类模型,说线性是因为其决策边界是线性的(平面或超平面),模型输出值域为(0, 1),通常我们将输出结果视为属于正样 ( y = 1 ) (y=1) (y=1)的概率。我们先来看一下逻辑回归模型的数学表示:

P ( x ) = σ ( w T x ) = 1 1 + e x p − w T x P(x) = \sigma(w^Tx) = \frac{1}{1+exp^{-w^Tx}} P(x)=σ(wTx)=1+expwTx1

与线性回归类似, x x x为样本特征,为了表示方便,类似的增加一个bias维度,值为1, w w w为模型系数,函数 σ ( θ ) = 1 1 + e x p − θ \sigma(\theta)=\frac{1}{1+exp^{-\theta}} σ(θ)=1+expθ1被称为 s i g m o i d sigmoid sigmoid函数,其函数图像如下所示。可以发现 s i g m o i d sigmoid sigmoid函数具备一些比较良好的特性,首先其输出值域为(0,1),可以直接视作为正样本概率,其次其梯度在0附近最大,可以在梯度下降优化过程中,更加到聚焦到较难分类的样本上。

2.1逻辑回归的似然函数与梯度

tips: 本段包含了不少公式计算,但公式本身的推导细节并不是最重要的,最重要的是通过引入似然函数,我们构造了逻辑回归的损失函数,且该损失函数可以利用梯度下降进行优化。

对逻辑回归模型的数学表示有一个基本认识后,我们来思考一个问题,我们应该怎么去优化模型参数? 假设我们有 n n n个样本 ( x 1 , x 2 , . . . , x n ) (x^1, x^2,...,x^n) (x1,x2,...,xn),其对应标签为 ( y 1 , . . . , y n ) (y^1,...,y^n) (y1,...,yn)且任意 y i ∈ 0 , 1 y^i \in {0,1} yi0,1,根据最大似然原理,我们可以用逻辑回归表示出所有n个样本的似然函数,并使之最大化。对于单个样本 ( x i , y i ) (x^i, y^i) (xi,yi), 模型预测结果与样本真实标签一致的概率为:
p ( y = y i ∣ x i ) = p ( x i ) y i ( 1 − p ( x i ) ) 1 − y i p(y=y^i|x^i)=p(x^i)^{y^i} (1-p(x^i))^{1-y^{i}} p(y=yixi)=p(xi)yi(1p(xi))1yi

这里我们讨了个巧,因为 y i y^i yi只有可能等于0或1,所以当 y i = 1 y^i=1 yi=1的时候,第二项等于1,当 y i = 0 y^i=0 yi=0的时候,第一项等于1,通过这种设计我们可以把 y i y^i yi分别等于0或1的两种情况写在一个公式里,好了,这里是样本 i i i模型预测结果与样本真实标签一致的概率,那么假设样本是独立的(机器学习模型对于样本都有IID即独立同分布假设),样本总体的模型预测结果与样本真实标签一致的概率为:

L i k e l i h o o d = ∏ i p ( y = y i ∣ x i ) = ∏ i p ( x i ) y i ( 1 − p ( x i ) ) 1 − y i Likelihood = \prod_i{p(y=y^i|x^i)=\prod_i{p(x^i)^{y^i}} (1-p(x^i))^{1-y^{i}}} Likelihood=ip(y=yixi)=ip(xi)yi(1p(xi))1yi

两边同时取对数,对数似然函数为:

l o g l i k e l i h o o d = ∑ i [ y i l o g p ( x i ) + ( 1 − y i ) l o g ( 1 − p ( x i ) ) ] loglikelihood = \sum_i[{y^ilogp(x^i)} + (1-y^{i})log(1-p(x^i))] loglikelihood=i[yilogp(xi)+(1yi)log(1p(xi))]

l o g l i k e l i h o o d = ∑ i [ y i l o g p ( x i ) 1 − p ( x i ) + l o g ( 1 − p ( x i ) ) ] loglikelihood = \sum_i[{y^ilog\frac{p(x^i)}{1-p(x^i)}} + log(1-p(x^i))] loglikelihood=i[yilog1p(xi)p(xi)+log(1p(xi))]

那么这个对数似然函数就是我们需要优化的目标的,其值越大越好,越大说明模型预测概率和真实发生概率一致性越高。由于梯度下降法是验证最小化损失函数目标进行的,因此我们对对数似然函数乘以-1。

J ( w ) = − ∑ i [ y i l o g p ( x i ) 1 − p ( x i ) + l o g ( 1 − p ( x i ) ) ] J(w) = -\sum_i[{y^ilog\frac{p(x^i)}{1-p(x^i)}} + log(1-p(x^i))] J(w)=i[yilog1p(xi)p(xi)+log(1p(xi))]

求关于参数的梯度,根据求导法则可得:

g = ∂ J ∂ w = ∑ i ( p ( x i ) − y i ) ∗ x i g = \frac{\partial{J}}{\partial{w}}= \sum_i (p(x^i)-y^i)*x^i g=wJ=i(p(xi)yi)xi

有了梯度,根据上节课我们学习的梯度下降,就可以根据学习率 α \alpha α逐步迭代更新模型参数:
w = w − α ∗ g w = w - \alpha * g w=wαg

3.分类问题常用评价指标

在二分类场景,模型所有的预测结果可以分为四类:

  1. TP(True positive),意思是模型预测为正样本(Positive),预测是正确的(True)
  2. FP(False positive),意思是模型预测为正样本(Positive),预测是错误的(False)
  3. TN(True negtive),意思是模型预测为负样本(negtive),预测是正确的(True)
  4. FN(False negtive),意思是模型预测为负样本(negtive),预测是错误的(False)

基于以上四类预测结果,我们可以定义指标:

  • 准确率 A c c u r a c y = # T P + # T N # A L L Accuracy = \frac{\#TP + \#TN}{\# ALL} Accuracy=#ALL#TP+#TN ,简单理解就是,所有预测结果中,预测正确的比例,值越大说明模型表现越好。

  • 精准率 p r e c i s i o n = # T P # T P + # F P precision = \frac{\#TP}{\#TP+\#FP} precision=#TP+#FP#TP,所有预测的正样本,正确的比例,值越大说明模型表现越好。

  • 召回率 $recall = \frac{#TP}{#TP+#FN} $,所有正样本被正确预测的比例,值越大说明模型表现越好。

参考资料

对应的项目参考代码可以查看泰坦尼克号-灾难中的机器学习

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值