机器学习 | 分类算法原理——逻辑回归

news2024/11/19 22:42:27

Hi,大家好,我是半亩花海。接着上次的线性可分继续更新《白话机器学习的数学》这本书的学习笔记,在此分享逻辑回归这一分类算法原理。本章的分类算法原理基于《基于图像大小进行分类》项目,欢迎大家交流学习!

目录

一、逻辑回归概述

二、案例分析

1. sigmoid 函数

2. 决策边界


一、逻辑回归概述

逻辑回归(Logistic Regression)也称作 Logistic 回归分析,是一种广义的线性回归分析模型,属于机器学习中的监督学习。它实际上主要是用来解决二分类问题。通过给定的 n 组数据(训练集)来训练模型,并在训练结束后对给定的一组或多组数据(测试集)进行分类,其中每一组数据都是由 p 个指标构成。


二、案例分析

我们还是用之前博客中的分类案例,即按横向和纵向对图像进行分类的例子。为了处理简便,这里设横向的值为 1、纵向的值为 0

1. sigmoid 函数

我们在学习回归的时候,定义过一个带参数的函数:

f_{\boldsymbol{\theta}}(\boldsymbol{x})=\boldsymbol{\theta}^{\mathrm{T}} \boldsymbol{x}

这是通过最速下降法或随机梯度下降法来学习参数 \theta 的表达式。使用这个 \theta 能够求出对未知数据 x 的输出值。

这里的思路是一样的。我们需要能够将未知数据分类为某个类别的函数 f_{\boldsymbol{\theta}}(\boldsymbol{x})。 这是和感知机的判别函数 f_{\boldsymbol{\omega}}(\boldsymbol{x}) 类似的东西,使用与回归时同样的参数 \theta,函数的形式如下:

f_{\boldsymbol{\theta}}(\boldsymbol{x})=\frac{1}{1+\exp \left(-\boldsymbol{\theta}^{\mathrm{T}} \boldsymbol{x}\right)}

式中,\exp 的全称是 exponential,即指数函数。\exp(x)e^{x} 含义相同, 只是写法不同。e 是自然常数,具体的值为 2.7182......(ps:\exp \left(-\boldsymbol{\theta}^{\mathrm{T}} \boldsymbol{x}\right) 可以换成 \mathrm{e}^{-\boldsymbol{\theta}^{\mathrm{T}} \boldsymbol{x}} 这样的写法,指数部分如果过于复杂,上标的字号太小会很难看清,所以这时候使用 \exp 写法的情况比较多)。

上述函数的名字叫 sigmoid 函数,设 \boldsymbol{\theta}^{\mathrm{T}} \boldsymbol{x} 为横轴,f_\theta(x) 为纵轴,那么它的图形如下所示。

通过观察这个函数,我们会发现来个特征:

  • 当 \boldsymbol{\theta}^{\mathrm{T}} \boldsymbol{x} = 0 时,f_\theta(x)=0.5
  • 0 < f_\theta(x) < 1

刚才说到我们要用概率来考虑分类。因为 sigmoid 函数的取值范围是 0 < f_\theta(x) < 1,所以它可以作为概率来使用。

2. 决策边界

刚才说到把上述表达式 f_{\boldsymbol{\theta}}(\boldsymbol{x}) 当作概率来使用,那么接下来我们就把未知数据 \boldsymbol{x} 是横向图像的概率作为 f_{\boldsymbol{\theta}}(\boldsymbol{x}),其表达式如下。

P(y=1 \mid \boldsymbol{x})=f_{\boldsymbol{\theta}}(\boldsymbol{x})

上述式子叫条件概率。这是在给出 \boldsymbol{x} 数据时 y = 1,即图像为横向的概率。假如 f_{\boldsymbol{\theta}}(\boldsymbol{x}) 的计算结果是 0.8,意思是图像为横向的概率为 80%、纵向的概率为 20%,这种状态可以分类为横向

实际上,我们应该是以 0.5 为阈值注意一下这个阈值 0.5,在 sigmoid 函数图像中也出现过),然后把 f_{\boldsymbol{\theta}}(\boldsymbol{x}) 的结果与它相比较, 从而分类横向或纵向。

y= \begin{cases}1 & \left(f_{\boldsymbol{\theta}}(\boldsymbol{x}) \geqslant 0.5\right) \\ 0 & \left(f_{\boldsymbol{\theta}}(\boldsymbol{x})<0.5\right)\end{cases}

当 \boldsymbol{\theta}^{\mathrm{T}} \boldsymbol{x} = 0 时,f_\theta(x)=0.5。从图中还可以看出,在 f_\theta(x) \geq 0.5 时,\boldsymbol{\theta}^{\mathrm{T}} \boldsymbol{x} \geq 0;反过来,在 f_\theta(x) < 0.5 时,\boldsymbol{\theta}^{\mathrm{T}} \boldsymbol{x} < 0

我们可以把上述表达式 f_{\boldsymbol{\theta}}(\boldsymbol{x}) 改写为以下这种形式。

y= \begin{cases}1 & \left(\boldsymbol{\theta}^{\mathrm{T}} \boldsymbol{x} \geqslant 0\right) \\ 0 & \left(\boldsymbol{\theta}^{\mathrm{T}} \boldsymbol{x}<0\right)\end{cases}

下面我们像学习感知机时那样,设横轴为图像的宽(x_1)、纵轴为 图像的高(x_2),并且画出图来考虑。然后把训练数据都展示在图上,像学习回归时那样,先随便确定 \theta 再具体地去考虑。

比如当 \theta 是如下这样的向量时,我们来画一下 \boldsymbol{\theta}^{\mathrm{T}} \boldsymbol{x} \geq 0 的图像。

\boldsymbol{\theta}=\left[\begin{array}{l} \theta_0 \\ \theta_1 \\ \theta_2 \end{array}\right]=\left[\begin{array}{c} -100 \\ 2 \\ 1 \end{array}\right], \quad \boldsymbol{x}=\left[\begin{array}{l} 1 \\ x_1 \\ x_2 \end{array}\right]

先代入数据,把表达式变为容易理解的形式。如此看来,下面这个不等式表示的范围也就是图像被分类为横向\boldsymbol{\theta}^{\mathrm{T}} \boldsymbol{x} \geq 0y = 1)的范围。

\begin{aligned} & \boldsymbol{\theta}^{\mathrm{T}} \boldsymbol{x}=-100 \cdot 1+2 x_1+x_2 \geqslant 0 \\ & x_2 \geqslant-2 x_1+100 \end{aligned}

我们还可以试着画出不等式所对应的图,这样会更加清晰直观。

同理,分类为纵向的范围即为另一侧,所对应的图如下。

也就是说,我们将 \boldsymbol{\theta}^{\mathrm{T}} \boldsymbol{x} = 0 这条直线作为边界线,就可以把这条线两侧的数据分类为横向和纵向了,这样用于数据分类的直线称为决策边界

实际项目应用时这个决策边界似乎不能一开始就能正确地分类图像,实际效果如上图所示,通过前几节的学习,可以清晰地知道这是因为:和回归的时候一样,我们一开始决定参数时太随意了。为了求得正确的参数 \theta 而定义目标函数,再对目标函数进行微分,然后求参数的更新表达式,这种算法就称为逻辑回归

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1955033.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【51CTO-注册安全分析报告】

前言 由于网站注册入口容易被黑客攻击&#xff0c;存在如下安全问题&#xff1a; 暴力破解密码&#xff0c;造成用户信息泄露短信盗刷的安全问题&#xff0c;影响业务及导致用户投诉带来经济损失&#xff0c;尤其是后付费客户&#xff0c;风险巨大&#xff0c;造成亏损无底洞…

vim的使用及退出码(return 0)

linux基础之vim快速入门 linux基础之vim快速入门_基本linux vim-CSDN博客https://blog.csdn.net/ypxcan/article/details/119878137?ops_request_misc&request_id&biz_id102&utm_termvim%E7%BC%96%E8%BE%91%E5%99%A8%E5%A4%8D%E5%88%B6%E7%B2%98%E8%B4%B4%E4%BA%…

达梦数据库激活

SSH登录 192.168.0.148 账号&#xff1a;root 密码&#xff1a;xxx 1.上传 dm.key 文件到安装目录 /bin 目录下 cd /home/dmdba/dmdbms/bin rz -E dm.key2.修改 dm.key 文件权限 chown -R dmdba.dinstall dm.key3.打开数据库工具&#xff0c;新建查询&#xff0c;输入 cd /…

Odoo 17 仪表盘开发指南:打造高效的数据可视化中心

在现代企业管理中,数据驱动的决策至关重要。Odoo 17 提供了强大的平台来构建自定义仪表板, 适用于数据统计、工作台、驾驶舱、数据可视化等场景,以便用户能够一目了然地监控关键指标并做出及时反应。本文将介绍如何在 Odoo 17 中开发一个灵活且高度定制化的仪表盘系统,包括…

CVE-2018-8715

目录 前言影响范围漏洞利用0x04 漏洞修复指纹总结 前言 AppWeb 是一个嵌入式 Web 服务器&#xff0c;基于由 Embedthis Software LLC 开发和维护的开源 GPL 协议。它是用 C/C 编写的&#xff0c;几乎可以在任何现代操作系统上运行。当然&#xff0c;它的作用是为嵌入式设备提供…

【CodinGame】趣味算法(教学用) CLASH OF CODE -20240728

文章目录 正文数字*三角形四舍五入 写在最后END 正文 数字* import sys import math# Auto-generated code below aims at helping you parse # the standard input according to the problem statement.n int(input()) for i in range(n):a, b [int(j) for j in input().sp…

【2024最新】国内6个免费的AI绘画网站,支持Midjourney等绘画模型

一、什么是AI绘画&#xff1f; AI绘画&#xff0c;也称为人工智能绘画或机器生成艺术&#xff0c;是指使用人工智能技术来创作视觉艺术作品的过程。这种技术通常涉及到深度学习模型&#xff0c;尤其是生成对抗网络&#xff08;GANs&#xff09;和变分自编码器&#xff08;VAEs…

CTRL+Y,定位后快速复制

复制后可在EXCEL中进行粘贴。

SVN没有绿色图标解决方法

一.总体方法介绍 如果在使用 SVN&#xff08;Subversion&#xff09;时遇到没有绿色小图标的情况&#xff0c;可能是因为 SVN 客户端&#xff08;如 TortoiseSVN&#xff09;没有正确检测到工作拷贝的状态。以下是一些常见的解决方法&#xff1a; 确认安装 TortoiseSVN&#x…

SAPUI5基础知识18 - 自定义CSS和主题色

1. 背景 在上一篇博客中&#xff0c;我们通过使用SAPUI5提供的CSS类实现元素间距的调整。在本篇博客中&#xff0c;让我们看一下如何实现自定义的CSS样式。 2. 背景知识 2.1 CSS基础语法 CSS&#xff0c;全称为级联样式表&#xff08;Cascading Style Sheets&#xff09;&a…

搭建自己的金融数据源和量化分析平台(三):读取深交所股票列表

深交所的股票信息读取比较简单&#xff1a; 看上图&#xff0c;爬虫读取到下载按钮的链接之后发起请求&#xff0c;得到XLS文件后直接解析就可以了。 这里放出深交所爬虫模块的代码&#xff1a; # -*- coding: utf-8 -*- # 深圳交易所爬虫 import osimport pandas as pd imp…

关于Buffer和Channel的注意事项和细节

1.举例 package org.example.demo;import java.io.FileNotFoundException; import java.io.IOException; import java.io.RandomAccessFile; import java.nio.MappedByteBuffer; import java.nio.channels.FileChannel; import java.util.RandomAccess;/*** MappedByteBuffer可…

mqtt:测试eclipse paho qos=1的数据重发的功能

# 测试程序 【pom.xml】 <dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId><version>2.3.12.RELEASE</version></dependency><dependency…

DNS服务器搭建练习

练习要求&#xff1a; 3、搭建一个dns服务器&#xff0c;客户端可以使用该服务器解析域名www.haha.com为web服务器的 4、将客户端的ip地址中的域名解析服务器地址修改为第3题的dnt服务器的p&#xff0c;使用ping命令ping www.haha.com看能否ping通&#xff0c;用curl命令访问c…

【PyQt5】一文向您详细介绍 setPlaceholderText() 的作用

【PyQt5】一文向您详细介绍 setPlaceholderText() 的作用 下滑即可查看博客内容 &#x1f308; 欢迎莅临我的个人主页 &#x1f448;这里是我静心耕耘深度学习领域、真诚分享知识与智慧的小天地&#xff01;&#x1f387; &#x1f393; 博主简介&#xff1a;985高校的普通…

两种方法在MATLAB中实现共享参数拟合的源代码【MATLAB pk 1stopt】

有伙伴在巴山学长交流群中询问有关如何在matlab中实现共享参数拟合的问题&#xff0c;感觉这个问题挺有意思的&#xff0c;故拿出来与大家分享。咱也根据伙伴的提问在网上进行了相关搜索&#xff0c;发现这个共享参数拟合的问题基本上都跟国产拟合优化神器1stopt这款软件有关。…

Vue基础2

1.监视属性 先推荐大家安装第一个vscode常用插件 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><title>天气案例_监视简写</title><!-- 引入Vue --><script type"text/javascript"…

Linux环境下(DeepinV20+)安装并配置jdk和maven

一、jdk下载 Oracle的JDK开始收费了&#xff0c;如非必要&#xff0c;请勿使用&#xff01;&#xff01;&#xff01; jdk下载地址1&#xff08;推荐&#xff09;https://github.com/graalvm/graalvm-ce-builds/releases jdk下载地址2&#xff08;可选&#xff09;&#xff1a;…