当前位置: 首页 > 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…...

HsMod终极指南:5步打造你的专属炉石传说模改体验

HsMod终极指南&#xff1a;5步打造你的专属炉石传说模改体验 【免费下载链接】HsMod Hearthstone Modify Based on BepInEx 项目地址: https://gitcode.com/GitHub_Trending/hs/HsMod HsMod是一款基于BepInEx框架的炉石传说模改插件&#xff0c;为玩家提供全面的游戏体验…...

FPGA实战:手把手教你用Verilog给NAND Flash数据上把“安全锁”(附完整ECC代码)

FPGA实战&#xff1a;用Verilog为NAND Flash打造硬件级ECC防护系统 1. 为什么你的NAND Flash需要硬件ECC&#xff1f; NAND Flash存储芯片在工业控制、物联网终端和边缘计算设备中扮演着关键角色&#xff0c;但它的物理特性导致数据可靠性存在先天缺陷。想象一下&#xff0c;当…...

大厂Agent开发工程师亲授!这份核心技术学习路线助你轻松拿下高薪Offer!

结合个人实际的工作内容和招聘市场对于Agent开发的能力要求&#xff08;阅读汇总了大量大厂的Agent开发招聘面经&#xff09;&#xff0c;我总结了一份核心技术学习路线。 这个学习路线由浅到深&#xff0c;基本覆盖了现在大厂对于Agent开发的技术要求&#xff0c;技术栈完全可…...

SpringBoot+Redis实现高并发短信登录:双拦截器设计背后的架构思考

SpringBootRedis高并发短信登录架构深度解析&#xff1a;双拦截器设计与性能优化实战 1. 高并发场景下的登录架构挑战 在当今互联网应用中&#xff0c;短信验证码登录已成为主流的身份验证方式之一。但当系统面临高并发请求时&#xff0c;传统的Session-based方案会暴露出诸多瓶…...

Wan2.2-I2V-A14B效果展示:复杂提示词‘雨夜霓虹街道行人撑伞行走’生成效果

Wan2.2-I2V-A14B效果展示&#xff1a;复杂提示词雨夜霓虹街道行人撑伞行走生成效果 1. 模型能力概览 Wan2.2-I2V-A14B是一款专为高质量视频生成设计的先进模型&#xff0c;能够将文字描述转化为生动的动态画面。这款模型特别擅长处理复杂场景和细腻氛围的渲染&#xff0c;在以…...

C-index避坑指南:生存分析中90%人会犯的5个评估错误

C-index避坑指南&#xff1a;生存分析中90%人会犯的5个评估错误 在临床研究和生物统计领域&#xff0c;C-index&#xff08;Harrells concordance index&#xff09;作为评估生存分析模型预测性能的核心指标&#xff0c;其正确计算与解读直接影响研究结论的可靠性。然而&#x…...

GLM-OCR模型Node.js环境配置与API服务搭建全指南

GLM-OCR模型Node.js环境配置与API服务搭建全指南 你是不是也遇到过这样的场景&#xff1f;手头有一堆图片需要提取文字&#xff0c;比如扫描的文档、截图或者手机拍的照片。自己手动录入&#xff1f;效率太低。用现成的在线OCR工具&#xff1f;又担心数据安全和调用限制。特别…...

能做表格的 AI 软件:Excel-Agent,AI 原生重构表格数据分析全流程

当传统 Excel 被卡顿、复杂公式、海量数据难处理、手动重复操作困住时&#xff0c;能做表格的 AI 软件正成为效率破局关键 —— 而 Excel-Agent&#xff0c;正是专为 Excel 场景打造的 AI 数据智能体&#xff0c;以自然语言交互、本地高效计算、全链路数据处理能力&#xff0c;…...

STM32duino多传感器库:X-NUCLEO-IKS01A2驱动详解

1. 项目概述STM32duino X-NUCLEO-IKS01A2 是一个面向 Arduino 兼容生态&#xff08;特别是基于 STM32 的开发板&#xff0c;如 NUCLEO-F401RE、NUCLEO-F411RE、NUCLEO-L476RG 等&#xff09;的硬件抽象库&#xff0c;专为驱动 STMicroelectronics 官方推出的 X-NUCLEO-IKS01A2 …...

Java调用C/C++/Rust的5种方式:FFI vs JNI vs JNA vs JNR vs Panama——2024权威对比评测

第一章&#xff1a;Java外部函数接口概述与技术演进脉络Java外部函数接口&#xff08;Foreign Function & Memory API&#xff09;&#xff0c;即Project Panama的核心成果&#xff0c;是Java平台为高效、安全地与本地代码&#xff08;如C/C库&#xff09;及非堆内存交互而…...