逻辑回归-为什么使用逻辑函数

2024-09-06 06:38
文章标签 函数 使用 逻辑 回归

本文主要是介绍逻辑回归-为什么使用逻辑函数,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

从线性分类器谈起

  给定一些数据集合,他们分别属于两个不同的类别。例如对于广告数据来说,是典型的二分类问题,一般将被点击的数据称为正样本,没被点击的数据称为负样本。现在我们要找到一个线性分类器,将这些数据分为两类(当然实际情况中,广告数据特别复杂,不可能用一个线性分类器区分)。用X表示样本数据,Y表示样本类别(例如1与-1,或者1与0)。我们线性分类器的目的,就是找到一个超平面(Hyperplan)将两类样本分开。对于这个超平面,可以用以下式子描述: 

ωTx+b=0

  对于logistic回归,有: 

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

  其中  x  为样本, x=[x1,x2,,xn]  为n维向量,函数g为我们常说的logistic函数。g的更一般公式为: 

g(z)=11+ez

  这个公式,对机器学习稍微有点了解的同学可能都特别熟悉,不光在logistic回归中,在SVM中,在ANN中,都能见到他的身影,应用特别广泛。大部分资料在谈到这个式子时候,都是直接给出来。但是不知道大家有没有想过,既然这个式子用途这么广泛,那我们为什么要用它呢?

  是不是已经有好多人愣住了。大家都是这么用的。书上都是这么写的啊。是的,但是当一个东西老在你眼前晃来晃去的时候,你是不是应该想想为什么呢?反正对于我来说,如果一个东西在我眼前都出现了第三次了而我还不知其所以然,我一定会去想方设法弄明白为什么。

为什么要用Logistic函数

  学过模式识别的同学肯定学过各种分类器。分类器中最简单的自然是线性分类器,线性分类器中,最简单的应该就属于感知器了。在上个世纪五六十年代,感知器就出现了: 

y=0,i=1nωixb

y=1,i=1nωix>b

  感知器的思想,就是对所有特征与权重做点积(内积),然后根据与阈值做大小比较,将样本分为两类。稍微了解一点神经网络的同学,对一下这幅图一定不陌生:

这里写图片描述

  没错,这幅图描述的就是一个感知器。 
  我考研考的是控制原理,如果学过控制原理或者学过信号系统的同学,就知道感知器相当于那两门课中的阶跃函数:

这里写图片描述

  这两者的本质都是一致的,即通过划定一个阈值,然后比较样本与阈值的大小来分类。

  这个模型简单直观,实现起来也比较容易(要不怎么说是最简单的现行分类器呢)。但是问题在于,这个模型不够光滑。第一,假设 t0=10 ,现在有一个样本进来,最后计算出来的值为10.01,你说这个样本分类应该是为1还是0呢?好像都不太靠谱的样子。第二,这个函数在 t0  这点有个阶跃,有从0到1的突变,导致这点不连续,在数学上处理起来也不方便。

  啰啰嗦嗦写了这么多了,终于轮到logistic函数出场了。对比前面的感知器或者阶跃函数,他有什么优点呢? 
这里写图片描述

  通过logistic函数的图像,我们很容易总结出他的以下优点: 
  1.他的输入范围是 +  ,而之于刚好为(0,1),正好满足概率分布为(0,1)的要求。我们用概率去描述分类器,自然比单纯的某个阈值要方便很多; 
  2.他是一个单调上升的函数,具有良好的连续性,不存在不连续点。

  写到这里,小伙伴们应该都明白为什么要使用logistic函数了吧。 
  敬请期待logistic系列后续文章。

这篇关于逻辑回归-为什么使用逻辑函数的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1141287

相关文章

Python并行处理实战之如何使用ProcessPoolExecutor加速计算

《Python并行处理实战之如何使用ProcessPoolExecutor加速计算》Python提供了多种并行处理的方式,其中concurrent.futures模块的ProcessPoolExecu... 目录简介完整代码示例代码解释1. 导入必要的模块2. 定义处理函数3. 主函数4. 生成数字列表5.

Python中help()和dir()函数的使用

《Python中help()和dir()函数的使用》我们经常需要查看某个对象(如模块、类、函数等)的属性和方法,Python提供了两个内置函数help()和dir(),它们可以帮助我们快速了解代... 目录1. 引言2. help() 函数2.1 作用2.2 使用方法2.3 示例(1) 查看内置函数的帮助(

Linux脚本(shell)的使用方式

《Linux脚本(shell)的使用方式》:本文主要介绍Linux脚本(shell)的使用方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录概述语法详解数学运算表达式Shell变量变量分类环境变量Shell内部变量自定义变量:定义、赋值自定义变量:引用、修改、删

Java使用HttpClient实现图片下载与本地保存功能

《Java使用HttpClient实现图片下载与本地保存功能》在当今数字化时代,网络资源的获取与处理已成为软件开发中的常见需求,其中,图片作为网络上最常见的资源之一,其下载与保存功能在许多应用场景中都... 目录引言一、Apache HttpClient简介二、技术栈与环境准备三、实现图片下载与保存功能1.

Python中使用uv创建环境及原理举例详解

《Python中使用uv创建环境及原理举例详解》uv是Astral团队开发的高性能Python工具,整合包管理、虚拟环境、Python版本控制等功能,:本文主要介绍Python中使用uv创建环境及... 目录一、uv工具简介核心特点:二、安装uv1. 通过pip安装2. 通过脚本安装验证安装:配置镜像源(可

C++ 函数 strftime 和时间格式示例详解

《C++函数strftime和时间格式示例详解》strftime是C/C++标准库中用于格式化日期和时间的函数,定义在ctime头文件中,它将tm结构体中的时间信息转换为指定格式的字符串,是处理... 目录C++ 函数 strftipythonme 详解一、函数原型二、功能描述三、格式字符串说明四、返回值五

LiteFlow轻量级工作流引擎使用示例详解

《LiteFlow轻量级工作流引擎使用示例详解》:本文主要介绍LiteFlow是一个灵活、简洁且轻量的工作流引擎,适合用于中小型项目和微服务架构中的流程编排,本文给大家介绍LiteFlow轻量级工... 目录1. LiteFlow 主要特点2. 工作流定义方式3. LiteFlow 流程示例4. LiteF

使用Python开发一个现代化屏幕取色器

《使用Python开发一个现代化屏幕取色器》在UI设计、网页开发等场景中,颜色拾取是高频需求,:本文主要介绍如何使用Python开发一个现代化屏幕取色器,有需要的小伙伴可以参考一下... 目录一、项目概述二、核心功能解析2.1 实时颜色追踪2.2 智能颜色显示三、效果展示四、实现步骤详解4.1 环境配置4.

使用jenv工具管理多个JDK版本的方法步骤

《使用jenv工具管理多个JDK版本的方法步骤》jenv是一个开源的Java环境管理工具,旨在帮助开发者在同一台机器上轻松管理和切换多个Java版本,:本文主要介绍使用jenv工具管理多个JD... 目录一、jenv到底是干啥的?二、jenv的核心功能(一)管理多个Java版本(二)支持插件扩展(三)环境隔

SQL中JOIN操作的条件使用总结与实践

《SQL中JOIN操作的条件使用总结与实践》在SQL查询中,JOIN操作是多表关联的核心工具,本文将从原理,场景和最佳实践三个方面总结JOIN条件的使用规则,希望可以帮助开发者精准控制查询逻辑... 目录一、ON与WHERE的本质区别二、场景化条件使用规则三、最佳实践建议1.优先使用ON条件2.WHERE用