[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的代价函数如下
:代表的是第i个数据点所在的群
:代表的是某个群的集群质心
所以这个公式的解释就是:所有点到他们各自所在群的集群质心的距离的二范数(空间距离)的平均值
在比较不同集群算法结果的时候,计算代价函数是比较合理的比较方法
而聚类算法的优化,也是期望代价函数能够降到最低
另外要说的是,不合理无法归一的情况是客观存在的,结局办法有很多,比如重新进行随机点的选取,但是kmeans毕竟还是比较早期的算法.可以选用其他算法或者其他改进模式,这里就不进行赘述了
3.异常检测算法 anomal detect
异常检测算法通常用于一些特殊的情况, 比如一些物体的识别,比如水果,可以按照重量,色泽等等特征来做区分,或者珍珠可以按照半径,色泽等等方式来判断一个珍珠是好是坏.正所谓幸福千篇一律,苦难各有不幸.
我们所遵从的原则是"群体原则",即为服从大多数,大多数具有相同特征的人被称之为正常.
所以因为这样,我们要使用高斯分布这一特性
这个玩意我觉得大多数人应该在高中或者是大学的概率论课程中接触过,在异常检测算法之中,我们会对每一个分量进行高斯分布计算
假设某一批数据有很多特征值
.............................................................
对于每一个分量,例如这个矩阵的第一列,即每个样本的第一个特征值,对于这些数据我们需要计算出方差和平均值,然后就能构建出一个分量的高斯式子
然后对于整体的输入数据来说,某个数据xi想要判断是不是"异常",只需要计算这个向量的高斯数值
(注意一个很有趣的地方,就算这些特征值可能不是独立的,我们这个式子仍然是成立的)
然后通过这样子,判断该数据向量的高斯分布数值是否大于某个阀值,即可直到是不是属于"大多数"
(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力扣每日一题-姜汁水题
链接: 1761. 一个图中连通三元组的最小度数 题意: 选择两两相连的三个点,要求度最小 解: 什么暴力hard 实际代码: #include<bits/stdc.h> using namespace std; int minTrioDegree(int n, vector<vect…...
深入浅出Asp.Net Core MVC应用开发系列-AspNetCore中的日志记录
ASP.NET Core 是一个跨平台的开源框架,用于在 Windows、macOS 或 Linux 上生成基于云的新式 Web 应用。 ASP.NET Core 中的日志记录 .NET 通过 ILogger API 支持高性能结构化日志记录,以帮助监视应用程序行为和诊断问题。 可以通过配置不同的记录提供程…...
基于ASP.NET+ SQL Server实现(Web)医院信息管理系统
医院信息管理系统 1. 课程设计内容 在 visual studio 2017 平台上,开发一个“医院信息管理系统”Web 程序。 2. 课程设计目的 综合运用 c#.net 知识,在 vs 2017 平台上,进行 ASP.NET 应用程序和简易网站的开发;初步熟悉开发一…...
前端倒计时误差!
提示:记录工作中遇到的需求及解决办法 文章目录 前言一、误差从何而来?二、五大解决方案1. 动态校准法(基础版)2. Web Worker 计时3. 服务器时间同步4. Performance API 高精度计时5. 页面可见性API优化三、生产环境最佳实践四、终极解决方案架构前言 前几天听说公司某个项…...
2021-03-15 iview一些问题
1.iview 在使用tree组件时,发现没有set类的方法,只有get,那么要改变tree值,只能遍历treeData,递归修改treeData的checked,发现无法更改,原因在于check模式下,子元素的勾选状态跟父节…...
保姆级教程:在无网络无显卡的Windows电脑的vscode本地部署deepseek
文章目录 1 前言2 部署流程2.1 准备工作2.2 Ollama2.2.1 使用有网络的电脑下载Ollama2.2.2 安装Ollama(有网络的电脑)2.2.3 安装Ollama(无网络的电脑)2.2.4 安装验证2.2.5 修改大模型安装位置2.2.6 下载Deepseek模型 2.3 将deepse…...
代码随想录刷题day30
1、零钱兑换II 给你一个整数数组 coins 表示不同面额的硬币,另给一个整数 amount 表示总金额。 请你计算并返回可以凑成总金额的硬币组合数。如果任何硬币组合都无法凑出总金额,返回 0 。 假设每一种面额的硬币有无限个。 题目数据保证结果符合 32 位带…...
AirSim/Cosys-AirSim 游戏开发(四)外部固定位置监控相机
这个博客介绍了如何通过 settings.json 文件添加一个无人机外的 固定位置监控相机,因为在使用过程中发现 Airsim 对外部监控相机的描述模糊,而 Cosys-Airsim 在官方文档中没有提供外部监控相机设置,最后在源码示例中找到了,所以感…...
从“安全密码”到测试体系:Gitee Test 赋能关键领域软件质量保障
关键领域软件测试的"安全密码":Gitee Test如何破解行业痛点 在数字化浪潮席卷全球的今天,软件系统已成为国家关键领域的"神经中枢"。从国防军工到能源电力,从金融交易到交通管控,这些关乎国计民生的关键领域…...
关于easyexcel动态下拉选问题处理
前些日子突然碰到一个问题,说是客户的导入文件模版想支持部分导入内容的下拉选,于是我就找了easyexcel官网寻找解决方案,并没有找到合适的方案,没办法只能自己动手并分享出来,针对Java生成Excel下拉菜单时因选项过多导…...
如何应对敏捷转型中的团队阻力
应对敏捷转型中的团队阻力需要明确沟通敏捷转型目的、提升团队参与感、提供充分的培训与支持、逐步推进敏捷实践、建立清晰的奖励和反馈机制。其中,明确沟通敏捷转型目的尤为关键,团队成员只有清晰理解转型背后的原因和利益,才能降低对变化的…...
