逻辑回归 logistic regression
时间:2020-04-15
本文章向大家介绍逻辑回归 logistic regression,主要包括逻辑回归 logistic regression使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
逻辑回归其实并不“逻辑”也不是回归,而是分类模型,逻辑是指利用了Logistic非线性函数。
逻辑回归
在logistic regression中,我们用logistic函数来预测类别标签的后验概率
\[p(y=1|x)=\sigma(w^T \cdot x)=\frac{1}{1+exp(-w^T\cdot x)} \tag{1}
\]
这里\(x=[x_1,\cdots,x_D,1]\)和\(w=[w_1,\cdots,w_D,b]\),是\(D+1\)维的增广的特征向量和权重向量。
标签\(y=0\)的后验概率
\[p(y=0|x)=1-p(y=1|x) \tag{2}
\]
由公式1可以得到
\[w^Tx=\log \frac{p(y=1|x)}{p(y=0|x)} \tag{3}
\]
其中\(\frac{p(y=1|x)}{p(y=0|x)}\)称为几率(Odds),所以\(w^Tx\)就是几率的对数,所以逻辑回归也称为对数几率回归。
当正负样本概率相等时,\(w^Tx=\log(1)=0\),因此逻辑回归的目的就是求参数\(w\)使得正样本\(w^Tx>0\)负样本\(w^Tx<0\)。
损失函数
使用交叉熵损失函数,在二分类问题中
\[J(w) = -\frac{1}{m}\sum_{i=1}^m\left(y^i\log(\hat{y}^i) + (1-y^i)\log(1-\hat{y}^i ) \right)
\]
\(y^i\)是样本\(x^i\)的真实标签,\(\hat{y}^i\)是模型的预测标签,正样本的损失是\(\log(\hat{y})\)负样本的损失是\(\log(1-\hat{y})\)
我们的目标是最小化损失函数。
参数学习
随机梯度下降
SGD是通过对损失函数求偏导确定梯度方向,沿着梯度方向更新参数以最小化损失函数
\[\frac{\partial J(w)}{\partial w} = -\frac{1}{N} \sum_{i=1}^N x^i(y^i-\hat{y}^i)
\]
\[w_{t+1} \leftarrow w_t - \alpha \frac{\partial J(w)}{\partial w}
\]
代码实现
# 梯度下降法
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
牛顿法
牛顿法在求解方程\(f(\theta)=0\)的根时主要是根据泰勒展开式进行迭代求解,假设有初始近似解\(x_k\),那么\(f(x)\)在点\(x_k\)处的泰勒展开式
\[f(x)\approx f(x_k)+f'(x_k)(x-x_k)
\]
令\(f(x)=0\)求解得到\(x_{k+1}\)
\[x_{k+1} = x_k - \frac{f(x_k)}{f'(x_k)}
\]
牛顿法的几何解释如下图
在逻辑回归中,损失函数的最小值在\(J'(w)=0\)处。用牛顿迭代法求参数
\[w_{t+1} \leftarrow w_t - \frac{J'(w)}{J''(w)}
\]
原文地址:https://www.cnblogs.com/lepeCoder/p/logistic_regression.html
- hdu----(3118)Arbiter(构造二分图)
- hdu----(1528)Card Game Cheater(最大匹配/贪心)
- hdu-----(1507)Uncle Tom's Inherited Land*(二分匹配)
- hdu----149850 years, 50 colors(最小覆盖点)
- hdu------1281 棋盘游戏(最小覆盖点)
- hdu-----(1179)Ollivanders: Makers of Fine Wands since 382 BC.(二分匹配)
- hdu-----(1151)Air Raid(最小覆盖路径)
- hdu-----(1150)Machine Schedule(最小覆盖点)
- 【重磅】微软Facebook联手发布AI生态系统,CNTK+Caffe2+PyTorch挑战TensorFlow
- hduoj-----(1068)Girls and Boys(二分匹配)
- 使用Django suit或Bootstrap美化admin模板
- hdu---------(1026)Ignatius and the Princess I(bfs+dfs)
- hdu-----(1113)Word Amalgamation(字符串排序)
- HDUoj-------(1128)Self Numbers
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 05 . ELK Stack简介原理及部署应用
- java编程思想第四版第三章要点习题
- GoAccess分析Web日志
- java编程思想第四版第三章要点总结
- 05 . Prometheus监控Nginx
- java编程思想第四版第五章总结
- 01 . 容器编排简介及Kubernetes核心概念
- java编程思想第四版第五章习题
- 02 . Kubeadm部署Kubernetes及简单应用
- java编程思想第四版第六章习题
- Docker部署Python项目
- 03 . 二进制部署kubernetes1.18.4
- 01 . 美团全链路监控CAT简介及部署
- 02 . Ansible高级用法(运维开发篇)
- java编程思想第四版第七章总结