无监督学习(下)

news2024/11/29 22:36:12

1.高斯混合模型(GMM)

(1)简单概念

  高斯混合模型是一种概率模型,它假定实例是由多个参数未知的高斯分布的混合生成的。从单个高斯分布生成的所有实例都形成一个集群,通常看起来像一个椭圆。每个集群都可以由不同的椭圆形状,大小,密度和方向。高斯模型的均值代表集群的中心,方差代表方向

     这个模型假定一个数据集是从K个高斯分布的集合中产生,但是每个集合都有一个权重,代表产生一个实例到数据集的可能性或者贡献(我暂且这么理解,要知道更严格的说法可以取看原文),一个实例的位置x(i)服从某个高斯分布x^{(i)}\sim N(\mu ^{(j)},\Sigma^{(j)}).

(2)求解重点

       高斯混合模型的目的就是找到这K个类的均值,协方差,还有权重。它和KMeans的算法差不多,也是找K个中心点,然后不断的进行迭代,所用的算法叫做EM最大算法,也就是期望最大化。只不过EM算法使用的是软集群分配,不是硬集权分类,他会估算出每个实例属于其他集群的概率值,使用所有数据进行更新,因为其中包含了概率值。

    高斯混合模型和KMean一样,受到初始化影响。而且也需要知道K值。

(3)sklearn中的模型用法

sklearn中有一个GaussianMixture类,也就是高斯混合类,它需要指定成分n_components,相当于k值,在训练之后,可以得到三个值,weight_,means_,covariances_,也就是权重,均值和协方差。

比如我们有一个数据集,是由三个高斯模型生成,然后混合在一起。

gus = GuessianMixture(n_components=3, n_init=10)

gus.fit(X)

就会把三类的数据分开,求出他们的均值,协方差,权重

然后如果你想要根据模型预测某个值属于某个类,可以使用predict或者predict_proba,前一个返回硬决策的值,后一个返回概率值,这个概率值是一个数组,长度为k,代表它属于每一个类的概率。

关于它的用法可以查看官方文档。

(4)抽样

高斯混合模型是一个生成模型,当然也可以生成一些符合该模型的数据

gus.sample(100)

生成一百个数据

(5).密度计算

给定任意位置,可以计算该位置的密度,使用score_samples()实现,分数越高代表密度越高,只不过这个数值是取对数生成的,积分求指数就是面积。

2.高斯混合模型的应用

异常检测,比如欺诈检查,异常值检测。

异常值的判断很简单,低密度的区域的任何实例都被看做异常。所有密度的阈值需要你自己去定义,比如某个产品的异常概率是百分之五,那么我们就可以根据实际经验设置低于这个值的密度,如果在后续发现这个值设定的不好,可以根据情况调整。

3.选择聚类数

对于KMeans可以通过惯性系数和轮廓系数来选择距离的数,但是对于高斯混合模型就不同。

一般是使用贝叶斯信息准则BIC,赤池 信息准则AIC

BIC = log(m)p-2log(L)

AIC=2p-2log(L)

m代表实例数。

p是模型学习的参数数量

L是模型的似然函数的最大值

他们都对具有更多需要学习的参数的模型进行惩罚,并奖励非常拟合数据的模型。他们常常选择的模型相同,但是如果不同,BIC选择模型要更简单,但是AIC要更加拟合数据。

这里突然想起一个面试题,你怎么看待似然函数和概率的?差不多就是这么一个意思吧,就是求解一个模型的惩罚函数,用的方法。

这个东西必须好好谈一下。给定一些参数\theta的统计模型,用概率一词描述未来的结果x的合理性,而用似然一词表示描述在知道结果x之后,一组特定的参数值\theta的合理性。

也就是概率密度函数f(x;\theta)是x的函数,\theta值被固定,而似然函数是\theta的函数,x被固定。

看了这么久,你可能会问,这个有什么关系吗?

显然,如果是最大似然函数,你对函数积分,就是对x积分,得到的值一定是1

如果你对概率密度函数积分,对\theta积分,你只会得到一个正数,不一定等于1。

如果你给一个数据集,你可能会使用最大似然估计来求解一个模型,然后使用最大似然估计求出\theta=某个值。但是如果存在一个先验概率,就要考虑最大化这个先验概率的最大似然估计,这个求解方式被称为最大后验估计。由于后验概率会约束参数值,则这个后验概率可以看作最大似然估计的正则化版本。

可以调用bic和aic方法查看贝叶斯信息和赤化信息。

2.贝叶斯高斯混合模型

BeyesianGaussianMixture它比上文讲到的高斯混合模型更灵活,它只需要指定最大的n_components然后分类。比如有三个类,我们要求这个模型分出10个类,它就会让其他七个类的权值归零。前面说过,高斯混合模型有三个值需要学习,权重值,均值,协方差,这里也是的,所以不存在的类的权值就归零了。

    这个训练过程是用的贝叶斯定律求解,用到了KL散度等知识。总之,它是高斯混合模型的升级版。

 3.其他聚类算法

(1).聚集聚类

它可以把多个类聚集起来、

(2).BIRCH

(3)均值聚类

(4).相似性传播

(5).谱聚类

4.异常值检测和新颖性检测

异常值检测和新颖性检测的区别在于,异常值检测的实例中含有异常值,而新颖性假设数据集没有异常。

使用的算法除了高斯混合模型,还要如下算法

(1).PCA

这是因为正常的实例重建与含有异常值的重建误差比较起来小得多。

(2).Fast-MCD(最小协方差决定)

它假定正常值是高斯分布,异常值不是高斯分布

(3).隔离森林

它构建一个随机森林,然后再每个节点上去掉一个特征,然后选择一个阈值来把数据集分为两个部分,数据集就慢慢分开了,最后所有的数据都分开了,但是异常值会距离其他值更远。而且,他们只需要更少的步骤被隔离开。

(4).局部离群因子(LOF)

它将给定实例周围的实例密度与其相邻的实例周围的密度进行比较,离群值通常比k个最近的邻居更加孤立。

(5).单例SVM

这个就需要给定一个纯洁的数据集,然后指分为一个类,那么最后分割平面就是原点和其他数据分开了。其实这个算法更加适合于新颖性检测。

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

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

相关文章

【C# 技术】 C# 常用排序方式——自定义数据排序

C# 常用排序方式——自定义数据排序 前言 在最近的项目中经常会对C#中的数据进行排序,对于基本数据类型,其排序方式比较简单,只需要调用内置算法即可实现,但对于自定义数据类型以及自定义排序规则的情况实现起来就比较麻烦&…

美团到店终端从标准化到数字化的演进之路

总第580篇 | 2023年第032篇 本文整理自美团技术沙龙第76期《大前端研发协同效能提升与实践》。前端团队在产研多角色协同形式上存在不同阶段,而大前端多技术栈在各阶段都有其独特的实践,同时又有类似的演进路线。本文从到店终端团队移动端和前端技术栈持…

最详细GIT学习笔记

1. Git简介 1.1. Git介绍 Git(读音为/gɪt/) 是一个开源的分布式版本控制系统,可以有效、高速地处理从很小到非常大的项目版本管理。 Git 是 Linus Torvalds 为了帮助管理 Linux 内核开发而开发的一个开放源码的版本控制软件。 1.2. 主流的版本控制器 Git(分布式…

金融帝国实验室(Capitalism Lab)官方正版游戏『2024新年特卖优惠』

「金融帝国实验室」(Capitalism Lab)Enlight 官方正版游戏「2024新年特卖」 ■优惠时限:2024.01.01~01.31 ■游戏开发商:Enlight Software Ltd. 请您认准以下官方正版游戏购买链接:支持“支付宝&am…

【数据结构-单链表】(C语言版本)

今天分享的是数据结构有关单链表的操作和实践(图解法,图变化更利于理解) 记录宗旨📝: 眼(脑)过千遍,不如手过一遍。 我们都知道单链表是一种常见的链表数据结构,由一系列…

【Delphi】IOS上架踩坑记 - 2024年第一天

目录 一、前言: 二、IOS程序上架网址 三、踩坑记 1. 关于版本中的 CFBundleIdentifier 参数(Transporter 提示) 2. IOS APP 程序图标要求(Transporter 提示) 3. 关于版本中的 CFBundleShortVersionString 参数&a…

小波理论与应用:理解小波

1 简介 来自源的信号通常处于时域。例如正弦信号、生物医学信号等。任何时域信号都可以使用数学变换进行处理或变换到频域(谱域)。傅里叶变换是一种流行或著名的变换,它将时域信号转换为频域信号,而不失一般性。 在绘制时域信号…

智能客服系统要素分析:提升客户满意度与工作效率的关键要素

智能客服系统是企业建立完善服务框架的重要工具。市面上存在着形态各异的各种客服系统,如何选择一款最适合自己企业的产品是很多采购人员想知道的问题。事实上,不同的智能客服系统之间的主要功能并未存在太大的区别,它们往往会在一些亮点功能…

m系列mac配置Tomcat

配置上走了些弯路 翻了不少博客各有各的说法,此说明是本人亲自尝试,电脑是m芯片mbp如果不是mac系统,勿跟风尝试 一、下载和安装Tomcat 1.下载 首先,打开Tomcat官网:https://tomcat.apache.org,选择Downlo…

oracle 9i10g编程艺术-读书笔记1

根据书中提供的下载代码链接地址,从github上找到源代码下载地址。 https://github.com/apress下载好代码后,开始一段新的旅行。 设置 SQL*Plus 的 AUTOTRACE 设置 SQL*Plus 的 AUTOTRACE AUTOTRACE 是 SQL*Plus 中一个工具,可以显示所执行…

计算机网络物理层 习题答案及解析

2-1 下列选项中,不属于物理层接口规范定义范畴的是( D )。 A. 引脚功能 B. 接口形状 C. 信号电平 D. 传输媒体 【答案】D 【解析】 2-2 某网络在物理层规定,信号的电平范围为- 15V~15V , 电线长…

tp5+workman(GatewayWorker) 安装及使用

一、安装thinkphp5 1、宝塔删除php禁用函数putenv、pcntl_signal_dispatch、pcntl_wai、pcntl_signal、pcntl_alarm、pcntl_fork,执行安装命令。 composer create-project topthink/think5.0.* tp5 --prefer-dist 2、配置好站点之后,浏览器打开访问成…

VSCode使用Remote SSH远程连接Windows 7

结论 VSCode Server不能启动,无法建立连接。 原因 .vscode-server 目录中的 node.exe 无法运行。 原因是Node.js仅在Windows 8.1、Windows Server 2012 R2或更高版本上受支持。 由于vscode基于node.js v14,不支持Windows 7操作系统。 另&#xff…

为即将到来的量子攻击做好准备的 4 个步骤

当谈到网络和技术领域时,一场风暴正在酝酿——这场风暴有可能摧毁我们数字安全的根本结构。这场风暴被称为 Q-Day,是即将到来的量子计算时代的简写,届时量子计算机的功能将使最复杂的加密算法变得过时。 这场量子革命正以惊人的速度到来&am…

LVM和磁盘配额

一:LVM概述: LVM 是 Logical Volume Manager 的简称,译为中文就是逻辑卷管理。 能够在保持现有数据不变的情况下,动态调整磁盘容量,从而提高磁盘管理的灵活性 /boot 分区用于存放引导文件,不能基于LVM创建…

Docker之镜像上传和下载

目录 1.镜像上传 1) 先上百度搜索阿里云 点击以下图片网站 2) 进行登录/注册 3) 使用支付宝...登录 4) 登录后会跳转到首页->点击控制台 5) 点击左上角的三横杠 6) 搜索容器镜像关键词->点击箭头所指 ​ 编辑 7) 进入之后点击实例列表 8) 点击个人实例进入我们的一个…

异步处理方案

目录 1.通过promise的链式调用将异步方法变为同步执行 2.使用async及await 3.回调函数方式 4.三种方式对比 5.async及await使用的注意点 1.通过promise的链式调用将异步方法变为同步执行 function get1(){return new Promise((resolve,reject) >{console.log(执行get1接…

【Java 数组解析:探索数组的奇妙世界】

数组的引入 我们先通过一段简单的代码引入数组的概念。 import java.util.Scanner; public class TestArray01{public static void main(String[] args){//功能:键盘录入十个学生的成绩,求和,求平均数://定义一个求和的变量&…

ICCV 2023 风格迁移方向 5 篇论文

1、StyleDiffusion: Controllable Disentangled Style Transfer via Diffusion Models 内容和风格(Content and style disentanglement,C-S)解耦是风格迁移的一个基本问题和关键挑战。基于显式定义(例如Gram矩阵)或隐式…

[BUG]Datax写入数据到psql报不能序列化特殊字符

1.问题描述 Datax从mongodb写入数据到psql报错如下 org.postgresql.util.PSQLException: ERROR: invalid bytesequence for encoding "UTF8": 0x002.原因分析 此为psql独有的错误,不能对特殊字符’/u0000’,进行序列化,需要将此特殊字符替…