无监督学习(下)

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

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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

C# 给方形图片切圆角

写在前面 在有些场景中&#xff0c;给图片加上圆角处理会让视觉效果更美观。 代码实现 /// <summary>/// 将图片处理为圆角/// </summary>/// <param name"image"></param>/// <returns></returns>private Image DrawTranspar…

C语言-环境搭建

文章目录 内容Notepad的安装gcc编译工具的配置 编写软件的安装&#xff1a;软件传送门&#xff1a;Notepad软件选择一个合适的路径&#xff0c;一键傻瓜式安装即可 编译工具gcc在windows环境下的配置&#xff1a;解压gcc编辑工具包解压出来的mingw64文件放到一个合适的磁盘路径…

探索工业智能检测,基于轻量级YOLOv8开发构建焊接缺陷检测识别系统

焊接缺陷相关的开发实践在前面的博文中已经有所涉及了&#xff0c;感兴趣的话可以自行移步阅读即可&#xff1a;《探索工业智能检测&#xff0c;基于轻量级YOLOv5s开发构建焊接缺陷检测识别系统》 将智能模型应用和工业等领域结合起来是有不错市场前景的&#xff0c;比如&…

Java中实现百度浏览器搜索功能(windows/linux)

要在Java中实现百度浏览器搜索功能&#xff0c;你可以使用Selenium WebDriver。Selenium是一个用于自动化浏览器的工具&#xff0c;WebDriver是Selenium的一个子项目&#xff0c;它提供了一套API&#xff0c;可以直接与浏览器交互。 依赖: <dependencies><dependency…

WorkPlus:领先的IM即时通讯软件,打造高效沟通协作新时代

在当今快节奏的商业环境中&#xff0c;高效沟通和协作是企业成功的关键。而IM即时通讯软件作为实现高效沟通的利器&#xff0c;成为了现代企业不可或缺的一部分。作为一款领先的IM即时通讯软件&#xff0c;WorkPlus以其卓越的性能和独特的功能&#xff0c;助力企业打造高效沟通…

万字长文谈自动驾驶occupancy感知

文章目录 prologuepaper listVision-based occupancy :1. [MonoScene: Monocular 3D Semantic Scene Completion [CVPR 2022]](https://arxiv.org/pdf/2112.00726.pdf)2. [Tri-Perspective View for Vision-Based 3D Semantic Occupancy Prediction [CVPR 2023]](https://arxiv…

CSS2_基础学习

CSS2_基础学习 一、css基础知识二、css选择器2.0 选择器的优先级2.1 CSS基本选择器2.2 复合选择器2.2.1. 交集选择器2.2.2. 并集选择器2.2.3. 后代选择器&#xff08;加空格&#xff09;2.2.4. 子代选择器2.2.5. 兄弟选择器2.2.6. 属性选择器2.2.7. 伪类选择器2.2.8. 伪元素选择…

Spark中的数据加载与保存

Apache Spark是一个强大的分布式计算框架&#xff0c;用于处理大规模数据。在Spark中&#xff0c;数据加载与保存是数据处理流程的关键步骤之一。本文将深入探讨Spark中数据加载与保存的基本概念和常见操作&#xff0c;包括加载不同数据源、保存数据到不同格式以及性能优化等方…

【Jmeter】Jmeter基础9-BeanShell介绍

3、BeanShell BeanShell是一种完全符合Java语法规范的脚本语言,并且又拥有自己的一些语法和方法。 3.1、Jmeter中使用的BeanShell 在Jmeter中&#xff0c;除了配置元件&#xff0c;其他类型的元件中都有BeanShell。BeanShell 是一种完全符合Java语法规范的脚本语言,并且又拥…

CSS一个纯样式花里胡哨的动态渐变背景块

使用SASS或CSS纯样式花里胡哨的动态渐变背景块 鼠标放在小方块上会放大并挤压周围方块&#xff0c;背景颜色会动态改变。 效果如下 HTML结构 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"vie…

【头歌实训】kafka-入门篇

文章目录 第1关&#xff1a;kafka - 初体验任务描述相关知识Kafka 简述Kafka 应用场景Kafka 架构组件kafka 常用命令 编程要求测试说明答案代码 第2关&#xff1a;生产者 &#xff08;Producer &#xff09; - 简单模式任务描述相关知识Producer 简单模式Producer 的开发步骤Ka…

VMware虚拟机之文件夹共享jdk和tomcat安装防火墙设置

目录 一. 配置文件夹共享功能 1.1 为什么需要配置文件夹共享功能 1.2 配置文件共享功能 1.3 普通共享和高级共享的区别 1.3.1 普通共享 1.3.2 高级共享 1.3.3 总结 二. jdk的配置 2.1 安装jdk 2.2 配置jdk的环境配置jdk 2.3 配置成功 三. TomCat的配置 四. 防火墙设置 4.1…

PyTorch常用工具(2)预训练模型

文章目录 前言2 预训练模型 前言 在训练神经网络的过程中需要用到很多的工具&#xff0c;最重要的是数据处理、可视化和GPU加速。本章主要介绍PyTorch在这些方面常用的工具模块&#xff0c;合理使用这些工具可以极大地提高编程效率。 由于内容较多&#xff0c;本文分成了五篇…

2023年终总结|回顾学习Tensorflow、Keras的历程

2023年4月&#xff0c;初探TensorFlow2.0&#xff0c;对比了1.0版本的差异。接着&#xff0c;学习了TensorFlow2.0的常量矩阵、四则运算以及常用函数。学习了数据切割、张量梯度计算、遍历元素、类别索引转换等技巧&#xff0c;并掌握了CNN输出特征图形状的计算方法。 在数据处…

【漏洞复现】企望制造ERP系统 RCE漏洞

漏洞描述 企望制造ERP系统是畅捷通公司开发的一款领先的生产管理系统&#xff0c;它以集成化管理为核心设计理念&#xff0c;通过模块化机制&#xff0c;帮助企业实现生产、采购、库存等方面的高效管理。该系统存在RCE远程命令执行漏洞&#xff0c;恶意攻击者可利用此漏洞进行…

流逝的时光

文章目录 创作历程展望2024 创作历程 自2019.6.28注册csdn&#xff0c;期间断断续续的通过其查找相应资料&#xff0c;受益颇多 今研一&#xff0c;发现论文看了又忘&#xff0c;于是借此平台来记录&#xff0c;可以看到基本都是基于原论文进行翻译&#xff0c;并没有所思所想&…

今年努力输出的嵌入式Linux视频

今年努力了一波&#xff0c;几个月周六日无休&#xff0c;自己在嵌入式linux工作有些年头&#xff0c;结合自己也是一直和SLAM工程师对接&#xff0c;所以输出了一波面向SLAM算法工程师Linux课程&#xff0c;当然嵌入式入门的同学也可以学习。下面是合作的官方前面发的宣传文章…

《Spring Cloud学习笔记:微服务保护Sentinel + JMeter快速入门》

Review 解决了服务拆分之后的服务治理问题&#xff1a;Nacos解决了服务治理问题OpenFeign解决了服务之间的远程调用问题网关与前端进行交互&#xff0c;基于网关的过滤器解决了登录校验的问题 流量控制&#xff1a;避免因为突发流量而导致的服务宕机。 隔离和降级&#xff1a…

浅学lombok

Lombok&#xff08;Project Lombok&#xff09;是一个用于 Java 编程语言的开源库&#xff0c;旨在减少 Java 代码中的冗余和样板代码&#xff0c;提高开发人员的生产力。它通过使用注解来自动生成 Java 类的常见方法和代码&#xff0c;从而使开发人员能够编写更简洁、更具可读…

Django Rest Framework(DRF)框架搭建步骤,包含部分错误解决

一、初步搭建项目 1.使用PyCharm 2021创建Djiango项目&#xff0c;配置如下&#xff08;假设应用名叫djiango_python) Python &#xff08;3.6&#xff0c; 3.7&#xff0c; 3.8&#xff0c; 3.9&#xff0c; 3.10&#xff0c; 3.11&#xff09;> 当前版本 3.8.6Django &a…