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

[machineLearning]非监督学习unsupervised learning

1.什么是非监督学习

常见的神经网络是一种监督学习,监督学习的主要特征即为根据输入来对输出进行预测,最终会得到一个输出数值.而非监督学习的目的不在于输出,而是在于对读入的数据进行归类,选取特征,打标签,通过对于数据结构的分析来完成这些操作, 很少有最后的输出操作.

从训练数据的角度来说也是有所区别:监督学习的训练数据为(x,y), 即同时具有输入和输出数值,根据这种输入和输出来判断训练的结果是否正确.

但是非监督学习的数据只有输入数据(x),或者说非监督学习就是要处理这些数据,然后随着新的数据加入再不断进行修改,完成对数据特征提取和区分的要求.

把相同的数据进行归类,这就是非监督学习所作的事情.

下面将介绍两种常用的非监督学习算法:聚类分析和异常检测

本文中需要一定的概率论/高中概率的前置知识

2.聚类算法 k-means

(1)什么是聚类分析

俺举个简单点例子,比如说我们有两个维度的特征值x1 x2,这个时候我们根据特征值把数据点描绘在图片上.

可以很明显地看到,因为各自的特征不同和相似,我们最终可以把原本的数据集合分成两个集群聚类(cluster),我们的目的就是通过算法找到这两个聚类究竟有多少成员,有哪些成员

其中一种古老但是经典的早期算法K-means可以用来解决这个问题

(2)K-means算法

在具体解释这个算法之前,要说明一个概念:集群质心 cluster controids,集群质心代表这些集群的一个中心点.

1.Kmeans的算法第一步就是按照人为的需求,随机分配多个集群质心

2.然后将每个点分配给距离自己最近的质心,组成一个集群

3.集群中的点通过特征值平均,算出一个中心点位置,然后把这个集群的质心移动到这个位置

4.重复 2 3 两个步骤,直到最后质心的距离不发生改变,即可视为集群操作完成

下面将将会使用图片来进行说明,我们一共有三十个数据点,按照特征值划分开

 随机分配两个质心(这里假设我们需要的是划分出两个集群,然后接下来是对每个数据点进行归类,将其分配给某个群(严格来说是和距离自己最近的质心打上同样的标记) 

将多个数据点分配到具体的集群以后,这个时候暂时就先不用到集群质心cluster controids了

对于每一个集群,我们通过各个分量之间计算平均点的方式,计算出这个集群的集群质心应该在什么位置上

然后将集群质心移动到对应的点上

 重复以上两个步骤,最终实现集群质心的固定,到这种程度就可以认为规定数目的集群已经按照要求划分完成

 (3)聚类算法的优化

忘记说明一点,kmeans算法的初始化,随机分配集群质心,一般是直接在已有的数据点中生成,而不是真的凭空捏造一个(hhhh).但是不同的随机选取结果,最终可能会导致不同的集群划分结果,甚至可能造成unconverge不收敛现象.

类似监督学习中的代价函数,这里我们同样是存在代价函数,只不过计算方法有一点点区别

Kmeans的代价函数如下

J=\frac{1}{m}\sum \left \| x^{i}-\mu _{c^{i}}^{} \right \|^2

c^{i}:代表的是第i个数据点所在的群

\mu:代表的是某个群的集群质心

所以这个公式的解释就是:所有点到他们各自所在群的集群质心的距离的二范数(空间距离)的平均值

在比较不同集群算法结果的时候,计算代价函数是比较合理的比较方法

而聚类算法的优化,也是期望代价函数能够降到最低

另外要说的是,不合理无法归一的情况是客观存在的,结局办法有很多,比如重新进行随机点的选取,但是kmeans毕竟还是比较早期的算法.可以选用其他算法或者其他改进模式,这里就不进行赘述了

3.异常检测算法 anomal detect

异常检测算法通常用于一些特殊的情况,  比如一些物体的识别,比如水果,可以按照重量,色泽等等特征来做区分,或者珍珠可以按照半径,色泽等等方式来判断一个珍珠是好是坏.正所谓幸福千篇一律,苦难各有不幸.

我们所遵从的原则是"群体原则",即为服从大多数,大多数具有相同特征的人被称之为正常.

所以因为这样,我们要使用高斯分布这一特性

这个玩意我觉得大多数人应该在高中或者是大学的概率论课程中接触过,在异常检测算法之中,我们会对每一个分量进行高斯分布计算

假设某一批数据有很多特征值

x_{1}^{}=\left ( x_{1}^{(1)},x_{1}^{(2)},....,x_{1}^{(n)} \right )  

x_{2}^{}=\left ( x_{2}^{(1)},x_{2}^{(2)},....,x_{2}^{(n)} \right )

.............................................................

x_{m}^{}=\left ( x_{m}^{(1)},x_{m}^{(2)},....,x_{m}^{(n)} \right )

对于每一个分量,例如这个矩阵的第一列,即每个样本的第一个特征值,对于这些数据我们需要计算出方差和平均值,然后就能构建出一个分量的高斯式子

P(x1)=gauss(x1,\mu 1,\sigma ^{2}1)

然后对于整体的输入数据来说,某个数据xi想要判断是不是"异常",只需要计算这个向量的高斯数值

P(\chi )=P(x1 )*P(x2 )*.....*P(x3 )   (注意一个很有趣的地方,就算这些特征值可能不是独立的,我们这个式子仍然是成立的)

然后通过这样子,判断该数据向量的高斯分布数值是否大于某个阀值,即可直到是不是属于"大多数"

P(\chi )>=\varepsilon ?

(2)注意事项

1.在训练的时候,训练数据必须全是正常的数据,测试集合中需要包含一些

2.有些特征可能并不是高斯分布,需要我们对数据进行适当的方所处理

3.不是二维分布不是二维聚类!二位聚类是根据两种不同的特征值划分出两种截然不同的集群,两个群中的元素则都有各自相同的部分.

而异常检测不一样,异常检测做到的是区分"大多数"和"异端"

相关文章:

[machineLearning]非监督学习unsupervised learning

1.什么是非监督学习 常见的神经网络是一种监督学习,监督学习的主要特征即为根据输入来对输出进行预测,最终会得到一个输出数值.而非监督学习的目的不在于输出,而是在于对读入的数据进行归类,选取特征,打标签,通过对于数据结构的分析来完成这些操作, 很少有最后的输出操作. 从…...

C语言深入理解指针(非常详细)(四)

目录 字符指针变量数组指针变量数组指针变量是什么数组指针变量怎么初始化 二维数组传参的本质函数指针变量函数指针变量的创建函数指针变量的使用代码typedef关键字 函数指针数组转移表 字符指针变量 字符指针在之前我们有提到过,(字符)&am…...

知识库建设:从0到1搞定知识库建设的方法论分享

如果我们想要搭建一个知识库,前提是我们要明确知道这个知识库是干什么用的,只有了解知识库的应用场景才能知道如何去建设知识库。 知识库建设 以常见的电商客服为例,客户会经常咨询什么时候发货,怎么退货,怎么换货………...

SpringBoot+Vue 的留守儿童系统的研究与实现,2.0 版本,附数据库、教程

博主介绍:✌程序员徐师兄、7年大厂程序员经历。全网粉丝30W,Csdn博客专家、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ 文章目录 1.研究背景2. 技术栈3.系统分析4系统设计5系统的详细设计与实现5.1系统功能模块5.2管理员功能模块…...

28.考试

Description 小学期马上就要结束了,为了检验大家的学习成果,老师进行了一次考试。然而小徐前两周半都忙于练习篮球,几乎没有学习,因此考试时很可能做不完所有题目。 但小徐仍然想要拿到尽可能高的分数,因此在做题时需要…...

浏览器窗口间的通信

一、汇总 二、同源策略 三、webSocket (无跨域限制) 优点:无跨域限制 缺点:成本高 四、客户端存储 1、localStorage onStorage 例子: 2、定时器 客户端存储 例子: 缺点: 五、postMessage (无跨域…...

MATLAB 的 plot 绘图

文章目录 SyntaxDescriptionplot(X,Y)plot(X,Y,LineSpec)plot(X1,Y1,…,Xn,Yn)plot(X1,Y1,LineSpec1,...,Xn,Yn,LineSpecn)plot(Y)plot(Y,LineSpec)plot(tbl,xvar,yvar)plot(tbl,yvar)plot(ax,___)plot(___,Name,Value)p plot(___) plot: 2-D line plot Syntax plot(X,Y)plo…...

SpringBoot项目--电脑商城【获取省市区列表】

1.易错点 1.错误做法 新增收货地址页面的三个下拉列表的内容展示没有和数据库进行交互,而是通过前端实现的(将代码逻辑放在了distpicker.data.js文件中),实现方法是在加载新增收货地址页面时加载该js文件,这种做法不可取 2.正确做法 把这些数据保存到数据库中,用户点击下拉…...

使用git把本地项目关联远程代码仓库,并推送到远程仓库

你在本地新建了一个项目,写好了代码,但是没有关联远程仓库,怎么关联并上传呢? 你要先去gitee创建一个代码仓库,然后复制http地址。 首次提交项目代码到一个新建的远程仓库: 1、通过命令 git init 把这个…...

Spring+MyBatis使用collection标签的两种使用方法

目录 项目场景: 实战操作: 1.创建菜单表 2.创建实体 3.创建Mapper 4.创建xml 属性描述: 效率比较: 项目场景: 本文说明了Spring BootMyBatis使用collection标签的两种使用方法 1. 方法一: 关联查询 2. 方法…...

k8s集群中集群方式安装nacos

1、前提条件 一个k8s集群,其中有三个master 节点,这三个节点的标签名称为etcd 三个master节点的ip 分别为:192.165.187.170 、192.165.187.171、192.165.187.172一个mysql 数据库, 数据库的ip 为:192.165.187.180 用户…...

极客时间:数据结构与算法之美【学习笔记+思考实践】

本篇是 《极客时间:数据结构与算法之美》课程的学习笔记和带有自己的一些思考实践。原文学习链接如下:https://time.geekbang.org/column/intro/100017301 开篇词 | 从今天起,跨过“数据结构与算法”这道坎01 | 为什么要学习数据结构和算法&a…...

基于视觉重定位的室内AR导航项目思路(2):改进的建图和定位分离的项目思路

文章目录 一、建图二、定位首先是第一种方法:几何方法其次是第二种方法:图像检索方法最后是第三种方法:深度学习方法 前情提要: 是第一次做项目的小白,文章内的资料介绍如有错误,请多包含! 一、…...

nodejs+vue+elementui精品课程网站设计

前端技术:nodejsvueelementui基于nodejs语言、vue.js框架、B/S架构、Mysql数据库设计并实现了精品课程网站设计。系统主要包括首页、个人中心、用户管理、课程信息管理、课程分类管理、学习论坛、在线试题管理、试题管理、系统管理、考试管理等功能模块。 本文首先介…...

40个Linux常用命令组合

1.删除0字节文件 find -type f -size 0 -exec rm -rf {} \; 2.查看进程 按内存从大到小排列 ps -e -o "%C : %p : %z : %a"|sort -k5 -nr 3.按cpu利用率从大到小排列 ps -e -o "%C : %p : %z : %a"|sort -nr 4.打印说cache里的URL grep -r -a jpg …...

NIFI关于Variables的使用

说明 NIFI中的变量(variables)和参数(parameters)在引用的时候是有区别的。 参数的引用是使用#{参数名}的形式。 变量是使用${变量名}的形式来引用。 nifi版本:1.23.2(docker镜像) Variable…...

2、VRP基础

本节我们介绍华为设备的VRP系统平台的一些基本知识,为以后学习路由交换的配置命令做好基本的准备。在这里,为软考网络工程师做准备,只需要了解其中比较基础的即可,包括VRP是什么、提供了哪些用户界面、VRP的用户级别、基本的配置视…...

docker容器运行成功但无法访问,原因分析及对应解决方案(最新,以Tomcat为例,亲测有效)

原因分析: 是否能访问当运行docker容器虚拟机(主机)地址 虚拟机对应的端口号是否开启或者防墙是否关闭 端口映射是否正确(这个是我遇到的) tomcat下载的是最新版,docker运行后里面是没有东西的&am…...

第15章 秒杀商品隔离解决方案

mini商城第15章 秒杀商品隔离解决方案 一、课题 商品秒杀-热门数据实时收集 二、回顾 1、掌握热门分析收集方案 2、Lua高级语法 3、Kafka使用 4、Lua垂直日志收集 5、Apache Druid大数据实时处理系统 三、目标 1、MyBatis查询Apache Druid 常规查询 复杂查询 2、热门…...

2023-08-31力扣每日一题-姜汁水题

链接&#xff1a; 1761. 一个图中连通三元组的最小度数 题意&#xff1a; 选择两两相连的三个点&#xff0c;要求度最小 解&#xff1a; 什么暴力hard 实际代码&#xff1a; #include<bits/stdc.h> using namespace std; int minTrioDegree(int n, vector<vect…...

XML Group端口详解

在XML数据映射过程中&#xff0c;经常需要对数据进行分组聚合操作。例如&#xff0c;当处理包含多个物料明细的XML文件时&#xff0c;可能需要将相同物料号的明细归为一组&#xff0c;或对相同物料号的数量进行求和计算。传统实现方式通常需要编写脚本代码&#xff0c;增加了开…...

Qt/C++开发监控GB28181系统/取流协议/同时支持udp/tcp被动/tcp主动

一、前言说明 在2011版本的gb28181协议中&#xff0c;拉取视频流只要求udp方式&#xff0c;从2016开始要求新增支持tcp被动和tcp主动两种方式&#xff0c;udp理论上会丢包的&#xff0c;所以实际使用过程可能会出现画面花屏的情况&#xff0c;而tcp肯定不丢包&#xff0c;起码…...

Vue3 + Element Plus + TypeScript中el-transfer穿梭框组件使用详解及示例

使用详解 Element Plus 的 el-transfer 组件是一个强大的穿梭框组件&#xff0c;常用于在两个集合之间进行数据转移&#xff0c;如权限分配、数据选择等场景。下面我将详细介绍其用法并提供一个完整示例。 核心特性与用法 基本属性 v-model&#xff1a;绑定右侧列表的值&…...

STM32标准库-DMA直接存储器存取

文章目录 一、DMA1.1简介1.2存储器映像1.3DMA框图1.4DMA基本结构1.5DMA请求1.6数据宽度与对齐1.7数据转运DMA1.8ADC扫描模式DMA 二、数据转运DMA2.1接线图2.2代码2.3相关API 一、DMA 1.1简介 DMA&#xff08;Direct Memory Access&#xff09;直接存储器存取 DMA可以提供外设…...

postgresql|数据库|只读用户的创建和删除(备忘)

CREATE USER read_only WITH PASSWORD 密码 -- 连接到xxx数据库 \c xxx -- 授予对xxx数据库的只读权限 GRANT CONNECT ON DATABASE xxx TO read_only; GRANT USAGE ON SCHEMA public TO read_only; GRANT SELECT ON ALL TABLES IN SCHEMA public TO read_only; GRANT EXECUTE O…...

微服务商城-商品微服务

数据表 CREATE TABLE product (id bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT 商品id,cateid smallint(6) UNSIGNED NOT NULL DEFAULT 0 COMMENT 类别Id,name varchar(100) NOT NULL DEFAULT COMMENT 商品名称,subtitle varchar(200) NOT NULL DEFAULT COMMENT 商…...

uniapp中使用aixos 报错

问题&#xff1a; 在uniapp中使用aixos&#xff0c;运行后报如下错误&#xff1a; AxiosError: There is no suitable adapter to dispatch the request since : - adapter xhr is not supported by the environment - adapter http is not available in the build 解决方案&…...

JVM暂停(Stop-The-World,STW)的原因分类及对应排查方案

JVM暂停(Stop-The-World,STW)的完整原因分类及对应排查方案,结合JVM运行机制和常见故障场景整理而成: 一、GC相关暂停​​ 1. ​​安全点(Safepoint)阻塞​​ ​​现象​​:JVM暂停但无GC日志,日志显示No GCs detected。​​原因​​:JVM等待所有线程进入安全点(如…...

Redis数据倾斜问题解决

Redis 数据倾斜问题解析与解决方案 什么是 Redis 数据倾斜 Redis 数据倾斜指的是在 Redis 集群中&#xff0c;部分节点存储的数据量或访问量远高于其他节点&#xff0c;导致这些节点负载过高&#xff0c;影响整体性能。 数据倾斜的主要表现 部分节点内存使用率远高于其他节…...

基于matlab策略迭代和值迭代法的动态规划

经典的基于策略迭代和值迭代法的动态规划matlab代码&#xff0c;实现机器人的最优运输 Dynamic-Programming-master/Environment.pdf , 104724 Dynamic-Programming-master/README.md , 506 Dynamic-Programming-master/generalizedPolicyIteration.m , 1970 Dynamic-Programm…...