当前位置: 首页 > news >正文

【机器学习】分类

文章目录

    • 1. 能否用回归解决分类问题
    • 2. 生成模型(概率生成)
    • 3. 判别模型(逻辑回归)
    • 4. 多分类问题

1. 能否用回归解决分类问题

二元分类

  • 数据分布不规律,回归函数会尽量减少误差,导致不合理的偏移
  • 离分界较远的点会影响划分
  • 决策边界偏移:难以找到回归函数,使大部分样本点集中在离散点附近

多元分类

  • 使用数值描述类别时,存在问题:相近的数值之间可能有联系,但实际分类之间没有隐含关系

2. 生成模型(概率生成)

确定模型

  • 贝叶斯公式:根据先验概率求后验概率

P ( C 1 ∣ x ) = P ( C 1 ) P ( x ∣ C 1 ) P ( C 1 ) P ( x ∣ C 1 ) + P ( C 2 ) P ( x ∣ C 2 ) P(C_1|x) = \frac{P(C_1)P(x|C_1)}{P(C_1)P(x|C_1) + P(C_2)P(x|C_2)} P(C1x)=P(C1)P(xC1)+P(C2)P(xC2)P(C1)P(xC1)

  • 对于二分类问题,只需判断是否属于分类 1,分类 2 即确定

  • 目标是找到拟合分布 P ( x ∣ C 1 ) P(x|C_1) P(xC1) P ( x ∣ C 2 ) P(x|C_2) P(xC2)

评估函数

  • 高斯分布:寻找 μ \mu μ Σ \Sigma Σ,使得高斯分布与 x 在 C 中的分布最大匹配
  • 分别寻找两个分布 C 1 C1 C1 C 2 C2 C2

找到最优的函数

  • 极大似然估计法
  • 通过代入所有的 x x x 到高斯分布,计算概率的连乘结果,最大化此结果,确定最优的 μ \mu μ Σ \Sigma Σ

如何实现分类

  • 找到高斯分布后,代入问题模型中,确定后验概率函数,输入 x x x 就能得到分类结果。

优化

  • 共用协方差 Σ \Sigma Σ:减少参数,防止过拟合。
  • 这时找到的函数将会是一条直线。

3. 判别模型(逻辑回归)

说明

  • 当共用协方差时,可以得到如下公式:

P ( C 1 ∣ x ) = σ ( w x + b ) P(C_1|x) = \sigma(wx + b) P(C1x)=σ(wx+b)

  • 其中, σ ( x ) = 1 1 + e − x \sigma(x) = \frac{1}{1 + e^{-x}} σ(x)=1+ex1 为 Sigmoid 函数。

  • 直接训练 w w w b b b,无需假设高斯分布。

做法

  • 确定模型:

    f ( x ) = P ( C 1 ∣ x ) = σ ( w x + b ) f(x) = P(C_1|x) = \sigma(wx + b) f(x)=P(C1x)=σ(wx+b)

    目标是直接找 w w w b b b 来确定后验概率。

  • 评估函数:
    L ( w , b ) = f w , b ( x 1 ) f w , b ( x 2 ) ( 1 − f w , b ( x 3 ) ) . . . L(w,b)=f_{w,b}(x^1)f_{w,b}(x^2)(1-f_{w,b}(x^3))... L(w,b)=fw,b(x1)fw,b(x2)(1fw,b(x3))...
    此时目标是最大化评估函数。

    引入交叉熵(Cross-Entropy):
    H ( p , q ) = − ∑ p ( x ) ln ⁡ ( q ( x ) ) H(p,q) = - \sum p(x) \ln(q(x)) H(p,q)=p(x)ln(q(x))

    • 交叉熵越小,表示两个分布越接近。

    进一步损失函数:

    − ln ⁡ L ( w , b ) = − ∑ [ y n ln ⁡ f w , b ( x n ) + ( 1 − y n ) ln ⁡ ( 1 − f w , b ( x n ) ) ] -\ln L(w,b) = - \sum \left[ y^n \ln f_{w,b}(x^n) + (1 - y^n) \ln(1 - f_{w,b}(x^n)) \right] lnL(w,b)=[ynlnfw,b(xn)+(1yn)ln(1fw,b(xn))]

    • 目标是最小化损失函数。
  • 寻找最优函数

    • 使用梯度下降法更新参数:

    w t + 1 = w t − η ∑ n [ − ( y n − f w , b ( x n ) ) x n ] w_{t+1} = w_t - \eta \sum_n \left[ -(y^n - f_{w,b}(x^n)) x^n \right] wt+1=wtηn[(ynfw,b(xn))xn]

与线性回归比较

  • 逻辑回归中引入了 Sigmoid 函数,输出值范围为 0 到 1。
  • 线性回归输出可能是任意实数。
  • 逻辑回归的损失函数是交叉熵,而线性回归使用平方误差。

与生成模型比较

  • 生成模型假设数据分布符合某个高斯分布。
  • 判别模型不做假设,直接学习分类边界(求 w w w b b b)。
  • 判别模型通常比生成模型表现好,但在数据不足的情况下,生成模型更为实用。

逻辑回归缺陷

  • 逻辑回归无法解决线性不可分问题,需要通过特征转换来处理,这通常是深度学习的核心。

为什么不用平方误差

  • 若用平方误差,损失函数为:

    L ( w , b ) = 1 2 ∑ ( y n − f w , b ( x n ) ) 2 L(w,b) = \frac{1}{2} \sum (y^n - f_{w,b}(x^n))^2 L(w,b)=21(ynfw,b(xn))2

    梯度为:

    d L d w = 2 ( y n − f w , b ( x n ) ) f w , b ( x n ) ( 1 − f w , b ( x n ) ) x n \frac{dL}{dw} = 2(y^n - f_{w,b}(x^n)) f_{w,b}(x^n) (1 - f_{w,b}(x^n)) x^n dwdL=2(ynfw,b(xn))fw,b(xn)(1fw,b(xn))xn

  • y n = 1 y^n = 1 yn=1 f ( x n ) = 1 f(x^n) = 1 f(xn)=1 时,梯度为 0(正常)。

  • y n = 1 y^n = 1 yn=1 f ( x n ) = 0 f(x^n) = 0 f(xn)=0 时,梯度也为 0(不正常,训练非常缓慢)。

  • 结论:使用平方误差损失函数,梯度会在边界附近为零,导致训练速度非常慢。交叉熵的损失函数更适合分类问题。


4. 多分类问题

  • 使用 逻辑回归 计算每个类别的概率值,然后通过 Softmax 函数选择最大概率的类别。
  • Softmax ( x i ) = e x i ∑ j e x j \text{Softmax}(x_i) = \frac{e^{x_i}}{\sum_j e^{x_j}} Softmax(xi)=jexjexi

相关文章:

【机器学习】分类

文章目录 1. 能否用回归解决分类问题2. 生成模型(概率生成)3. 判别模型(逻辑回归)4. 多分类问题 1. 能否用回归解决分类问题 二元分类 数据分布不规律,回归函数会尽量减少误差,导致不合理的偏移离分界较远…...

5.若依的角色权限控制

RBAC 基于角色的访问控制,通过角色来分配和管理用户的菜单权限。 修改课程管理的菜单到主类目下 新建角色并分配菜单 新建用户并分配角色 添加一个根菜单,父级为主类目...

Lumos学习王佩丰Excel第二十三讲:饼图美化与PPT图表

一、双坐标柱形图的补充知识 1、主次坐标设置 2、主次坐标柱形避让(通过增加两个系列,挤压使得两个柱形挨在一起) 增加两个系列 将一个系列设置成主坐标轴,另一个设成次坐标轴 调整系列位置 二、饼图美化 1、饼图美化常见设置 …...

安装winserver2008R2虚拟机步骤

一、服务器系统介绍 1.1什么是服务器? 服务器英文名称为“Server”,指的是网络环境下为客户机(Client)提供某种服务的专用计算机,服务器安装有网络操作系统(如Windows 2000 Server、Linux、Unix等)和各种服务器应用系统软件(如Web服务、电子…...

ACPI PM Timer

ACPI PM Timer 概述: ACPI PM Timer是一个非常简单的计时器,它以 3.579545 MHz 运行,在计数器溢出时生成系统控制中断(SCI)。它精度较低,建议使用其他定时器,如HPET或APIC定时器。 检测ACPI P…...

Linux 和设备树

“开放固件设备树”,简称 Devicetree (DT),是一种用于描述硬件的数据结构和语言。更具体地说,它是操作系统可读取的硬件描述,因此操作系统无需对机器的详细信息进行硬编码。 从结构上看,DT 是一棵树,或具有…...

Qt仿音乐播放器:QFileDialog添加本地文件

一、套路 QFileDialog fileDialog(this);// 创建对话框,并设置父元素;fileDialog.setWindowTitle("添加本地下载的音乐");//设置窗口标题//设置文件对话框的默认打开路径 QString projectPathQDir::currentPath();//获取当前目录 QDir dir(pr…...

Odoo 引用字段 fields.Reference:动态关系的选择器

在 Odoo 模型开发中,关系型字段是构建复杂应用的基础。 然而,传统的 m2o、o2m 和 m2m 字段需要在模型定义时就明确指定关系的目标模型,这在某些场景下会显得不够灵活。 为了解决这个问题,Odoo 提供了 fields.Reference 引用字段&a…...

Android笔试面试题AI答之Android基础(6)

Android入门请看《Android应用开发项目式教程》 文章目录 1.Android Studio版本与Gradle版本有什么关联?**1. Gradle 的作用****2. Android Studio 与 Gradle 的关系****3. 版本对应关系****4. 如何查看和修改版本****查看当前版本****修改版本** **5. 版本不兼容的…...

C# 中的记录类型简介 【代码之美系列】

🎀🎀🎀代码之美系列目录🎀🎀🎀 一、C# 命名规则规范 二、C# 代码约定规范 三、C# 参数类型约束 四、浅析 B/S 应用程序体系结构原则 五、浅析 C# Async 和 Await 六、浅析 ASP.NET Core SignalR 双工通信 …...

利用Java爬虫速卖通按关键字搜索AliExpress商品

在这个信息爆炸的时代,数据的价值日益凸显。对于电商领域的从业者来说,能够快速获取商品信息成为了一项重要的技能。速卖通(AliExpress)作为全球领先的跨境电商平台,拥有海量的商品数据。本文将介绍如何使用Java语言编…...

gitlab runner 实现 微信小程序自动化部署

微信小程序多人开发的情况下,开发人员都只能在本机上发布体验版,且需要到小程序管理后台自行切换到自己发布的版本,会出现体验版本覆盖的问题。给开发测试带来问题。 miniprogram-ci 的发布,使得开发人员可以通过命令行上传小程序…...

Playwright爬虫xpath获取技巧

示例一 <button class"MuiButtonBase-root MuiButton-root MuiLoadingButton-root MuiButton-contained MuiButton-containedPrimary MuiButton-sizeLarge MuiButton-containedSizeLarge MuiButton-colorPrimary MuiButton-fullWidth MuiButton-root MuiLoadingButton…...

总结TCP/IP四层模型

总结TCP/IP四层模型 阅读目录(Content) 一、TCP/IP参考模型概述 1.1、TCP/IP参考模型的层次结构二、TCP/IP四层功能概述 2.1、主机到网络层  2.2、网络互连层  2.3、传输层  2.3、应用层 三、TCP/IP报文格式 3.1、IP报文格式3.2、TCP数据段格式3.3、UDP数据段格式3.4、套…...

netcat和nmap的区别

Netcat 和 Nmap 是两种广泛使用的网络工具&#xff0c;但它们的功能和使用场景有所不同。下面是这两种工具的对比&#xff1a; Netcat&#xff08;nc&#xff09; 用途和功能: 网络连接: Netcat 是一个功能强大的网络工具&#xff0c;用于创建 TCP 或 UDP 连接。可以用来进行网…...

MinIO服务器文件复制(Windows环境Linux环境)

一、下载 Windows环境&#xff1a;https://dl.min.io/server/minio/release/windows-amd64/minio.exe Linux环境&#xff1a; > curl https://dl.min.io/client/mc/release/linux-amd64/mc \ --create-dirs \ -o $HOME/minio/mc > chmod x $HOME/minio/mc > expo…...

【机器学习】【朴素贝叶斯分类器】从理论到实践:朴素贝叶斯分类器在垃圾短信过滤中的应用

&#x1f31f; 关于我 &#x1f31f; 大家好呀&#xff01;&#x1f44b; 我是一名大三在读学生&#xff0c;目前对人工智能领域充满了浓厚的兴趣&#xff0c;尤其是机器学习、深度学习和自然语言处理这些酷炫的技术&#xff01;&#x1f916;&#x1f4bb; 平时我喜欢动手做实…...

无监督学习算法

K-均值聚类&#xff08;K-means clustering&#xff09;是一种常用的无监督学习算法&#xff0c;用于将数据集划分成 K 个不同的组或簇。该算法主要通过计算数据点之间的欧几里得距离来确定数据点之间的相似性&#xff0c;并根据相似性将数据点分配到不同的簇中&#xff0c;使得…...

【Compose multiplatform教程17】【组件】BoxWithConstraints组件

查看全部组件 https://blog.csdn.net/b275518834/article/details/144751353 BoxWithConstraints 功能说明&#xff1a;它是 Jetpack Compose 中的关键布局组件&#xff0c;能够精准捕捉自身所在容器的尺寸约束信息&#xff0c;通过获取最大宽度和最大高度这两个关键属性&…...

银河麒麟操作系统安装达梦数据库(超详细)

目录 引言1. 前期准备1.1 安装麒麟系统1.2 下载达梦数据库安装包&#xff08;DM8&#xff09;1.3 上传安装包到麒麟系统1.4 挂载安装包&#xff08;iso&#xff09;文件1.5 配置安装用户和组1.6 创建安装路径及修改权限1.7 设置临时安装目录 2. 安装达梦数据库&#xff08;DM8&…...

XCTF-web-easyupload

试了试php&#xff0c;php7&#xff0c;pht&#xff0c;phtml等&#xff0c;都没有用 尝试.user.ini 抓包修改将.user.ini修改为jpg图片 在上传一个123.jpg 用蚁剑连接&#xff0c;得到flag...

应用升级/灾备测试时使用guarantee 闪回点迅速回退

1.场景 应用要升级,当升级失败时,数据库回退到升级前. 要测试系统,测试完成后,数据库要回退到测试前。 相对于RMAN恢复需要很长时间&#xff0c; 数据库闪回只需要几分钟。 2.技术实现 数据库设置 2个db_recovery参数 创建guarantee闪回点&#xff0c;不需要开启数据库闪回。…...

k8s从入门到放弃之Ingress七层负载

k8s从入门到放弃之Ingress七层负载 在Kubernetes&#xff08;简称K8s&#xff09;中&#xff0c;Ingress是一个API对象&#xff0c;它允许你定义如何从集群外部访问集群内部的服务。Ingress可以提供负载均衡、SSL终结和基于名称的虚拟主机等功能。通过Ingress&#xff0c;你可…...

SCAU期末笔记 - 数据分析与数据挖掘题库解析

这门怎么题库答案不全啊日 来简单学一下子来 一、选择题&#xff08;可多选&#xff09; 将原始数据进行集成、变换、维度规约、数值规约是在以下哪个步骤的任务?(C) A. 频繁模式挖掘 B.分类和预测 C.数据预处理 D.数据流挖掘 A. 频繁模式挖掘&#xff1a;专注于发现数据中…...

UE5 学习系列(三)创建和移动物体

这篇博客是该系列的第三篇&#xff0c;是在之前两篇博客的基础上展开&#xff0c;主要介绍如何在操作界面中创建和拖动物体&#xff0c;这篇博客跟随的视频链接如下&#xff1a; B 站视频&#xff1a;s03-创建和移动物体 如果你不打算开之前的博客并且对UE5 比较熟的话按照以…...

系统设计 --- MongoDB亿级数据查询优化策略

系统设计 --- MongoDB亿级数据查询分表策略 背景Solution --- 分表 背景 使用audit log实现Audi Trail功能 Audit Trail范围: 六个月数据量: 每秒5-7条audi log&#xff0c;共计7千万 – 1亿条数据需要实现全文检索按照时间倒序因为license问题&#xff0c;不能使用ELK只能使用…...

2.Vue编写一个app

1.src中重要的组成 1.1main.ts // 引入createApp用于创建应用 import { createApp } from "vue"; // 引用App根组件 import App from ./App.vue;createApp(App).mount(#app)1.2 App.vue 其中要写三种标签 <template> <!--html--> </template>…...

DIY|Mac 搭建 ESP-IDF 开发环境及编译小智 AI

前一阵子在百度 AI 开发者大会上&#xff0c;看到基于小智 AI DIY 玩具的演示&#xff0c;感觉有点意思&#xff0c;想着自己也来试试。 如果只是想烧录现成的固件&#xff0c;乐鑫官方除了提供了 Windows 版本的 Flash 下载工具 之外&#xff0c;还提供了基于网页版的 ESP LA…...

Rust 异步编程

Rust 异步编程 引言 Rust 是一种系统编程语言,以其高性能、安全性以及零成本抽象而著称。在多核处理器成为主流的今天,异步编程成为了一种提高应用性能、优化资源利用的有效手段。本文将深入探讨 Rust 异步编程的核心概念、常用库以及最佳实践。 异步编程基础 什么是异步…...

USB Over IP专用硬件的5个特点

USB over IP技术通过将USB协议数据封装在标准TCP/IP网络数据包中&#xff0c;从根本上改变了USB连接。这允许客户端通过局域网或广域网远程访问和控制物理连接到服务器的USB设备&#xff08;如专用硬件设备&#xff09;&#xff0c;从而消除了直接物理连接的需要。USB over IP的…...