算法梳理(二)逻辑回归原理及实现
算法梳理(二)逻辑回归原理及实现
- 逻辑回归原理
- 一、从线性回归到逻辑回归
- 二、二分类的逻辑回归
- (一)过程推理
- (二)正则化
- 三、scikit-learn中逻辑回归参数详解
逻辑回归原理
logistic回归又称logistic回归分析是一个分类算法,是一种广义的线性回归分析模型,它可以处理二元分类以及多元分类。常用于处理分类问题。
一、从线性回归到逻辑回归
我们知道,线性回归的模型是求出输出特征向量Y和输入样本矩阵X之间的线性关系系数θ,满足Y=Xθ。此时我们的Y是连续的,所以是回归模型。如果我们想要Y是离散的话,怎么办呢?一个可以想到的办法是,我们对于这个Y再做一次函数转换,变为g(Y)。如果我们令g(Y)的值在某个实数区间的时候是类别A,在另一个实数区间的时候是类别B,以此类推,就得到了一个分类模型。如果结果的类别只有两种,那么就是一个二元分类模型了。逻辑回归的出发点就是从这来的。下面我们开始引入二元逻辑回归。
二、二分类的逻辑回归
(一)过程推理
考虑二分类任务,其输出标记y值域是集合{0,1},而线性回归产生的预测值是实数,于是需要将实值转换为0/1值。于是我们用到了对数几率函数。
函数图像如下:
下面进行逻辑回归的分析和推理
y^\widehat{y}y 表示f(x)模型的预测值
而在逻辑回归中我们输出一个概率值,则先用p^\widehat{p}p 表示f(x)结果对应的概率
如果p^\widehat{p}p 大于等于0.5,则结果为1,p^\widehat{p}p 小于等于0.5则结果为0
利用对数几率函数由线性回归到逻辑回归的转化:
代入公式:
接下来就是给定x,y如何找到这个 θ\thetaθ
我们可以使用最大似然函数直接进行求解
这里从另一个角度进行分析:
如图所示,如果y=1时, 即p>0.5, 这个时候概率p越小, 被错分为y=0的几率越大,损失函数便会越大。与之对应,如果y=0时, 即p<0.5, 这个时候概率p越大, 被错分为y=1的几率越大,损失函数便会越大。因此我们想到了下面的log函数。
对应的y=0,1两个函数如下图:
可以看出两根曲线相应的表示成了y=1,y=0时对应的损失。
则最终的代价函数可定义为:
代入对数几率函数:
如何求解呢?我们先考虑梯度下降法的方式。
为了计算简便我们可以充分利用对数几率函数和log函数
对σ(t)\sigma(t)σ(t)求导可得:
然后再对log求导可得:
可得到求导公式:
最终可得到对应的梯度矩阵
之后取步长进行迭代,就可以得出最终的值θ\thetaθ。
(二)正则化
正则化是结构风险最小化策略的实现,是在经验风险上加上一个正则项(regularizer)或罚项(penalty term)。是模型选择的典型方法。正则化项一般是模型复杂度的单调递增函数,模型越复杂,正则化值越大。比较常用的正则化项有模型参数向量的范数,L1、L2等。
我们以线性回归为例,当我们的数据拟合出现过拟合的时候。
这个时候,我们可以发现w的一些值会变得很大。
而正则化的作用就是限制w参数大小。
首先来看加入L1正则化的优化目标(LASSO):
加入L1正则化的优化目标
min12m∑i=1n(hw(x(i))−y(i))2+λ∑j=12∣wj∣min \frac{1}{2m} \sum_{i=1}^{n} (h_w(x^{(i)})-y^{(i)})^2 + \lambda \sum_{j=1}^{2} |w_j|min2m1i=1∑n(hw(x(i))−y(i))2+λj=1∑2∣wj∣
L1趋向于使得一部分的W值为零,可以起到特征选择的作用。
其中gamma是及其重要的参数,下面我们看一下在LASSO回归中gamma的取值对数据拟合的影响:
- gamma取0.01:
- gamma取0.1:
加入L2正则化的优化目标(Ridge):
min12m∑i=1n(hw(x(i))−y(i))2+λ∑j=12wj2min \frac{1}{2m} \sum_{i=1}^{n} (h_w(x^{(i)})-y^{(i)})^2 + \lambda \sum_{j=1}^{2}w_j^2min2m1i=1∑n(hw(x(i))−y(i))2+λj=1∑2wj2
L2趋向于一条曲线。
其中gamma是及其重要的参数,下面我们看一下在Ridge回归中gamma的取值对数据拟合的影响:
- gamma=1
- gamma = 100
三、scikit-learn中逻辑回归参数详解
之前做过这一工作,可参考
算法梳理(二)逻辑回归原理及实现相关推荐
- 逻辑回归原理梳理_以python为工具 【Python机器学习系列(九)】
逻辑回归原理梳理_以python为工具 [Python机器学习系列(九)] 文章目录 1.传统线性回归 2.引入sigmoid函数并复合 3. 代价函数 4.似然函数也可以 5. python梯度下降 ...
- 【机器学习】Logistic Regression逻辑回归原理与java实现
[机器学习]Logistic Regression逻辑回归原理与java实现 1.基于概率的机器学习算法 2.逻辑回归算法原理 2.1.分离超平面 2.2.阈值函数 2.3.样本概率 2.4.损失函数 ...
- 机器学习必备算法之(一)逻辑回归(logistics regression)及Python实现
笔者为数学系的一个小白,最近系统的在复习机器学习以及一些深度学习的内容,准备开个博记录一下这个有趣又痛苦的过程~hiahiahia,主要记录机器学习的几大经典算法的理论以及Python的实现.非计算机 ...
- 【机器学习】逻辑回归原理介绍
[机器学习]逻辑回归原理介绍 [机器学习]逻辑回归python实现 [机器学习]逻辑回归sklearn实现 Logistic 回归模型是目前广泛使用的学习算法之一,通常用来解决二分类问题,虽然名字中有 ...
- 【TensorFlow】逻辑回归原理与实现(超详细)
逻辑回归原理与实现 学习目标 1. 神经网络基础 1.1 Logistic回归 1.2 逻辑回归损失函数 2. 梯度下降算法 3. 导数 3.1 导数 3.2 导数计算图 3.3 链式法则 3.4 逻 ...
- 金融领域下的数据挖掘算法应用:逻辑回归模型
摩天,用友旗下社会化的企业数智化学习认证社区,提供数智营销.智慧医疗.数智金融.智能制造.项目管理等精品课程,数智化人才上摩天!https://mot.yonyou.com/ 你将会学到: 股票客户流 ...
- 收藏!!如何 Get 机器学习必备的算法技能? | 逻辑回归
本文是吴恩达老师的机器学习课程[1]的笔记和代码复现部分(逻辑回归). 作者:黄海广[2] 备注:笔记和作业(含数据.原始作业文件).视频都在github[3]中下载. 我将陆续将课程笔记和课程代码发 ...
- Spark MLlib回归算法------线性回归、逻辑回归、SVM和ALS
Spark MLlib回归算法------线性回归.逻辑回归.SVM和ALS 1.线性回归: (1)模型的建立: 回归正则化方法(Lasso,Ridge和ElasticNet)在高维和数据集变量之间多 ...
- 逻辑回归原理与sklearn实现
目录 一.逻辑回归介绍 1.应用场景 2.逻辑回归原理 2.1 输入 2.2激活函数 3.损失与优化 3.1 损失(对数似然损失) 3.2 优化 二.逻辑回归API介绍 三.案例实现 四.分类评估方法 ...
最新文章
- 高性能NIO框架Netty入门篇
- python画长方形-怎么用python 画出任意占空比的一串矩形方波呢?
- Python编程基础:第二十九节 异常Exception
- sgu 207 Robbers
- 角色动作系统概述:战斗、3C相关
- LeetCode Algorithm 103. 二叉树的锯齿形层序遍历
- 直播 背景 技术体系 乐视云直播Demo
- 爬了菊姐的两万条评论,竟发现菊粉都是这样的人!
- 【c语言】棋盘游戏--三子棋
- Facebook史上最严重宕机:互联网企业是时候重新审视架构了?
- IE6不支持min-heigt的bug解决的办法
- 通过channel进行goroutine间的通信
- Python 分析谁才是「权利的游戏」真正的主角?
- 安装webpack-cli时遇到的问题
- VS2017_Reshaper
- JAVA实现字体扩大代码_[Java教程]jQuery实现设置字体大小代码实例
- 图片秒加水印制作生成微信小程序源码下载免服务器域名
- 从零接入微信公众号(Java实现 附源码)
- [vivado系列]Vivado软件的下载
- 浅谈Feature Scaling