机器学习--逻辑回归

news/2024/9/19 14:50:42/ 标签: 机器学习, 逻辑回归, 人工智能

逻辑回归

前情提要:线性回归

关于分类 C l a s s i f i c a t i o n Classification Classification

  在逻辑回归中,我们只讨论 y ∈ { 0 , 1 } y\in\{0, 1\} y{0,1} 的情况。其中 1 1 1 表示 p o s i t i v e c l a s s positive \; class positiveclass 0 0 0 表示 n e g a t i v e c l a s s negative \; class negativeclass

对线性回归进行修改

  在线性回归中,我们有 h ( x ) = w T x h(x) = w^Tx h(x)=wTx(这里写的是增加了 x 0 ( i ) x^{(i)}_0 x0(i) w 0 w_0 w0 的),而在逻辑回归中,我们希望 h ( x ) ∈ [ 0 , 1 ] h(x) \in [0, 1] h(x)[0,1],而 h ( x ) h(x) h(x) 的值具体代表着 y = 1 y = 1 y=1 的概率,所以我们需要引入一个函数: s i g m o i d f u n c t i o n sigmoid \; function sigmoidfunction,也叫 l o g i s t i c f u n c t i o n logistic \; function logisticfunction

g ( t ) = 1 1 + e − t g(t) = \frac{1}{1 + e^{-t}} g(t)=1+et1

  图像长这样:

在这里插入图片描述

  我们可以看到,这个函数过点 ( 0 , 0.5 ) (0, 0.5) (0,0.5)

  我们考虑把 h ( x ) h(x) h(x) 改成这样:

h ( x ( i ) ) = g ( w T x ( i ) ) = P ( y = 1 ∣ x ; w ) h(x^{(i)}) = g(w^Tx^{(i)}) = P(y = 1 | x ; w) h(x(i))=g(wTx(i))=P(y=1∣x;w)

  如果我们考虑将概率超过 1 2 \frac 12 21 的归为 y = 1 y = 1 y=1 的一类,并把概率小于 1 2 \frac 12 21 的归为 y = 0 y = 0 y=0 的这一类的话,我们会发现一件事:

  1. h ( x ( i ) ) > 1 2 h(x^{(i)}) > \frac 12 h(x(i))>21 g ( w T x ( i ) ) > 1 2 g(w^Tx^{(i)}) > \frac12 g(wTx(i))>21 又因为 g ( t ) g(t) g(t) 单增且过 ( 0 , 1 2 ) (0, \frac 12) (0,21),所以此时 w T x ( i ) > 0 w^Tx^{(i)} > 0 wTx(i)>0
  2. h ( x ( i ) ) ≤ 1 2 h(x^{(i)}) \le \frac 12 h(x(i))21 g ( w T x ( i ) ) ≤ 1 2 g(w^Tx^{(i)}) \le \frac12 g(wTx(i))21 又因为 g ( t ) g(t) g(t) 单增且过 ( 0 , 1 2 ) (0, \frac 12) (0,21),所以此时 w T x ( i ) ≤ 0 w^Tx^{(i)} \le 0 wTx(i)0

  也就是说:

  1. y被判定为 1 1 1 w T x ( i ) > 0 w^Tx^{(i)} > 0 wTx(i)>0
  2. y被判定为 0 0 0 w T x ( i ) ≤ 0 w^Tx^{(i)} \le 0 wTx(i)0

  而在线性回归中 w T x ( i ) w^Tx^{(i)} wTx(i) 是表示我们拟合出来的那条直线(二维的情况下,一下解释也是二维的情况下,高维就类比就行了)。而并且上过高中的都知道, w T x ( i ) > 0 w^Tx^{(i)} > 0 wTx(i)>0 表示的是这条直线上方的半平面部分,而 w T x ( i ) ≤ 0 w^Tx^{(i)} \le 0 wTx(i)0 表示的是这条直线下方的半平面部分。

  也就是说,我们用 w T x ( i ) w^Tx^{(i)} wTx(i) 这条直线将平面分成了两部分,一部分中的点是 y = 1 y = 1 y=1 的点,另一部分是 y = 0 y = 0 y=0 的点。

在这里插入图片描述

构造 c o s t f u n c t i o n cost \; function costfunction

  同样的,我们考虑和线性回归一样构造一个表示差异程度的函数,然后用 G D GD GD 最小化它就解决了,这里,我们有:

c o s t ( x , y ) = { − ln ⁡ ( h ( x ) ) i f y = 1 − ln ⁡ ( 1 − h ( x ) ) i f y = 0 cost(x, y) = \left\{ \begin{array}{} -\ln (h(x)) & if \;\; y = 1 \\ -\ln (1 - h(x)) & if \;\; y = 0 \end{array}\right. cost(x,y)={ln(h(x))ln(1h(x))ify=1ify=0

  也可以写成:

c o s t ( x , y ) = − [ y ln ⁡ h ( x ) + ( 1 − y ) ln ⁡ ( 1 − h ( x ) ) ] cost(x, y) = -\bigg[y\ln h(x) + (1 - y)\ln (1 - h(x))\bigg] cost(x,y)=[ylnh(x)+(1y)ln(1h(x))]

  我们来分类讨论一下:

  1. y = 1 y = 1 y=1 时, h ( x ) → 1 h(x) \rightarrow 1 h(x)1 时, c o s t cost cost 应该趋近于 0 0 0 h ( x ) → 0 h(x) \rightarrow 0 h(x)0 时, c o s t cost cost 应该很大。而 − ln ⁡ x -\ln x lnx 的图像刚好满足这个性质
  2. y = 0 y = 0 y=0 时, h ( x ) → 0 h(x) \rightarrow 0 h(x)0 时, c o s t cost cost 应该趋近于 0 0 0 h ( x ) → 1 h(x) \rightarrow 1 h(x)1 时, c o s t cost cost 应该很大。而 − ln ⁡ ( 1 − x ) -\ln (1-x) ln(1x) 的图像刚好满足这个性质

在这里插入图片描述

  然后我们就有我们的 c o s t f u n c t i o n cost \; function costfunction

J ( w ) = − ∑ i = 1 m [ y ln ⁡ h ( x ) + ( 1 − y ) ln ⁡ ( 1 − h ( x ) ) ] J(w) = -\sum_{i = 1}^m \bigg[y\ln h(x) + (1 - y)\ln (1 - h(x))\bigg] J(w)=i=1m[ylnh(x)+(1y)ln(1h(x))]

  之后 g d gd gd 就搞定了


http://www.ppmy.cn/news/1527296.html

相关文章

Vue主题色实现

主题色实现 情境 配置平台支持多个主题色的选择,用户可通过在配置平台选择项目主题色。前端项目在骨架屏加载页面获取配置信息,设置项目主题色,实现同个项目不同主题色渲染的需求 实现 1.定义主题色变量 不同主题色根据不同js文件划分定…

‌移动管家手机智能控制汽车系统

‌ 手机可以通过下载特定的应用程序来控制汽车系统,实现远程启动、锁/解锁车门、调节车内温度等功能。‌ ‌ 手机智能控制汽车系统主要通过下载并安装特定的APP来实现。‌ 首先,用户需要确定自己的手机系统是安卓还是苹果版,然后前往应用…

HTML+CSS - 网页布局之多列布局定位

1. 多列布局 CSS中多列布局处理文本内容&#xff0c;特别适合对于长段落或者大量文本进行自动分栏显示 类似于grid分布&#xff0c;但相较之下更加简洁明了 基本语法 <div class"container"><p>这是一些示例文本&#xff0c;当我们使用 column-count…

Python 中常见的数据结构(三)

Python 中常见的数据结构&#xff08;三&#xff09; 9. Heap&#xff08;堆&#xff09; 堆是一种特殊的树形数据结构&#xff0c;Python 中&#xff0c;可以使用 heapq 模块创建一个堆&#xff0c;例如&#xff1a; import heapq numbers [1, 3, 5, 7, 9] heap [] for n…

async Lifetimes

async Lifetimes (Jin Qing’s Column, Sep., 2024) From: https://rust-lang.github.io/async-book/03_async_await/01_chapter.html The Future’s lifetime is bounded by the parameter’s. // This function: async fn borrow_x(x: &u8) -> u8 { *x }// Is equ…

手机、平板电脑编程———未来之窗行业应用跨平台架构

一、平板编程优点 1. 便携性强 - 可以随时随地携带平板进行编程&#xff0c;不受地点限制&#xff0c;方便在旅行、出差或休息时间进行学习和开发。 2. 直观的触摸操作 - 利用触摸屏幕进行代码编辑、缩放、拖动等操作&#xff0c;提供了一种直观和自然的交互方式。 …

codeup:将已有文件夹推送到已有仓库

codeup&#xff1a;将已有文件夹推送到已有仓库 总流程git initgit remote add origin https://codeup.aliyun.com/xxx/xxx.gitgit add .git commit &#xff08;会遇到很多问题&#xff09;git push -u origin master &#xff08;会遇到很多问题&#xff09;成功在仓库中添加…

C++数据结构:以不多于3n/2的平均比较次数在顺序表中找出最大值最小值

题目描述&#xff1a;以不多于3n/2的平均比较次数&#xff0c;在一个有n个整数的顺序表中找到最大值和最小值。要求使用的空间尽可能的少。&#xff08;C实现&#xff09; 从本篇文章开始&#xff0c;我们使用C来实现数据结构的相关问题&#xff0c;本题即是C数据结构的一个基…

C++笔记之类间传参的方法

C++笔记之类间传参的方法 参考笔记: 1.C++笔记之静态成员函数可以在类外部访问私有构造函数吗? 2.C++笔记之设计模式:setter函数、依赖注入 3.C++笔记之两个类的实例之间传递参数——通过构造函数传递类对象的方法详细探究 4.C++笔记之智能指针和单例、依赖注入结合使用 5.…

使用streaming-json-py插件处理JSON数据流:详细指南

目录 一、streaming-json-py简介 二、安装与配置 三、基本使用 示例1:处理不完整的JSON对象 示例2:处理不完整的JSON数组 四、高级用法 实时数据流分析 日志处理 五、性能优化与错误处理 六、总结与展望 在数据驱动的现代社会,实时处理数据流已成为许多应用和服务…

Job定时自动执行SQL日志记录脚本

数据库类型&#xff1a; SQL Server 用途&#xff1a; 用于自动记录SQL当天运行的SQL语句及相关事务&#xff0c;对于DB及业务系统维护人员来说还是很有用的 可解决相关问题&#xff1a; 1、当业务数据表中一条重要数据误删之后&#xff0c;要找回该条数据的插入记录用于恢…

【Linux系统编程】第二十弹---进程优先级 命令行参数 环境变量

✨个人主页&#xff1a; 熬夜学编程的小林 &#x1f497;系列专栏&#xff1a; 【C语言详解】 【数据结构详解】【C详解】【Linux系统编程】 目录 1、进程优先级 2.1、什么是优先级 2.2、优先级的描述 2.3、优先级与权限的关系 2.4、为什么要有优先级 2.5、Linux优先级的…

Brave编译指南2024 Windows篇:拉取Brave源码(六)

1.引言 在编译Brave浏览器之前&#xff0c;首先需要获取项目的源码。源码是Brave浏览器的核心组成部分&#xff0c;包含了所有的功能、特性和组件代码。通过获取和管理源码&#xff0c;开发者可以深入了解Brave的实现细节&#xff0c;并进行二次开发和定制化改进。为了确保源码…

【Git】Clone

当git clone失败时&#xff0c;出现 RPC failed; curl 92 HTTP/2 stream 0 was not closed cleanly: CANCEL (err 8) 错误&#xff0c;可能由于网络连接不稳定或仓库太大导致的。 可以尝试以下几种方法来解决这个问题&#xff1a; 增加 Git 的缓冲区大小&#xff1a; git confi…

go语言的基本语法

学了go语言但是一直没整理。。。那怎么证明我学了&#xff1f;如果学了之后忘了怎么复习&#xff1f;遂诞生这几篇&#xff0c;当作Linux中间的小插曲 整理一下go语言的基本语法&#xff1a; package mainimport ("bufio""fmt""os" ) 在使用对…

蓝桥杯-STM32G431RBT6(串口)

前言 一、配置 二、使用步骤 1.串口发送 代码逻辑 效果展示 2.串口接收单个字符 代码逻辑 中断回调函数 3.串口接受字符串 代码逻辑 字符串函数 中断回调函数 声明 代码开源 前言 一、配置 二、使用步骤 1.串口发送 代码逻辑 sprintf(tx_buf,"jin ke\r\n&…

十大排序之:冒泡排序

目录 一、简介 实现过程 时间复杂度 二、代码实现 函数声明 Swap函数 单趟 多趟 测试 优化 一、简介 冒泡排序是一种简单的排序算法&#xff0c;它重复地比较相邻的两个元素&#xff0c;如果顺序错误就交换它们&#xff0c;直到没有元素需要交换为止。这个过程类…

通信工程学习:什么是HSS归属用户服务器

HSS&#xff1a;归属用户服务器 HSS&#xff08;归属用户服务器&#xff0c;Home Subscriber Server&#xff09;是IP多媒体子系统&#xff08;IMS&#xff09;中控制层的一个重要组成部分&#xff0c;它扮演着存储和管理用户相关信息的核心角色。以下是关于HSS归属用户服务器的…

反激电路中TL431光耦反馈参数的计算,环路设计思路

反馈的过程 当副边的输出电压升高时&#xff0c;TL431参考端电压&#xff08;R端&#xff09;电压也会升高&#xff0c;使得TL431的导通量增加&#xff0c;同时光耦内部的发光二极管流过的电流也会增大&#xff0c;进而使得光耦三极管导通量增加&#xff0c;相连的电源IC电压反…

【springboot】简易模块化开发项目整合MyBatis-plus

接父子工程项目搭建&#xff0c;继续扩展项目 重新调整模块结构 1.删除子模块fast-demo-web中所有无用内容 2.右键fast-demo-web名称->新建&#xff08;news&#xff09;->模块&#xff08;Module&#xff09;&#xff0c;创建新的子模块 3.选择新建Maven工程 4.新建模…