逻辑回归(LR)--分类

简介: 逻辑回归(logistic regression)属于有监督学习,判别模型,线性分类,不支持多分类,有预测函数,优化目标,求解算法。

逻辑回归(logistic regression)属于有监督学习,判别模型线性分类,不支持多分类,有预测函数,优化目标,求解算法。

描述:

从模型,损失函数,优化算法来描述,那就是:一种假设数据服从伯努利分布,通过极大似然作为优化目标,使用梯度下降算法进行模型参数求解的二分类模型。  

应用场景:比较常用: 医生病理诊断,信用评估,垃圾邮件分类

线性回归的回顾:参考上一篇文章:线性回归算法 https://blog.csdn.net/heda3/article/details/85844681

线性回归的目的是找到一条直线去拟合数据集的分布,并通过求解线性组合的数学表达式,实现预测新的数据。输入值和输出值的范围是连续的。

定义:给定一个数据集(X,Y),尽可能的学得一个线性模型h()对新的数据xi预测出f(xi),使得h(xi)尽可能的逼近真实值yi。

e23dfe0714b509a99b7e754658d9e1b1_20190306151333282.png

1、如何基于已有的线性回归模型去实现分类任务?(构建模型)

通过映射关系将线性回归的输出值映射为只有0和1的输出结果,那么如何实现这样的映射关系?

引入广义线性模型

20319b193b311d857365c79c869efe93_20190306151205396.png

通过一个联系函数g实现映射。

关于映射函数的选取?

1)阶跃函数:

953fd1e5f3f6284e7b7ad1e4712afbf2_20190306150451208.png

但是该函数不连续不能作为联系函数,对后面的求解不利。

参考:【1】https://blog.csdn.net/yinyu19950811/article/details/81321944

【2】反函数存在的条件https://blog.csdn.net/uncle_gy/article/details/78788737

2)引入对数几率函数(Sigmoid函数)

7f7342bcc185dd6c5dcfda49f08edf9f_20190306151016938.png

f724eb3c2e1d39b705be397ed6fc9994_watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2hlZGEz,size_16,color_FFFFFF,t_70.png

将对数几率函数代入广义线性模型可得到:

对数几率模型

d0c5d722705b9ce864d47da886a95f3e_20190306151521391.png

从上式分析,模型存在未知的w和b参数,如何依据现有的数据集去求解?

为此构建损失函数(策略,目的是找到优化的目标函数)

2、引入损失函数

线性回归的损失函数是:平方损失(均方误差)

e3f49117bc1d9c9bb288d72524516bfa_watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2hlZGEz,size_16,color_FFFFFF,t_70.png

逻辑回归模型的损失函数是?

使用线性回归的平方损失函数不行的原因:


下面引用:文章中机器学习算法(一):逻辑回归模型(Logistic Regression, LR)https://blog.csdn.net/weixin_39910711/article/details/81607386


前面我们介绍线性回归模型时,给出了线性回归的代价函数的形式(误差平方和函数),具体形式如下:

918a0c671dac2e7e1043765fb6ecc7ab_70.png

将逻辑回归的假设函数带入上式时,我们得到的是一个非凸函数,如下图:

f249542f547ef103190441ec06182b49_format,png.png

这样的函数拥有多个局部极小值,这就会使得我们在使用梯度下降法求解函数最小值时,所得到的结果并非总是全局最小,而有更大的可能得到的是局部最小值

而对于逻辑回归使用的损失函数:常用的是对数损失函数

因为对数损失函数可以为LR提供一个凸的代价函数,有利于使用梯度下降对参数求解

详细可参考:https://blog.csdn.net/weixin_39910711/article/details/81607386

bc2f5463e152f24f8a27b0ca16a01d11_watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2hlZGEz,size_16,color_FFFFFF,t_70.png

为了可以更加方便的进行后面的参数估计求解,把Cost表示在一行:

 

这与上面给出的两行表示形式是等价的。因此,代价函数最终形式为:

  

该函数是一个凸函数,这也达到了我们的要求。这也是LR代价函数最终形式

这里涉及一个问题:逻辑回归和似然函数的关系?

似然函数和损失函数的关系?

参考:【3】逻辑回归的理解https://blog.csdn.net/t46414704152abc/article/details/79574003


【4】【机器学习】【逻辑回归】最大似然估计的推导和求解步骤和梯度上升算法求解https://blog.csdn.net/u012421852/article/details/79575720


更多关于似然函数的理解:写的不错的博客文章


【1】逻辑回归与最大似然估计推导https://blog.csdn.net/yinyu19950811/article/details/81321944

【2】最大似然估计(Maximum likelihood estimation)(通过例子理解)https://blog.csdn.net/u014182497/article/details/82252456

【3】似然与极大似然估计http://fangs.in/post/thinkstats/likelihood/

【4】极大似然估计的理解与应用 https://www.cnblogs.com/xing901022/p/8418894.html

【5】最大似然估计 (MLE) 最大后验概率(MAP)https://www.cnblogs.com/sylvanas2012/p/5058065.html

【6】极大似然估计思想的最简单解释https://blog.csdn.net/class_brick/article/details/79724660

【7】极大似然估计详解,写的太好了!https://blog.csdn.net/qq_39355550/article/details/81809467

【8】https://blog.csdn.net/touch_dream/article/details/79371462

3、优化算法求解

3.1使用梯度下降法求解

参考:文章https://blog.csdn.net/weixin_39910711/article/details/81607386

首先:Sigmoid函数的求导过程

f277eacec81b2ce561250d6b39337983_format,png.png

故,sigmoid函数的导数

  

损失函数梯度求解过程:

df4afbff581e276c731811c8d596df5a_format,png.png

故,参数更新公式为(沿着梯度方向更新求解):

69df708677ca4cf360882183d2da6efc_format,png.png

3.2使用梯度上升法求解

沿着函数梯度的方向找到函数的最大值

迭代公式:

f0da8f696c715ccf24f4ab925f46adf5_20200105223448538.png

分为3种情况:


1)使用全部数据集的梯度上升算法


   对整个数据集计算梯度


2)随机选择数据点的随机梯度上升算法


    一次只用一个样本更新回归系数


3)优化后的随机梯度上升算法


 alpha在每次迭代时候都会调整(同时避免参数严格下降,类似模拟退火算法)


  随机选取样本来更新回归系数

算法的优缺点:

优点:

(1)适合一个得到分类概率的场景

(2)计算代价不高,容易理解和实现,训练速度快

(3)对于数据中的小噪声鲁棒性很好,并且不会受到轻微的多重共线性的特别影响?

缺点:

(1)容易欠拟合,分类精度不高

(2)数据特征缺失或者特征空间很大时表现效果不是很好?

(3)很难处理不平衡数据问题,处理非线性数据比较麻烦?

关于逻辑回归面试问题:https://www.cnblogs.com/ModifyRong/p/7739955.html

数学知识:凸函数的概念https://blog.csdn.net/u012513618/article/details/78392940

目录
相关文章
|
10天前
|
存储 PyTorch 算法框架/工具
利用PyTorch的三元组损失Hard Triplet Loss进行嵌入模型微调
本文介绍了如何使用 PyTorch 和三元组边缘损失(Triplet Margin Loss)微调嵌入模型,详细讲解了实现细节和代码示例。
25 4
|
1月前
|
机器学习/深度学习 存储 搜索推荐
GBDT+LR简介
GBDT+LR简介
32 0
|
机器学习/深度学习 人工智能 算法
【Pytorch神经网络实战案例】21 基于Cora数据集实现Multi_Sample Dropout图卷积网络模型的论文分类
是在Dropout随机选取节点丢弃的部分上进行优化,即将Dropout随机选取的一组节点变成随机选取多组节点,并计算每组节点的结果和反向传播的损失值。最终,将计算多组的损失值进行平均,得到最终的损失值,并用其更新网络,如图9-19所示。
254 0
【Pytorch神经网络实战案例】21 基于Cora数据集实现Multi_Sample Dropout图卷积网络模型的论文分类
|
机器学习/深度学习
Lesson 4.1 逻辑回归模型构建与多分类学习方法
Lesson 4.1 逻辑回归模型构建与多分类学习方法
|
机器学习/深度学习 C++ 网络架构
Lesson 4.1 逻辑回归模型构建与多分类学习方法-1
Lesson 4.1 逻辑回归模型构建与多分类学习方法-1
|
机器学习/深度学习 传感器 算法
分类预测 | MATLAB实现基于PSO-NN、SVM、KNN、DT的多特征数据分类预测,二分类及多分类
分类预测 | MATLAB实现基于PSO-NN、SVM、KNN、DT的多特征数据分类预测,二分类及多分类
|
机器学习/深度学习 人工智能 开发者
逻辑回归参数的确定|学习笔记
快速学习逻辑回归参数的确定
261 0
逻辑回归参数的确定|学习笔记
|
算法 数据挖掘 API
AutoML | AutoSklearn的基本分类、回归、多输出回归和多标签分类数据集的使用示例
AutoML | AutoSklearn的基本分类、回归、多输出回归和多标签分类数据集的使用示例
197 0
AutoML | AutoSklearn的基本分类、回归、多输出回归和多标签分类数据集的使用示例
|
机器学习/深度学习 存储 数据可视化
机器学习算法(一): 基于逻辑回归的分类预测-Task01
Logistic Regression 虽然被称为回归,但其实际上是分类模型,并常用于二分类。Logistic Regression 因其简单、可并行化、可解释强深受工业界喜爱。
337 0
机器学习算法(一): 基于逻辑回归的分类预测-Task01
ML之LiR:利用LiR线性回归算法(自定义目标函数MSE和优化器GD)对Boston房价数据集(两特征+归一化)进行回归预测
ML之LiR:利用LiR线性回归算法(自定义目标函数MSE和优化器GD)对Boston房价数据集(两特征+归一化)进行回归预测
ML之LiR:利用LiR线性回归算法(自定义目标函数MSE和优化器GD)对Boston房价数据集(两特征+归一化)进行回归预测