有监督学习——支持向量机、朴素贝叶斯分类

news2024/11/26 12:00:58

1. 支持向量机

支持向量机(Support Vector Machine, SVM)最初被用来解决线性问题,加入核函数后能够解决非线性问题。主要优点是能适应小样本数量 高维度特征的数据集,甚至是特征维度数高于训练样本数的情况。

先介绍几个概念:

  • 最优超平面Hyperplane,SVM通过学习数据空间中的超平面达到二值分类。在预测中,在超平面一侧被认为是一个类型的数据,另一侧被认为是另一种类型数据。

超平面在一维空间中是一个点;在二维中是一条线;三维中是一个平面。在更高维度只能描述为“超平面”。普通线性可分问题中,符合分类要求的超平面会有无穷多个。

  • 软间隔Soft Margin,是为了解决因噪声数据导致的过拟合,允许计算超平面时在训练集上存在错误数据。

有时,在当下维度,无论如何都找不到合适的超平面分割两类数据,这就是所谓的非线性问题。但是,任何有限维度的非线性问题在更高维度的空间里总可以变换成线性可分问题

SVM可以拉格朗日乘子法(Lagrange Multiplier)实现对超平面求解问题的升维。通过拉格朗日乘子法将求超平面参数的目标转换为用高维中数据点向量两两点积(dot-product)值求解二次规划问题,SVM无须将所有训练数据映射到高维空间,而只需要知道这些数据在高维空间里的点积。

  • 核函数Kernel Function,输入为两个低维空间向量,输出高维空间点积的函数。SVM选择核函数既可以选择一些通用核函数,也可以自定义。

核函数

一些常用的核函数如下:

  • 线性核(linear):直接返回输入向量的点积,速度最快。因为实际并没有升维,适合于本身特征维度较高、样本数量很大的场景。
  • 多项式核(ploynomial):\(k(p,q)=(p \cdot q+1)\times d\),其中超参数\(d\)是提升到的维度。
  • 高斯径向基核(Gaussian radial basis function):\(k(p,q)=exp(-\gamma||p-q||^2)\),应用最广泛的SVM核,\(\gamma\)参数值越大越容易拟合。
  • Sigmoid核:\(k(p,q)=tanh(a\times p\cdot q + r)\),其中\(tanh(x)=\frac{ex-e{-x}}{ex+e{-x}}\)也是一种非线性核,有两个超参数\(a\)、\(r\)可以调整。

scikit-learn中的SVM

在sklearn.svm中提供了三种分类/回归封装类。

  • SVC/SVR:最普通的SVM分类器/回归器,可通过kernel参数设置使用的核函数,使用C参数配置松弛因子。

  • NuSVC/NuSVR:带有nu参数的分类器/回归器,nu参数的作用与C参数类似,都是用来配置模型对训练数据的拟合程度的。

  • LinearSVC/LinearSVR:使用liblinear库的线性核函数分类器/回归器,其在模型中加入了线性回归惩罚参数。

    以SVC类为例:

from sklearn import svm # 引入SVM包
X = [[0, 0], [2, 2]]    # 训练数据
y = [1, 2]
clf = svm.SVC(kernel='rbf') # 初始化使用径向基核分类器
clf.fit(X, y)   # 训练
t = [[2, 1], [0, 1]]    # 测试集
clf.predict(t)
# array([2, 1])

clf.decision_function(t)
# array([ 0.52444566, -0.52444566])

训练和预测方法与之前的模型差别较小,注意decision_function()函数,他返回的是输入的数据集与模型超平面之间的距离,正负关系表示超平面的哪一测,另外,距离绝对值越大则分类的可靠性越高。

名称解释SVC/SCRNuSVC/NuSVRLinearSVC/LinearSVR
C松弛因子,取值\(0 - \infty\)
kernel取值"linear" “poly” “rbf” "sigmoid"等
gamma“ploy” “rbf” “sigmoid” 三种核的超参数
tolSMO算法中的停止阈值
nu取值0~1,控制对训练数据的拟合程度
penalty线性模型惩罚项,“l1"或"l2”

2. 朴素贝叶斯分类

朴素贝叶斯(Naive Bayes)是一种非常简单的分类算法。优点在于可以对预测标签给出理论上完美的可能性估计,但要求数据多维特征之间相互独立。

基础概率

  • 概率值常用\(P\)表示,古典概率取值范围为[0,1],e.g.事件A一定不会发生,则有概率\(P(A)=0\)
  • 条件概率:用\(P(A|B)\)表达,意为:若发生B,发生A的概率为多少。
  • 联合概率:表示两件事同时发生的概率,表达式包括:\(P(AB)\)、\(P(A,B)\)、\(P(A\bigcap B)\)。意为:事件A、B同时发生的概率为多少。
  • 事件之间并的概率:\(P(A\bigcup B)\),意为:事件A或B至少一个事件发生的概率。
  • 加法原理:\(P(A\bigcup B)=P(A)+P(B)-P(A\bigcap B)\)
  • 乘法原理:\(P(A\bigcap B)=P(B)\cdot P(A|B)=P(A)\cdot P(B|A)\)
  • 两事件独立的充分必要条件:\(P(A\bigcap B)=P(A)\cdot P(B)\),即事件B发生对事件A是否没有任何影响,即\(P(A|B)=P(A)\),反之亦然。
  • 贝叶斯定理:\(P(A|B)=\frac{P(A)P(B|A)}{P(B)}\),其中:
    • \(P(A|B)\):后验概率,是指在得到“结果”的信息后重新修正的概率,是“执果寻因”问题中的"果"。例如,如果我们从红色盒子和蓝色盒子中随机抽取一个水果,发现是苹果,那么这个苹果来自蓝色盒子的概率就是一个后验概率。
    • \(P(A)\):先验概率,是指根据以往经验和分析得到的概率,如全概率公式。它是在实验或采样前就可以得到的概率。例如,我们知道骰子每个面出现的概率都是1/6,这就是一个先验概率。
    • \(P(B|A)\):似然度,是用来度量模型和数据之间的相似度的一个函数。它是给定模型参数下,观察到数据的概率。例如,如果我们假设硬币朝上的概率是p,那么抛5次看到3次朝上的似然度就是\(L§ = C(5,3) * p^3 * (1-p)^2\)。
    • \(P(B)\):标准化常量,是贝叶斯公式中的一个分母,用来保证后验概率的和为1。它等于全概率公式的结果,即所有可能的原因导致结果的概率之和。

举例讲解下贝叶斯定理的使用:

有两个袋子:

  • a袋:4个红球,3个绿球,3个黄球
  • b袋:2个红球,7个绿球,11个黄球

任取一袋,再从中取出一颗巧克力发现其为红色,那么它来自a的概率是多少?

根据问题定义:

  • 事件A:取到a袋
  • 事件B:取到红球

计算贝叶斯定理中的各项:

  • 先验概率:取到a袋的概率,\(P(A)=\frac{1}{2}\)
  • 似然度:在a袋中取红球的概率\(P(B|A)=\frac{4}{4+3+3}=\frac{2}{5}\)
  • 标准化常量:即取红球的概率,取到红球的=取a袋中的红球的概率+取b袋中的红球的概率,\(P(B)=\frac{1}{2}\times \frac{4}{10}+\frac{1}{2}\times\frac{2}{20}=\frac{1}{4}\)
  • 后验概率(最后的答案):\(P(A|B)=\frac{P(A)P(B|A)}{P(B)}=\frac{(1/2)\times(2/5)}{1/4}=\frac{4}{5}\)

贝叶斯分类原理

在有监督学习中,朴素贝叶斯定义公式\(P(A|B)=\frac{P(A)P(B|A)}{P(B)}\)中的事件\(A\)看成被分类标签,事件\(B\)看成数据特征。通常数据特征是\(n\)维的,因此\(P(B)\)演变为\(n\)个特征的联合概率,因此在机器学习中,贝叶斯公式为:

\[P(y|x_1,x_2…x_n)=\frac{P(y)P(x_1,x_2,…x_n|y)}{P(x_1,x_2,…x_n)} \]

\(x_1,x_2,…x_n\)是数据的\(n\)维特征,\(y\)是预测标签。

  1. 预测:在给定特征情况下,使用贝叶斯公式计算每个标签的后验概率。最后获得最高概率的标签便是预测标签。此外,不仅是最可能的标签,也能给出其他标签的概率。
  2. 训练:对于训练来说关注的是贝叶斯公式中右侧的先验概率和似然度。
    • 先验概率:可由训练者根据经验直接给出,也可自动计算:统计训练数据中每个标签的出现次数,除以训练总数就可直接得到每个标签的先验概率\(P(y)\)。
    • 似然度:假定\(n\)维特征的条件概率符合某种联合分布,根据训练样本估计该分布的参数。比如对于高斯分布来说,学习参数有期望值和方差。
  3. 独立假设:朴素贝叶斯假设所有\(n\)维特征之间是相互独立的(所以叫naive)。这简化了计算难度,事件独立性的充分必要条件有:

\[P(x_1,x_2,…x_n)=P(x_1)\times P(x_2)\times…\times P(x_n) \]

似然函数为:

\[P(x_1,x_2,…x_n|y)=P(x_1|y)\times P(x_2|y)\times…\times P(x_n|y) \]

高斯朴素贝叶斯(Gaussian Naive Bayes)

高斯朴素贝叶斯使用的高斯分布就是常说的正态分布,假定所有特征条件分布符合:

\[P(x_i|y) = \frac{1}{\sqrt{2\pi\sigma_y^2}}\exp\left(-\frac{(x_i - \mu_y)2}{2\sigma_y2}\right) \]

其中\(\mu_y\)、\(\sigma_y\)被学习的模型参数特征期望值和方差。

from sklearn import datasets    # scikit-learn资料数据库
iris = datasets.load_iris()

from sklearn.naive_bayes import GaussianNB  # 引入高斯朴素贝叶斯模型
gnb = GaussianNB()  # 初始化模型对象
gnb.fit(iris.data, iris.target) # 训练

gnb.class_prior_    # 查看模型先验概率
# array([0.33333333, 0.33333333, 0.33333333]) # 有三种标签,先验概率各自为1/3

gnb.class_count_    # 查看训练集标签数量
# array([50., 50., 50.])    # 训练集每种标签有50个样本

# 由于数据有四维特征,且有三种标签,因此训练后产生3*4=12个高斯模型
gnb.theta_ # 查看高斯模型期望值
# array([[5.006, 3.428, 1.462, 0.246],
#        [5.936, 2.77 , 4.26 , 1.326],
#        [6.588, 2.974, 5.552, 2.026]])

gnb.var_  # 查看高斯模型方差
# array([[0.121764, 0.140816, 0.029556, 0.010884],
#        [0.261104, 0.0965  , 0.2164  , 0.038324],
#        [0.396256, 0.101924, 0.298496, 0.073924]])

多项式朴素贝叶斯(Multinomial Naive Bayes)

多项式朴素贝叶斯是用多项分布(Multinomial Distribution)作为似然度概率模型的分类器。衡量的是特征在不同标签之间的分布比例关系,因此特别适合文本分类场景(每个单词在不同类型文章中有一定的分布比例)。

多项式分布的概念:假设某件事件的结果有\(k\)种可能,在实验了\(n\)次之后,每种结果出现了若干。

多项式便是用于描述在试验了\(n\)次之后每种结果发生次数概率的分布。

e.g.普通的骰子有6面,掷骰子的结果便是\(k=6\)的多项式分布。

scikit-learn中的MultinomialNB实现了多项式朴素贝叶斯,使用与高斯朴素贝叶斯相似。

伯努利朴素贝叶斯(Bernoulli Naive Bayes)

伯努利贝叶斯使用伯努利分布(Bernoulli Distribution),所谓伯努利分布也称二值分布,用来描述一次实验只可能出现两种结果的事件概率分布。在学习该模型中要求数据中的所有特征都是布尔/二值类型。贝叶斯公式中第\(i\)个特征的似然度:

\[P(x_i|y)=P(i|y)x_i+(1-P(i|y))(1-x_i) \]

其中\(P(i|y)\)是第\(i\)个特征在所有该标签训练数据中出现的比。

from sklearn.naive_bayes import BernoulliNB
# 参数binarize是一个阈值,将非二值转化为二值
clf = BernoulliNB(binarize=1) # 设置特征阈值为1

X = [[0.3, 0.2], [1.3, 1.2], [1.1, 1.2]]
Y = [0, 1, 1]
clf.fit(X, Y)   # 训练
clf.predict([[0.99, 0.99]])   # 预测
# array([0])

由于阈值为1的缘故,特征[0.99, 0.99]被认为与[0.3, 0.2]一类,而不是与在数值上与[1.1, 1.2]为同一类标签。

最后的最后

感谢你们的阅读和喜欢,我收藏了很多技术干货,可以共享给喜欢我文章的朋友们,如果你肯花时间沉下心去学习,它们一定能帮到你。

因为这个行业不同于其他行业,知识体系实在是过于庞大,知识更新也非常快。作为一个普通人,无法全部学完,所以我们在提升技术的时候,首先需要明确一个目标,然后制定好完整的计划,同时找到好的学习方法,这样才能更快的提升自己。

这份完整版的大模型 AI 学习资料已经上传CSDN,朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费

一、全套AGI大模型学习路线

AI大模型时代的学习之旅:从基础到前沿,掌握人工智能的核心技能!

img

二、640套AI大模型报告合集

这套包含640份报告的合集,涵盖了AI大模型的理论研究、技术实现、行业应用等多个方面。无论您是科研人员、工程师,还是对AI大模型感兴趣的爱好者,这套报告合集都将为您提供宝贵的信息和启示。

img

三、AI大模型经典PDF籍

随着人工智能技术的飞速发展,AI大模型已经成为了当今科技领域的一大热点。这些大型预训练模型,如GPT-3、BERT、XLNet等,以其强大的语言理解和生成能力,正在改变我们对人工智能的认识。 那以下这些PDF籍就是非常不错的学习资源。

img

四、AI大模型商业化落地方案

img

五、面试资料

我们学习AI大模型必然是想找到高薪的工作,下面这些面试题都是总结当前最新、最热、最高频的面试题,并且每道题都有详细的答案,面试前刷完这套面试题资料,小小offer,不在话下。
在这里插入图片描述

这份完整版的大模型 AI 学习资料已经上传CSDN,朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费

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

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

相关文章

王思聪日本街头在被偶遇

王思聪日本街头再被偶遇,甜蜜约会日常成网友热议焦点近日,有网友在日本街头再次偶遇了“国民老公”王思聪,这次他不仅携带着一位美丽的女友,还展现出了两人之间亲密无间的互动,让不少网友感叹:这真的是每天…

【MySQL】E-R图-关系数据模型-3NF--精讲+练习(巨全面)

一.知识储备 E-R图 E-R图,即实体-关系图(Entity-Relationship Diagram),是数据库建模的一种工具,用于表示实体类型、属性以及它们之间的关系。 在E-R图中,实体用矩形表示,属性用椭圆表示&…

Java SSTI服务端模版注入漏洞原理与利用

文章目录 前言Velocity基础语法基础示例命令执行 靶场实践漏洞代码漏洞验证检测工具 FreeMarker基础示例漏洞示例CMS案例 Thymeleaf基础示例漏洞示例安全方案 总结 前言 SSTI(Server Side Template Injection)全称服务端模板注入漏洞,在 Jav…

Swift开发——元组

Swift语言的数据类型包括整型、浮点型、字符串、布尔型、数组、元组、集合和字典等,本文将详细介绍元组。 01、元组 严格意义上,元组不属于数据类型,而属于数据结构。元组将一些变量或常量或字面量组织成一个有序的序列,索引号从0开始,用圆括号“()”括起来,各个元素间用…

笔记100:使用 OSQP-Eigen 对 MPC 进行求解的方法与代码

1. 前言: 我们在对系统进行建模的时候,为了减少计算量,一般都将系统简化为线性的,系统如果有约束,也是将约束简化为线性的; 因此本篇博客只针对两种常见系统模型的 MPC 问题进行求解: 线性系统…

【ARM-Linux篇】智能家居语音模块配置

1. pin脚配置: 2. 命令词自定义基本信息: 3. 命令词自定控制详情: • 测试:串口模块可先通过串口助手验证每个指令的准确性, 然后运行wiringOP中的serialTest程序(需把/dev/ttyS2改成/dev/ttyS5) 然后语音接收到指令后(比如喊你好…

如何在 Postman 中进行 HTTPS 请求

https 请求是一种安全的网络通信方式,它使用 SSL/TLS 协议来加密数据和验证身份。在 postman 中发起 https 请求的步骤如下。 Postman 发起 https 请求 1、打开 postman 应用程序,点击左上角的“”号按钮,创建一个新的请求。 2、在请求标签…

MB-iSTFT-VITS 模型论文思路与实验分享:基于VITS架构优化的轻量级文本转语音模型

参考文献: [1] Kawamura M, Shirahata Y, Yamamoto R, et al. Lightweight and high-fidelity end-to-end text-to-speech with multi-band generation and inverse short-time fourier transform[C]//ICASSP 2023-2023 IEEE International Conference on Acoustics…

万能破题方法包(3)暴力破解法

一、前言 暴力破解法是指通过尝试所有可能的密码组合来破解密码 1.1、概念 暴力破解法是一种通过尝试所有可能的密码组合来破解密码的方法。它基于暴力的方式,不依赖于任何密码漏洞或特殊技巧,而是通过穷举所有可能性来找到正确的密码。 1.2、解决步骤 …

华为数通题库HCIP-821——最新最全(带答案解析)

单选1、下面是一台路由器的输出信息,关于这段信息描述正确的是 A目的网段1.1.1.0/24所携带的团体属性值是no—export表明该路由条目不能通告给任何BGP邻居 B目的网段5.1.1.0/24所携带的团体属性值是no—advertise表明该路由条目不能被通告给任何其他的BGP对等体 C…

【秋招突围】2024届秋招笔试-小红书笔试题-第一套-三语言题解(Java/Cpp/Python)

🍭 大家好这里是清隆学长 ,一枚热爱算法的程序员 ✨ 本系计划跟新各公司春秋招的笔试题 💻 ACM银牌🥈| 多次AK大厂笔试 | 编程一对一辅导 👏 感谢大家的订阅➕ 和 喜欢💗 📧 清隆这边…

若依Ruoyi-vue和element admin的区别,该如何选择。

提到中后台的前端框架,每个人都能列举出很多,这其中提及率比较高的就是Ruoyi和element admin两款,很多小伙伴分不清二者,本文为大家详细讲解一下。 一、若依Ruoyi-vue是什么? 若依Ruoyi-Vue是一款基于 Vue.js 开发的…

英伟达开源3400亿参数巨兽,98%合成数据训练出最强开源通用模型!性能媲美GPT-4o

英伟达刚刚再次证明了其在AI创新领域的领导地位。 它全新发布的Nemotron-4 340B,是一系列具有开创意义的开源模型,有望彻底改变训练LLM的合成数据生成方式! 这一突破性进展标志着AI行业的一个重要里程碑—— 各行各业无需依赖昂贵的真实世界数…

挑战5分钟内基于Springboot+SpringMVC+Mybatis-plus快速构建web后端三层架构

目标 在清晨的代码编辑器上,一场新的挑战即将开始。程序员们肃立于安静的办公室,眼神专注地盯着屏幕,等待着编译器的一声提示。 随着编译器输出的激动人心的"start!"的提示,战斗的序幕拉开了。Bug如潮水般涌来&#x…

Golang——gRPC gateway网关

前言 etcd3 API全面升级为gRPC后,同时要提供REST API服务,维护两个版本的服务显然不大合理,所以gRPC-gateway诞生了。通过protobuf的自定义option实现了一个网关。服务端同时开启gRPC和HTTP服务,HTTP服务接收客户端请求后转换为gr…

消息群发工具制作的过程和需要用到的源代码!

在信息化快速发展的今天,消息群发工具因其高效、便捷的特点,在各个领域得到了广泛的应用,无论是企业营销、社交互动,还是日常通知,消息群发工具都发挥着不可替代的作用。 本文将详细介绍消息群发工具的制作过程&#…

[RL9] Rocky Linux 9.4 搭载 PG 16.1

副标题:Rocky Linux 9.4 升级实录,及 PG 16 相关内容 背景 Rocky Linux 9.4 (以下简称 RL) 于5月9日正式发布,本文记录了从 RL 9.3 升级到 9.4 的过程,以及升级前后的一些变化。 之前介绍过 RL 9 的相关内容,请戳&…

【C++】STL中stack、queue、deque的使用

前言:在前面我们学习了List的模拟实现与使用,今天我们进一步的来学习stack、queue、deque的使用方法,然后为后面的模拟实现做一下铺垫。 💖 博主CSDN主页:卫卫卫的个人主页 💞 👉 专栏分类:高质量&#xff…

liunx常见指令

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 目录 前言 二、安装环境 1.租借服务器 2.下载安装 XShell 3.使用xshll登录服务器 三、Linux基础命令 一、文件和命令 ​编辑1、cd 命令 2、pwd 命令 3、ls 命令 4、cp 命令 …

【three.js案例一】智慧星球

直接附上源码: import * as THREE from three; import { OrbitControls } from three/addons/controls/OrbitControls.js;//场景 const scene = new THREE.Scene();const geometry = new THREE.SphereGeometry(50,32,16);console.log(.postion,geometry.attributes.position)…