机器学习之你不懂的 sigmoid函数
申明:文章内容是作者自己的学习笔记,教学来源是开课吧讲师梁勇老师。
不要杠,开心学习!
sigmoid函数
- sigmoid函数原型
- 什么是sigmoid函数?
- Sigmoid函数的表达式:
- Sigmoid函数的图像:
- 函数的基本性质:
- Sigmoid函数与逻辑回归
- 如何绘制sigmoid函数图像
sigmoid函数原型
对于分类任务来说,如果仅仅给出分类的结果,在某些场景下,提供的信息可能并不充足,这就会带来一定的局限。因此,我们建立分类模型,不仅应该能够进行分类,同时,也应该能够提供样本属于该类别的概率。这在现实中是非常实用的。例如,某人患病的概率,明天下雨概率等。因此,我们需要将z的值转换为概率值,逻辑回归使用sigmoid函数来实现转换。
什么是sigmoid函数?
Sigmoid函数是机器学习中比较常用的一个函数,在逻辑回归、人工神经网络中有着广泛的应用,Sigmoid函数是一个有着优美S形曲线的数学函数。
Sigmoid函数的表达式:
该函数的原型为:
Sigmoid函数的图像:
在上图可以看出,Sigmoid函数连续,光滑,严格单调,是一个非常良好的阈值函数。当x趋近负无穷时,y趋近于0;趋近于正无穷时,y趋近于1;x=0时,y=0.5。当然,在x超出[-6,6]的范围后,函数值基本上没有变化,值非常接近,在应用中一般不考虑。Sigmoid函数的值域范围限制在(0,1)之间,这和概率值的范围[0,1]很接近,所以二分类的概率常常用这个函数。
当z的值从-∞向+∞过渡时,sigmoid函数的取值范围为(0, 1),这正好是概率的取值范围,当z=0时,sigmoid(0)的值为0.5。因此,模型就可以将sigmoid的输出值 p 作为正例的概率,而 1-p 作为负例的概率。以阈值0.5作为两个分类的阈值,就是看 p 与 1-p 哪个类别的概率值更大,预测的结果就为哪个类别。
假设真实的分类的 y 值为1与0,则:
函数的基本性质:
- 定义域:(−∞,+∞)
- 值域:(−1,1)
- 函数在定义域内为连续和光滑函数
- 处处可导,导数为:f′(x)=f(x)(1−f(x))
Sigmoid函数与逻辑回归
Sigmoid函数之所以叫Sigmoid,是因为函数的图像很想一个字母S。这个函数是一个很有意思的函数,从图像上我们可以观察到一些直观的特性:函数的取值在0-1之间,且在0.5处为中心对称,并且越靠近x=0的取值斜率越大。
机器学习中一个重要的预测模型逻辑回归(LR)就是基于Sigmoid函数实现的。
LR模型的主要任务是给定一些历史的{X,Y},其中X是样本n个特征值,Y的取值是{0,1}代表正例与负例,通过对这些历史样本的学习,从而得到一个数学模型,给定一个新的X,能够预测出Y。
LR模型是一个二分类模型,即对于一个X,预测其发生或不发生。但事实上,对于一个事件发生的情况,往往不能得到100%的预测,因此LR可以得到一个事件发生的可能性,超过50%则认为事件发生,低于50%则认为事件不发生。
从LR的目的上来看,在选择函数时,有两个条件是必须要满足的:
- 取值范围在0~1之间。
- 对于一个事件发生情况,50%是其结果的分水岭,选择函数应该在0.5中心对称。
从这两个条件来看,Sigmoid很好的符合了LR的需求。关于逻辑回归的具体实现与相关问题,可看这篇文章Logistic函数(sigmoid函数) - wenjun’s blog,在此不再赘述。
如何绘制sigmoid函数图像
我们通过Python程序来绘制sigmoid函数在[-10, 10]区间的图像。
import numpy as np
import matplotlib.pyplot as plt
plt.rcParams["font.family"] = "SimHei"
plt.rcParams["axes.unicode_minus"] = False
plt.rcParams["font.size"] = 12
# 定义sigmoid函数。
def sigmoid(z):return 1 / (1 + np.exp(-z))
z = np.linspace(-10, 10, 200)
plt.plot(z, sigmoid(z))
# 绘制水平线与垂直线。
plt.axvline(x=0, ls="--", c="k")
plt.axhline(ls=":", c="k")
plt.axhline(y=0.5, ls=":", c="k")
plt.axhline(y=1, ls=":", c="k")
plt.xlabel("z值")
plt.ylabel("sigmoid(z)值")
机器学习之你不懂的 sigmoid函数相关推荐
- 机器学习基础(七)——sigmoid 函数的性质
θ(s)=11+e−s \theta(s)=\frac1{1+e^{-s}} 值域 (0,1)(0, 1) 常作为神经元(neuron)内部所代表的激励函数(activation)存在: 但对于 BP ...
- 机器学习-sigmoid函数
sigmoid函数表达式: 图像: 不同参数对图像的影响: sigmoid函数在机器学习中用来更好的拟合曲线 多个sigmoid函数相加可以组成复杂的曲线 例如,图中红色曲线,可以由0.1.2.3个s ...
- sigmoid函数_机器学习面试常考知识之激活函数
神经网络的知识 激活函数 y=f(Wx+b) 常用的激活函数有sigmoid.tanh.ReLu.LeakyReLU等 为什么需要激活函数(这里说的激活函数一般指非线性激活),假设不用激活函数(相 ...
- 记录机器学习练习中不懂的函数
该文章目的: 记录自己在做机器学习练习题中遇到的陌生函数的用法,也包括经常会忘记的函数,后续会一直在这篇文章中增加!ヾ(◍°∇°◍)ノ゙ 该文章涉及的函数包有python.numpy.pandas.m ...
- 机器学习入门(03)— 激活函数分类(阶跃函数和 sigmoid 函数的理论、实现、显示以及区别、非线性函数、ReLU 函数、tanh 函数)
各种激活函数介绍,请参考下面链接: https://en.wikipedia.org/wiki/Activation_function 1. 阶跃函数 1.1 理论 式(3.3)表示的激活函数以阈值为 ...
- 【Python 机器学习 基础】绘制 sigmoid 函数曲线 || exp:以e为底的指数函数(科普向)
一.sigmoid 函数简介 以下内容来自百度百科:Sigmoid函数是一个在生物学中常见的S型函数,也称为S型生长曲线.在信息科学中,由于其单增以及反函数单增等性质,Sigmoid函数常被用作神经网 ...
- python中sign函数图片_机器学习 第33集:什么是sign函数?什么是sigmoid函数?( 含有笔记、代码、注释 )...
什么是sign函数?什么是sigmoid函数? ① sign(x)将大于0的分为1,小于0的分为-1. ② sigmoid(x)将大于0.5的分为1,小于0.5的分为0. Python基础积累 函数 ...
- 【机器学习】【逻辑回归】Logistic函数/Sigmoid函数的详细公式推导
sigmoid函数的数学公式 sigmoid函数的因变量x取值范围是-∞到+∞,(-∞,+∞),但是sigmoid函数的值域是(0, 1). 不管x取什么值其对应的sigmoid函数值一定会落到(0, ...
- python中sigmoid函数_机器学习中 Sigmoid 函数的物理含义
讨论范围:二分类问题 只有 2 个分类的情况,logistic 曲线可以简化为 又叫 sigmoid 函数. 1. Python 画 Sigmoid 函数的图像 import numpy as np ...
- 【机器学习基础】Softmax与Sigmoid你还不知道存在这些联系?
1. Sigmoid函数 函数也叫 函数,将输入值压缩到 区间之中,其函数表达式为: 函数图像如图所示: 其求导之后的表达式为: 其梯度的导数图像如: 对于 函数,其优点为: 函数的输出在 之间,我们 ...
最新文章
- 用正交变换化二次型为标准形的具体步骤
- Python之列表list转换成字典dict的的方法【使用内置函数zip和dict快速搞定】
- 华为擎云w510_鸿蒙系统之后,华为突然官宣新生态,正式对windows说不
- 阿加莎•克里斯蒂作品04东方快车谋杀案
- java 对象调用_java 对象调用
- vlc-android编译流程
- 如何解决Mac上隐藏红色通知标记?技巧来啦
- I,P,B帧和PTS,DTS的关系,GOP相关
- 谭浩强c语言程序设计作业,谭浩强《C语言程序设计》第7章习题解答(13、14题)...
- 增强安全性、支持跨页逻辑关系设定的电信运营级EnableQ在线问卷调查引擎V1.60来了...
- 刚买的win8.1电脑 求常用的软件推荐?
- 直播问答的后博弈时代:社交化或许才是未来
- kubectl源码分析之drain
- 全球各个国家及其首都中英文对照表
- 用c写一个等腰三角星星图案
- 主机宝iis版_主机宝IIS版|IIS网站宝(IIS科技主机管理系统)下载 v3.0 官方免费版 - 比克尔下载...
- 20145212 罗天晨 免杀原理与实践
- QIIME2使用方法
- 搜索引擎SEO因素的类型
- 区块链技术的安全价值与局限性解析
热门文章
- Chrome屏蔽广告
- 遇到【java.lang.NoClassDefFoundError: javax/xml/bind/DatatypeConverter】的解决方案
- .net reflector反编译破解软件
- Xcode6 app沙盒目录
- 射频通信PCC和SCC定义
- mysql对象资源管理器在哪里_SQL server2008-对象资源管理器-数据库
- 用C语言求并集和交集
- 数字孪生|数字孪生装备-关键技术和发展阶段
- python如何控制运行时间_Python控制函数运行时间
- 某蒟蒻无聊竟用UNO做了个复读机?