逻辑回归 logistic regression

###

逻辑回归其实并不“逻辑”也不是回归,而是分类模型,逻辑是指利用了Logistic非线性函数。

逻辑回归#

在logistic regression中,我们用logistic函数来预测类别标签的后验概率

(1)p(y=1|x)=σ(wTx)=11+exp(wTx)

这里x=[x1,,xD,1]w=[w1,,wD,b],是D+1维的增广的特征向量和权重向量。

标签y=0的后验概率

(2)p(y=0|x)=1p(y=1|x)

由公式1可以得到

(3)wTx=logp(y=1|x)p(y=0|x)

其中p(y=1|x)p(y=0|x)称为几率(Odds),所以wTx就是几率的对数,所以逻辑回归也称为对数几率回归。

当正负样本概率相等时,wTx=log(1)=0,因此逻辑回归的目的就是求参数w使得正样本wTx>0负样本wTx<0

损失函数#

使用交叉熵损失函数,在二分类问题中

J(w)=1mi=1m(yilog(y^i)+(1yi)log(1y^i))

yi是样本xi的真实标签,y^i是模型的预测标签,正样本的损失是log(y^)负样本的损失是log(1y^)

我们的目标是最小化损失函数。

参数学习#

随机梯度下降

SGD是通过对损失函数求偏导确定梯度方向,沿着梯度方向更新参数以最小化损失函数

J(w)w=1Ni=1Nxi(yiy^i)

wt+1wtαJ(w)w

代码实现
Copy
# 梯度下降法 for _ in range(500): # 利用逻辑回归做预测 y0 = logistic(w,ex) # 计算当前的交叉熵损失 ce = cross_entropy(y,y0) # print("第{}轮,cross_entropy = {}".format(_,ce)) # 求偏导 partial = (np.sum(ex*(ey-y0),axis=0))/N # 更新参数 w = w-alpha*partial

img

牛顿法

牛顿法在求解方程f(θ)=0的根时主要是根据泰勒展开式进行迭代求解,假设有初始近似解xk,那么f(x)在点xk处的泰勒展开式

f(x)f(xk)+f(xk)(xxk)

f(x)=0求解得到xk+1

xk+1=xkf(xk)f(xk)

牛顿法的几何解释如下图

这里写图片描述

在逻辑回归中,损失函数的最小值在J(w)=0处。用牛顿迭代法求参数

wt+1wtJ(w)J(w)

posted @   lepeCoder  阅读(252)  评论(0编辑  收藏  举报
编辑推荐:
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
阅读排行:
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
点击右上角即可分享
微信分享提示
CONTENTS