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

1. 支持向量机

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

先介绍几个概念:

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

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

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

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

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

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

核函数

一些常用的核函数如下:

  • 线性核(linear):直接返回输入向量的点积,速度最快。因为实际并没有升维,适合于本身特征维度较高、样本数量很大的场景。
  • 多项式核(ploynomial):k(p,q)=(p⋅q+1)×d,其中超参数d是提升到的维度。
  • 高斯径向基核(Gaussian radial basis function):k(p,q)=exp(−γ||p−q||2),应用最广泛的SVM核,γ参数值越大越容易拟合。
  • Sigmoid核:k(p,q)=tanh(a×p⋅q+r),其中tanh(x)=ex−e−xex+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−∞
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⋂B)。意为:事件A、B同时发生的概率为多少。

  • 事件之间并的概率:P(A⋃B),意为:事件A或B至少一个事件发生的概率。

  • 加法原理:P(A⋃B)=P(A)+P(B)−P(A⋂B)

  • 乘法原理:P(A⋂B)=P(B)⋅P(A|B)=P(A)⋅P(B|A)

  • 两事件独立的充分必要条件:P(A⋂B)=P(A)⋅P(B),即事件B发生对事件A是否没有任何影响,即P(A|B)=P(A),反之亦然。

  • 贝叶斯定理:P(A|B)=P(A)P(B|A)P(B),其中:

    • P(A|B):后验概率,是指在得到“结果”的信息后重新修正的概率,是“执果寻因”问题中的"果"。例如,如果我们从红色盒子和蓝色盒子中随机抽取一个水果,发现是苹果,那么这个苹果来自蓝色盒子的概率就是一个后验概率。
    • P(A):先验概率,是指根据以往经验和分析得到的概率,如全概率公式。它是在实验或采样前就可以得到的概率。例如,我们知道骰子每个面出现的概率都是1/6,这就是一个先验概率。
    • P(B|A):似然度,是用来度量模型和数据之间的相似度的一个函数。它是给定模型参数下,观察到数据的概率。例如,如果我们假设硬币朝上的概率是p,那么抛5次看到3次朝上的似然度就是L§=C(5,3)∗p3∗(1−p)2。
    • P(B):标准化常量,是贝叶斯公式中的一个分母,用来保证后验概率的和为1。它等于全概率公式的结果,即所有可能的原因导致结果的概率之和。

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

有两个袋子:

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

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

根据问题定义:

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

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

  • 先验概率:取到a袋的概率,P(A)=12
  • 似然度:在a袋中取红球的概率P(B|A)=44+3+3=25
  • 标准化常量:即取红球的概率,取到红球的=取a袋中的红球的概率+取b袋中的红球的概率,P(B)=12×410+12×220=14
  • 后验概率(最后的答案):P(A|B)=P(A)P(B|A)P(B)=(1/2)×(2/5)1/4=45

贝叶斯分类原理

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

P(y|x1,x2…xn)=P(y)P(x1,x2,…xn|y)P(x1,x2,…xn)

x1,x2,…xn是数据的n维特征,y是预测标签。

  1. 预测:在给定特征情况下,使用贝叶斯公式计算每个标签的后验概率。最后获得最高概率的标签便是预测标签。此外,不仅是最可能的标签,也能给出其他标签的概率。

  2. 训练:对于训练来说关注的是贝叶斯公式中右侧的先验概率和似然度。

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

P(x1,x2,…xn)=P(x1)×P(x2)×…×P(xn)

似然函数为:

P(x1,x2,…xn|y)=P(x1|y)×P(x2|y)×…×P(xn|y)

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

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

P(xi|y)=12πσy2exp⁡(−(xi−μy)22σy2)

其中μy、σ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(xi|y)=P(i|y)xi+(1−P(i|y))(1−xi)

其中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 ?

由于新岗位的生产效率,要优于被取代岗位的生产效率,所以实际上整个社会的生产效率是提升的。

但是具体到个人,只能说是:

“最先掌握AI的人,将会比较晚掌握AI的人有竞争优势”。

这句话,放在计算机、互联网、移动互联网的开局时期,都是一样的道理。

我在一线互联网企业工作十余年里,指导过不少同行后辈。帮助很多人得到了学习和成长。

我意识到有很多经验和知识值得分享给大家,也可以通过我们的能力和经验解答大家在人工智能学习中的很多困惑,所以在工作繁忙的情况下还是坚持各种整理和分享。但苦于知识传播途径有限,很多互联网行业朋友无法获得正确的资料得到学习提升,故此将并将重要的AI大模型资料包括AI大模型入门学习思维导图、精品AI大模型学习书籍手册、视频教程、实战学习等录播视频免费分享出来。

😝有需要的小伙伴,可以点击下方链接免费领取或者V扫描下方二维码免费领取🆓

在这里插入图片描述

在这里插入图片描述

第一阶段(10天):初阶应用

该阶段让大家对大模型 AI有一个最前沿的认识,对大模型 AI 的理解超过 95% 的人,可以在相关讨论时发表高级、不跟风、又接地气的见解,别人只会和 AI 聊天,而你能调教 AI,并能用代码将大模型和业务衔接。

  • 大模型 AI 能干什么?
  • 大模型是怎样获得「智能」的?
  • 用好 AI 的核心心法
  • 大模型应用业务架构
  • 大模型应用技术架构
  • 代码示例:向 GPT-3.5 灌入新知识
  • 提示工程的意义和核心思想
  • Prompt 典型构成
  • 指令调优方法论
  • 思维链和思维树
  • Prompt 攻击和防范

第二阶段(30天):高阶应用

该阶段我们正式进入大模型 AI 进阶实战学习,学会构造私有知识库,扩展 AI 的能力。快速开发一个完整的基于 agent 对话机器人。掌握功能最强的大模型开发框架,抓住最新的技术进展,适合 Python 和 JavaScript 程序员。

  • 为什么要做 RAG
  • 搭建一个简单的 ChatPDF
  • 检索的基础概念
  • 什么是向量表示(Embeddings)
  • 向量数据库与向量检索
  • 基于向量检索的 RAG
  • 搭建 RAG 系统的扩展知识
  • 混合检索与 RAG-Fusion 简介
  • 向量模型本地部署

第三阶段(30天):模型训练

恭喜你,如果学到这里,你基本可以找到一份大模型 AI相关的工作,自己也能训练 GPT 了!通过微调,训练自己的垂直大模型,能独立训练开源多模态大模型,掌握更多技术方案。

到此为止,大概2个月的时间。你已经成为了一名“AI小子”。那么你还想往下探索吗?

  • 为什么要做 RAG
  • 什么是模型
  • 什么是模型训练
  • 求解器 & 损失函数简介
  • 小实验2:手写一个简单的神经网络并训练它
  • 什么是训练/预训练/微调/轻量化微调
  • Transformer结构简介
  • 轻量化微调
  • 实验数据集的构建

第四阶段(20天):商业闭环

对全球大模型从性能、吞吐量、成本等方面有一定的认知,可以在云端和本地等多种环境下部署大模型,找到适合自己的项目/创业方向,做一名被 AI 武装的产品经理。

  • 硬件选型
  • 带你了解全球大模型
  • 使用国产大模型服务
  • 搭建 OpenAI 代理
  • 热身:基于阿里云 PAI 部署 Stable Diffusion
  • 在本地计算机运行大模型
  • 大模型的私有化部署
  • 基于 vLLM 部署大模型
  • 案例:如何优雅地在阿里云私有部署开源大模型
  • 部署一套开源 LLM 项目
  • 内容安全
  • 互联网信息服务算法备案

学习是一个过程,只要学习就会有挑战。天道酬勤,你越努力,就会成为越优秀的自己。

如果你能在15天内完成所有的任务,那你堪称天才。然而,如果你能完成 60-70% 的内容,你就已经开始具备成为一名大模型 AI 的正确特征了。

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

😝有需要的小伙伴,可以Vx扫描下方二维码免费领取==🆓

在这里插入图片描述

  • 24
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值