机器学习基础:逻辑回归(Machine Learning Fundamentals: Logistic Regression)
前言
简单来说, 逻辑回归(Logistic Regression)是一种用于解决二分类(0 or 1)问题的机器学习方法,用于估计某种事物的可能性。比如某用户购买某商品的可能性,某病人患有某种疾病的可能性,以及某广告被用户点击的可能性等。 注意,这里用的是“可能性”,而非数学上的“概率”,logisitc回归的结果并非数学定义中的概率值,不可以直接当做概率值来用。该结果往往用于和其他特征值加权求和,而非直接相乘。
虽然Logistic Regression名字叫回归,但实际它解决的是一个分类问题。通过softmax函数将任意实数映射到[0,1], 我们可以使用阈值的方式确定分类类别。
Sigmoid 函数
表达式:
δ(x)=11+e−x\delta(x)=\frac{1}{1+e^{-x}} δ(x)=1+e−x1图像:
从上图可以看到sigmoid函数是一个s形的曲线,它的取值在[0, 1]之间,在远离0的地方函数的值会很快接近0或者1。它的这个特性对于解决二分类问题十分重要
Logistic Regression
逻辑回归的假设函数形式如下:
hw(x)=δ(wTx)h_{w}(x)=\delta\left(w^{T} x\right) hw(x)=δ(wTx)
δ(x)=11+e−x\delta(x)=\frac{1}{1+e^{-x}} δ(x)=1+e−x1
所以:
hw(x)=11+e−wTxh_{w}(x)=\frac{1}{1+e^{-w^{T} x}} hw(x)=1+e−wTx1
其中 xxx 是我们的输入, www 为我们要求取的参数。
逻辑回归模型所做的假设是:
P(y=1∣x;w)=δ(wTx)=11+e−wTxP(y=1 \mid x ; w)=\delta\left(w^{T} x\right)=\frac{1}{1+e^{-w^{T} x}} P(y=1∣x;w)=δ(wTx)=1+e−wTx1
这个函数的意思就是在给定 xxx 和 www 的条件下 y=1y=1y=1 的概率。
这里 δ(wTx)\delta(w^Tx)δ(wTx) 就是我们上面提到的sigmoid函数,与之相对应的决策函数为:
y∗=1,if P(y=1∣x)>0.5y^{*}=1, \text { if } P(y=1 \mid x)>0.5 y∗=1, if P(y=1∣x)>0.5
选择0.5
作为阈值是一个一般的做法,实际应用时特定的情况可以选择不同阈值,如果对正例的判别准确性要求高,可以选择阈值大一些,对正例的召回要求高,则可以选择阈值小一些。
损失函数
在Logistic Regression 问题中,常见的损失函数是交叉熵损失。
若我们令y={0,1}y = \{0, 1\}y={0,1}, 则
二分类的交叉熵的损失函数
形式如下:
loss=−1m[∑i=1nyilogpi+(1−yi)log(1−pi)]loss = -\frac{1}{m}\left[\sum_{i=1}^{n} y_{i}logp_{i} + (1-y_{i})log(1-p_{i})\right] loss=−m1[i=1∑nyilogpi+(1−yi)log(1−pi)]
其中pi=δ(wTx)p_i=\delta(w^Tx)pi=δ(wTx). 这是我们较常用的损失函数形式,因此这里不再赘述。此外,若设置y={−1,1}y = \{-1, 1\}y={−1,1}, 则二分类交叉熵损失函数形式如下:
loss=∑i=1mlog(1+exp(−yi(wTx+c)))loss = \sum_{i=1}^{m}log(1 + exp(-y_{i}(w^Tx+c))) loss=i=1∑mlog(1+exp(−yi(wTx+c)))证明:
我们令yi∈{0,1}y_i \in \{0, 1\}yi∈{0,1}, y~i∈{−1,1}\tilde y_i \in \{-1, 1\}y~i∈{−1,1}, 这样有y~i=2yi−1\tilde y_i = 2y_i -1y~i=2yi−1.
令pi=σ(XiTω)p_i = \sigma({X^T_i \omega})pi=σ(XiTω), 有1−σ(x)=σ(−x)1- \sigma(x) = \sigma(-x)1−σ(x)=σ(−x).
因此有:
−∑i[yilog(pi)+(1−yi)log(1−pi)]=∑ilog(1+exp(−y~i(XiTω+c))).-\sum_i [y_i \log(p_i) + (1-y_i) \log(1 - p_i)] = \sum_i \log\left(1 + \exp(-\tilde y_i({X^T_i \omega + c}))\right).−i∑[yilog(pi)+(1−yi)log(1−pi)]=i∑log(1+exp(−y~i(XiTω+c))).
其中:
1−δ(x)=1−11+e−x=1+e−x−11+e−x=1ex1+1ex=11+ex=δ(−x)\begin{aligned} 1-\delta(x) &= 1 - \frac{1}{1+e^{-x}} \\ &= \frac{1+e^{-x}-1}{1+e^{-x}} \\ &= \frac{\frac{1}{e^{x}}}{1 + \frac{1}{e^{x}}} \\ &= \frac{1}{1+e^x} \\ &= \delta(-x) \end{aligned} 1−δ(x)=1−1+e−x1=1+e−x1+e−x−1=1+ex1ex1=1+ex1=δ(−x)
sklearn中提供了两种带正则项的交叉熵损失函数,如下 (此时CE Loss使用的是y={−1,1}y=\{-1, 1\}y={−1,1})的情况:
L2-regularized Logistic Regression
loss=minw,c12wTw+C∑i=1nlog(exp(−yi(XiTw+c))+1)loss = \min _{w, c} \frac{1}{2} w^{T} w+C \sum_{i=1}^{n} \log \left(\exp \left(-y_{i}\left(X_{i}^{T} w+c\right)\right)+1\right) loss=w,cmin21wTw+Ci=1∑nlog(exp(−yi(XiTw+c))+1)L1 regularized logistic regression
loss=minw,c∥w∥1+C∑i=1nlog(exp(−yi(XiTw+c))+1)loss = \min _{w, c}\|w\|_{1}+C \sum_{i=1}^{n} \log \left(\exp \left(-y_{i}\left(X_{i}^{T} w+c\right)\right)+1\right) loss=w,cmin∥w∥1+Ci=1∑nlog(exp(−yi(XiTw+c))+1)
sklearn 实例分析
1. L1 Penalty and Sparsity in Logistic Regression
代码链接
这个例子展示了L1和L2约束条件在逻辑回归中的作用。下图中的8×88\times 88×8网格展示了LR中64个权重的大小。可以看到,L1正则项会使权重更加稀疏。
思考
- 如何评估逻辑回归与简单线性回归模型预测的性能?
- 如何确定逻辑回归与简单线性回归模型?
- L1和L2正则项的区别
参考文献
- 逻辑回归(Logistic Regression)(一)
- 逻辑回归(Logistic Regression)(二)
- sklearn: logistic-regression
- Loss Function of scikit-learn LogisticRegression
- 机器学习 | 算法笔记- 逻辑斯蒂回归(Logistic Regression)
- 简单的交叉熵损失函数,你真的懂了吗?
机器学习基础:逻辑回归(Machine Learning Fundamentals: Logistic Regression)相关推荐
- logit回归模型假设_机器学习基础---逻辑回归(假设函数与线性回归不同)
一:分类 (一)分类基础 在分类问题中,你要预测的变量y是离散的值,我们将学习一种叫做逻辑回归 (Logistic Regression) 的算法,这是目前最流行使用最广泛的一种学习算法. 在分类问题 ...
- 机器学习基础-逻辑回归-09
逻辑回归 正确率/召回率/F1指标 梯度下降法-逻辑回归 import matplotlib.pyplot as plt import numpy as np from sklearn.metrics ...
- 逻辑回归模型详解(Logistic Regression)
目录 广义线性模型 极大似然法 逻辑回归的假设函数 逻辑回归的损失函数 交叉熵损失函数 为什么LR模型损失函数使用交叉熵不用均方差 交叉熵损失函数的数学原理 交叉熵损失函数的直观理解 交叉熵简介 对数 ...
- 谷歌机器学习规则 (Rules of Machine Learning)
机器学习规则 (Rules of Machine Learning) 往期文章: 机器学习之特征工程 机器学习之分类(Classification) 精确率.准确率.召回率 ------------- ...
- 机器学习:逻辑回归(logistics regression)
title: 机器学习:逻辑回归(logistics regression) date: 2019-11-30 20:55:06 mathjax: true categories: 机器学习 tags ...
- 机器学习_2逻辑回归
机器学习_逻辑回归 分类问题 二分类--Sigmoid函数 Sigmoid函数代码实现 逻辑回归 数学原理 求解方式 正则化 逻辑回归数据集应用样例--代码实现 样例1:有清晰的线性决策边界 决策边界 ...
- 【机器学习笔记】可解释机器学习-学习笔记 Interpretable Machine Learning (Deep Learning)
[机器学习笔记]可解释机器学习-学习笔记 Interpretable Machine Learning (Deep Learning) 目录 [机器学习笔记]可解释机器学习-学习笔记 Interpre ...
- 传统机器学习之逻辑回归的分类预测,以威斯康辛州乳腺癌数据集为例
传统机器学习之逻辑回归的分类预测,以威斯康辛州乳腺癌数据集为例 文章目录 传统机器学习之逻辑回归的分类预测,以威斯康辛州乳腺癌数据集为例 1导入基本库 2读取数据并且变换类型 3输出数据 4可视化数据 ...
- 吴恩达深度学习笔记——结构化机器学习项目(Structuring Machine Learning Projects)
深度学习笔记导航 前言 传送门 结构化机器学习项目(Machine Learning Strategy) 机器学习策略概述 正交化(orthogonalization) 评价指标 数字评估指标的单一性 ...
- 【机器学习】逻辑回归原理介绍
[机器学习]逻辑回归原理介绍 [机器学习]逻辑回归python实现 [机器学习]逻辑回归sklearn实现 Logistic 回归模型是目前广泛使用的学习算法之一,通常用来解决二分类问题,虽然名字中有 ...
最新文章
- iOS 10 个实用小技巧(总有你不知道的和你会用到的)
- 分享丨李飞飞、吴恩达、Bengio等人的顶级深度学习课程
- 下划线转驼峰,并且首字母大写
- pytorch安装问题:路径不对导致no moduled name 'torch'
- java中treemap_Java中TreeMap集合讲解
- ambari 自定义组件安装
- XP Embedded:不同的用户使用不同的外壳程序
- idea中使用git直接提交本地写好的代码
- 拦截器ConnectInterceptor
- 连续,可积,存在原函数,变上限积分
- Java之美[从菜鸟到高手演变]之Java学习方法
- UPC10728:Imputation
- 论文阅读笔记:Layer Normalization
- 购买完域名之后能干什么事儿?
- FFmpeg - Windows下使用MSYS2和VS编译FFmpeg
- 日语语法准备一:日语词性的分类
- 记:《洛克菲勒留给儿子的38封信》-- 37
- ffmpeg编码报错:more samples than frame size (avcodec_encode_audio2)
- 阿里后台开发不知名部门总结
- 多暂估的库存如何调整_实例教你会计知识——存货暂估