一、引言

虽然说是逻辑回归,其实既可以用它做回归,也可以用它做分类。一般我们从最简单的二分类问题开始了解他,当然也可以做多分类。

二、Logistic Regression 的一般步骤

  1. 找一个合适的假设
  2. 构造损失函数
  3. 让损失函数最小,求出对应的参数值

三、二分类问题下Logistic Regression的过程

3.1 Logistic Function

在机器学习笔记(十)——Logistic Function AND Softmax Function中我们已经讨论过了Logistic 函数,因此,建议不熟悉的读者参考上述文章。

3.2 找一个合适的假设

假设样本是各个贷款人的信息,标签是他是否违约。目标是建立一个模型,用来预测一个贷款人违约的可能性,而银行根据这个信息决定是否放款给当前的贷款人。那么,很明显,这是一个分类问题,根据贷款人的一些信息和已知的标签,我们建立模型,去预测新来的贷款人违约的可能性。这里将贷款人的各个信息,如学历、年收入、信用卡违约次数等作为x\boldsymbol{x},将他是否违约记为yy,其中y=1y=1表示违约,y=0y=0表示不违约。那么,一个贷款人违约的可能性为:

hθ(x)=g(θTx)=11+e−θTx

h_{\boldsymbol{\theta}}(\boldsymbol{x})=g(\boldsymbol{\theta}^T\boldsymbol{x}) = \frac{1}{1+e^{-\boldsymbol{\theta}^T\boldsymbol{x}}}
其中, θ\boldsymbol{\theta}是参数向量。通过上式,可以将借款人的各个信息映射到(0,1)之间,表示他是否违约的可能性。

P(y=1|x;θ)=hθ(x)P(y=0|x;θ)=1−hθ(x)

P(y=1|\boldsymbol{x}; \boldsymbol{\theta}) = h_{\boldsymbol{\theta}}(\boldsymbol{x})\\ P(y=0|\boldsymbol{x}; \boldsymbol{\theta}) = 1 - h_{\boldsymbol{\theta}}(\boldsymbol{x})
将上式表示成一个式子:

P(y|x;θ)=hθ(x)y(1−hθ(x))1−y

P(y|\boldsymbol{x}; \theta) = h_{\theta}(\boldsymbol{x})^y(1-h_{\theta}(\boldsymbol{x}))^{1-y}
至此,得到了一个给定贷款人信息时,他违约概率的表达式。

3.3 构造损失函数

在整个样本集中,mm个独立样本出现的似然函数是:

L(θ)=∏i=1mP(yi|xi;θ)

L(\boldsymbol{\theta}) = \prod_{i=1}^{m}P(y_i|\boldsymbol{x_i}; \boldsymbol{\theta})
利用最大似然求θ\theta,取对数最大似然:

l(θ)=logL(θ)=∑i=1mlogP(yi|xi;θ)

l(\boldsymbol{\theta}) = \log L(\boldsymbol{\theta}) = \sum_{i=1}^{m}\log P(y_i|\boldsymbol{x_i}; \boldsymbol{\theta})
定义下式为损失函数:

J(θ)=−1ml(θ)=−1m∑i=1mlog[hθ(xi)yi(1−hθ(xi))1−yi]=−1m∑i=1m{yiloghθ(xi)+(1−yi)log[1−hθ(xi)]}

J(\boldsymbol{\theta}) = -\frac{1}{m}l(\boldsymbol{\theta}) = -\frac{1}{m}\sum_{i=1}^{m}\log [h_{\boldsymbol{\theta}}(\boldsymbol{x_i})^{y_i}(1-h_{\boldsymbol{\theta}}(\boldsymbol{x_i}))^{1-y_i}] \\ =-\frac{1}{m}\sum_{i=1}^{m}\{y_i \log h_{\boldsymbol{\theta}}(\boldsymbol{x_i})+(1-y_i)\log [1-h_{\boldsymbol{\theta}}(\boldsymbol{x_i})]\}
最大化 l(θ)l(\theta) 相当于最小化 J(θ)J(\theta).

3.4 让损失函数最小,求出对应的参数值

优化的目标函数如下:

minJ(θ)

\min J(\boldsymbol{\theta})
由于上式中的 θ\boldsymbol{\theta}是一个参数向量,因此,没办法用函数导数等于0直接求出,它是没有解析解的,因此,我们可以采用梯度下降的方法求得极小值。梯度下降方法请参照 最优化学习笔记(三)——梯度下降法。

∂J(θ)∂θ=−1m∑i=1m{∂T(θ)∂θ}(1)

\frac{\partial J(\boldsymbol{\theta})}{\partial \boldsymbol{\theta}} = -\frac{1}{m}\sum_{i=1}^{m}\{\frac{\partial T(\boldsymbol{\theta})}{\partial \boldsymbol{\theta}}\} (1)
其中:

T(θ)=yloghθ(x)+(1−y)log[1−hθ(x)]

T(\boldsymbol{\theta}) = y \log h_{\boldsymbol{\theta}}(\boldsymbol{x})+(1-y)\log [1-h_{\boldsymbol{\theta}}(\boldsymbol{x})]

∂T(θ)∂θ=y1hθ(x)∂hθ(x)∂θ+(1−y)11−hθ(x)(−∂hθ(x)∂θ)=∂hθ(x)∂θ(yhθ(x)+(y−1)1−hθ(x))=∂hθ(x)∂θ(y−hθ(x)hθ(x)(1−hθ(x)))

\frac{\partial T(\boldsymbol{\theta})}{\partial \boldsymbol{\theta}} = y\frac{1}{h_{\boldsymbol{\theta}}(\boldsymbol{x})}\frac{\partial h_{\boldsymbol{\theta}}(\boldsymbol{x})}{\partial \boldsymbol{\theta}}+(1-y)\frac{1}{1-h_{\boldsymbol{\theta}}(\boldsymbol{x})}(-\frac{\partial h_{\boldsymbol{\theta}}(\boldsymbol{x})}{\partial \boldsymbol{\theta}})\\ =\frac{\partial h_{\boldsymbol{\theta}}(\boldsymbol{x})}{\partial \boldsymbol{\theta}}(\frac{y}{h_{\boldsymbol{\theta}}(\boldsymbol{x})}+\frac{(y-1)}{1-h_{\boldsymbol{\theta}}(\boldsymbol{x})})\\ =\frac{\partial h_{\boldsymbol{\theta}}(\boldsymbol{x})}{\partial \boldsymbol{\theta}}(\frac{y-{h_{\boldsymbol{\theta}}(\boldsymbol{x})}}{{h_{\boldsymbol{\theta}}(\boldsymbol{x})}(1-{h_{\boldsymbol{\theta}}(\boldsymbol{x})})})
因为:

∂hθ(x)∂θ=hθ(x)(1−hθ(x))x

\frac{\partial h_{\boldsymbol{\theta}}(\boldsymbol{x})}{\partial \boldsymbol{\theta}} = {h_{\boldsymbol{\theta}}(\boldsymbol{x})}(1-{h_{\boldsymbol{\theta}}(\boldsymbol{x})})\boldsymbol{x}
则:

T(θ)=(y−hθ(x))x

T(\boldsymbol{\theta}) = (y-{h_{\boldsymbol{\theta}}(\boldsymbol{x})})\boldsymbol{x}
由于取的是样本集中的第 ii 个样本,所以将上式代入(1)

∂J(θ)∂θ=−1m∑i=1m(yi−hθ(xi))xi=1m∑i=1m(hθ(xi)−yi)xi

\frac{\partial J(\boldsymbol{\theta})}{\partial \boldsymbol{\theta}} = -\frac{1}{m}\sum_{i=1}^{m} (y_i-{h_{\boldsymbol{\theta}}(\boldsymbol{x_i})})\boldsymbol{x_i}\\ =\frac{1}{m}\sum_{i=1}^{m} ({h_{\boldsymbol{\theta}}(\boldsymbol{x_i})}-y_i)\boldsymbol{x_i}
这样,就可以得到 θ\boldsymbol{\theta}的迭代公式:

θ=θ+α∂J(θ)∂θ=θ+α1m∑i=1m(hθ(xi)−yi)xi(2)

\boldsymbol{\theta} = \boldsymbol{\theta} + \alpha\frac{\partial J(\boldsymbol{\theta})}{\partial \boldsymbol{\theta}} \\ =\boldsymbol{\theta} + \alpha\frac{1}{m}\sum_{i=1}^{m} ({h_{\boldsymbol{\theta}}(\boldsymbol{x_i})}-y_i)\boldsymbol{x_i}(2)
需要说明的是,我们可以从2式中看出,每次计算一次 θ\boldsymbol{\theta} ,都要进行全部样本数据的计算,直到 θ\boldsymbol{\theta} 收敛,还有一种可以采用随机梯度法进行计算,这样只需要遍历一遍数据集即可,下次讨论。

机器学习笔记(十一)——逻辑回归相关推荐

  1. 机器学习笔记-基于逻辑回归的分类预测

    天池学习笔记:AI训练营机器学习-阿里云天池 基于逻辑回归的分类预测 1 逻辑回归的介绍和应用 1.1 逻辑回归的介绍 逻辑回归(Logistic regression,简称LR)虽然其中带有&quo ...

  2. 机器学习笔记(5)——逻辑回归

    上一篇:机器学习笔记(4)--多变量线性回归 逻辑回归实际是一种有监督学习中的分类算法,称为回归是历史原因 前言 前面我们已经学习了线性回归,线性回归适用于预测一个连续值,就是说预测值可能的范围存在连 ...

  3. python逻辑回归训练预测_[Python] 机器学习笔记 基于逻辑回归的分类预测

    导学问题 什么是逻辑回归(一),逻辑回归的推导(二 3),损失函数的推导(二 4) 逻辑回归与SVM的异同 逻辑回归和SVM都用来做分类,都是基于回归的概念 SVM的处理方法是只考虑 support ...

  4. 吴恩达《机器学习》学习笔记八——逻辑回归(多分类)代码

    吴恩达<机器学习>笔记八--逻辑回归(多分类)代码 导入模块及加载数据 sigmoid函数与假设函数 代价函数 梯度下降 一对多分类 预测验证 课程链接:https://www.bilib ...

  5. 吴恩达《机器学习》学习笔记七——逻辑回归(二分类)代码

    吴恩达<机器学习>学习笔记七--逻辑回归(二分类)代码 一.无正则项的逻辑回归 1.问题描述 2.导入模块 3.准备数据 4.假设函数 5.代价函数 6.梯度下降 7.拟合参数 8.用训练 ...

  6. 吴恩达《机器学习》学习笔记五——逻辑回归

    吴恩达<机器学习>学习笔记五--逻辑回归 一. 分类(classification) 1.定义 2.阈值 二. 逻辑(logistic)回归假设函数 1.假设的表达式 2.假设表达式的意义 ...

  7. 吴恩达机器学习课后习题——逻辑回归

    机器学习课后作业-逻辑回归 逻辑回归 逻辑回归算法,是一种给分类算法,这个算法的实质是:它输出值永远在0到 1 之间. 将要构建一个逻辑回归模型来预测,某个学生是否被大学录取.设想你是大学相关部分的管 ...

  8. 机器学习算法 03 —— 逻辑回归算法(精确率和召回率、ROC曲线和AUC指标、过采样和欠采样)

    文章目录 系列文章 逻辑回归 1 逻辑回归介绍 1.1 逻辑回归原理 输入 激活函数 1.2 损失以及优化 2 逻辑回归API介绍 3 案例:肿瘤良性恶性预测 4 分类模型的评估 4.1 分类评估方法 ...

  9. 机器学习:基于逻辑回归对航空公司乘客满意度的因素分析

    机器学习:基于逻辑回归对航空公司乘客满意度的因素分析 作者:i阿极 作者简介:数据分析领域优质创作者.多项比赛获奖者:博主个人首页

  10. 机器学习中二分类逻辑回归的学习笔记

    1 致谢 感谢 Andrew Ng的教导! 2 前言 逻辑回归是机器学习中很重要而且很基础的算法,它也代表了分类算法最基本的思想. 3 二分类逻辑回归逻辑回归算法 3.1 假设函数 假设函数的形式为: ...

最新文章

  1. DELL服务器结合nagios硬件监控、报警
  2. 好程序员web前端CSS选择符(选择器):表示要定义样式的对象
  3. 集合框架源码分析四(Collections类详细分析)
  4. 2.12 总结-深度学习第四课《卷积神经网络》-Stanford吴恩达教授
  5. h5移动端如何让页面强制横屏
  6. 关于ArcMap中的地图文档单位
  7. PAT_B_1015_C++(25分)
  8. java ean13 条形码_【教程】Spire.Barcode 教程:如何在C#中创建EAN-13条码
  9. python+PyQT+Eric安装配置
  10. [转载]--- 开箱即用的springboot分库分表sharding-JDBC
  11. 阿里云推PostgreSQL 10 高可用版
  12. html——原生js与jquery创建元素节点区别
  13. File类之常用方法
  14. 进程、线程、协程基本概念理解
  15. Java中构造方法被别封装后的调用
  16. MATLAB符号函数的求导
  17. 多媒体计算机主机系统,多媒体计算机系统的组成
  18. 【华为2019年校园招聘】2019-5-8 软件题
  19. 对QQGame-大家来找茬的辅助工具的改进
  20. 这几款图片格式转换器帮助你轻松解决图片转换难题

热门文章

  1. 【OpenCV 例程200篇】81. 频率域高斯低通滤波器
  2. 【OpenCV 例程200篇】70. 一维连续函数的傅里叶变换
  3. opencv8-图像模糊
  4. 情人节用python写个贪吃蛇安慰自己
  5. 你值得掌握的 Git分支等 常用命令 (持续更新中)
  6. import win32com.client在python中报错及其解决办法
  7. NickLee 多層菜單
  8. mysql if--else
  9. object类型转换为Array类型
  10. Posix共享内存区