首页 > 其他分享 >【无监督机器学习】8.聚类和异常检测

【无监督机器学习】8.聚类和异常检测

时间:2023-10-17 21:48:00浏览次数:25  
标签:机器 means 检测 mu 算法 聚类 异常

聚类

聚类的定义

聚类是一种无监督学习,它将相似的对象归到同一个簇中。

聚类作为一种无监督学校,和分类的区别在于,分类的目标事先已知,而聚类的目标是事先不知道的。

聚类应用

聚类在很多领域都有应用,比如:

  • 新闻文章分组
  • 市场细分
  • DNA分析
  • 天文数据分析

聚类的算法 K-means

K-means是一种典型的聚类算法,它的基本思想是:以空间中K个点为中心进行聚类,对最靠近他们的对象归类。通过迭代的方法,逐次更新各聚类中心的值,直到得到最好的聚类结果。

img

K-means算法流程

  1. 随机选择K个点作为聚类中心
  2. 计算每个点到聚类中心的距离,将每个点归到距离最近的聚类中心
  3. 重新计算每个聚类中心的值
  4. 重复2、3步骤,直到聚类中心的值不再变化

值得注意的是:

  • 如果一个中心没有任何点被分配,那么这个中心就不再变化;在这种情况下,常见做法是消除该中心。如果希望保持K个中心,可以将重新初始化

  • K-means 也经常应用于簇之间没有明显分界的数据集

K-means算法的优化

成本函数

K-means算法的成本函数为:

\[J(c^{(1)},...,c^{(m)},\mu_1,...,\mu_k)=\frac{1}{m}\sum_{i=1}^{m}||x^{(i)}-\mu_{c^{(i)}}||^2 \]

其中,\(c^{(i)}\)表示样本\(x^{(i)}\)所属的簇,\(\mu_{c^{(i)}}\)表示样本\(x^{(i)}\)所属的簇的中心点。

K-means算法的步骤

  • 分配数据点到最近的聚类中心

    更新\(c^{(i)}\),使得\(J\)最小

  • 重新计算聚类中心

    更新\(\mu_k\),使得\(J\)最小

初始化聚类中心

通过随机选择K个点作为聚类中心,然后进行迭代,直到收敛。

但是,这种方法有一个缺点,就是可能会导致K-means算法收敛到局部最优解,而不是全局最优解。

为了解决这个问题,可以多次随机初始化,然后选择代价函数最小的结果。

选择聚类的数量

肘部法则

肘部法则是一种常用的方法,它的基本思想是:随着聚类数量的增加,每个点到聚类中心的距离会减小,但是随着聚类数量的增加,每个点到聚类中心的距离的收益会逐渐减小,直到某个点,再增加聚类数量,收益几乎不变。

img

根据下游任务选择聚类数量

聚类的目的是为了解决下游任务,所以可以根据下游任务的目标,选择聚类的数量。

比如,如果下游任务是对选择T-恤尺寸的用户进行分类,那么可以选择3个聚类,分别对应S、M、L三种尺寸。

异常检测

异常检测的定义

异常检测是一种无监督学习,它的目标是识别出与大多数其他实例显著不同的数据实例。

异常检测通过观察一组未标记的正常实例来学习正常性的概念,然后使用这个概念来识别异常实例。

异常检测的概念定义:

  • 特征:算法需要一组特征来描述数据
  • 密度估计:异常检测的的常见方法是使用密度估计,即假设正常数据点和异常数据点分布在不同的区域,然后使用概率来描述正常数据点的分布,从而识别异常数据点
  • 概率阈值(epsilon,\(\epsilon\)):异常检测的算法需要一个概率阈值,用来判断一个数据点是正常还是异常

异常检测的应用

异常检测在很多领域都有应用,比如:

  • 金融欺诈检测
  • 制造业
  • 机器故障检测

高斯分布

高斯分布也称为正态分布,它的概率密度函数为:

\[p(x;\mu,\sigma^2)=\frac{1}{\sqrt{2\pi}\sigma}exp(-\frac{(x-\mu)^2}{2\sigma^2}) \]

其中,\(\mu\)是均值,\(\sigma^2\)是方差。

高斯分布的图像如下:
img

其中,\(\mu\)是均值,决定了图像的中心位置;\(\sigma^2\)是方差,决定了图像的宽度。

异常检测的算法流程

  • 根据训练集,计算每个特征的均值和方差
  • 使用均值和方差,构建高斯分布模型
  • 对于新的数据点,计算概率,如果概率小于\(\epsilon\),则判断为异常

在具有多个特征的异常检测问题中,可以将每个特征看作是独立的,然后计算每个特征的概率,最后将每个特征的概率相乘,得到最终的概率。

\[p(x)=p(x_1;\mu_1,\sigma_1^2)p(x_2;\mu_2,\sigma_2^2)...p(x_n;\mu_n,\sigma_n^2) \]

开发和评估异常检测系统

  • 实数评估:使用真实的异常数据,计算算法的准确率和召回率
  • 使用标签数据:虽然异常检测主要关注无标签数据,但在实际应用中,有一小部分标签数据(如已知的异常样本)是非常有帮助的。这些标签数据可以用于创建交叉验证集和测试集,从而评估和改进算法。
  • 分割数据集:将数据集分为训练集、交叉验证集和测试集,然后使用交叉验证集来选择\(\epsilon\),使用测试集来评估算法的性能。
  • 处理高度偏斜的数据:如果异常数据只占很小的一部分,那么可以使用F1值来评估算法的性能。

异常检测的特征选择

异常检测中,选择恰当的特征非常重要:

高斯特征

确保特征符合高斯分布,如果不符合,可以使用对数函数、平方根函数等进行转换。

可以使用直方图来检查特征是否符合高斯分布。

img

异常特征

训练异常检测算法后,如果在交叉验证集上表现不佳,可以进行错误分析

创建新特征

可以通过创建新特征来提高算法的性能

异常检测和监督学习

异常检测和监督学习的区别在于:

  • 异常检测的目标是识别出与大多数其他实例显著不同的数据实例,这种方法在未来可能出现新异常的情况下表现较好
  • 监督学习的目标是识别出已知的类别,适用于已经有较多的正例和负例的情况

标签:机器,means,检测,mu,算法,聚类,异常
From: https://www.cnblogs.com/agitm/p/17770764.html

相关文章

  • 请完善课上的口算题卡代码,实现重复题目的检测、题目数字范围、加减乘除算式的参数化等
    importjava.util.HashSet;importjava.util.Random;importjava.util.Set;publicclassMathQuizGenerator{  publicstaticvoidmain(String[]args){    intnumberOfQuestions=10;//设定生成题目的数量    intminNumber=1;//题目数字的最小值 ......
  • 【Python微信机器人】第一篇:在windows11上编译python
    前言我打算写一个系列,内容是将python注入到其他进程实现inlinehook和主动调用。本篇文章是这个系列的第一篇,后面用到的案例是注入python到PC微信实现基本的收发消息。文章着重于python方面的内容,所以对于微信找收发消息的call不会去讲过程,有兴趣的可以直接百度搜PC微信逆向。我......
  • 机器视觉在艺术鉴赏和文物修复中的应用与挑战
    机器视觉技术在艺术鉴赏和文物修复领域的应用,为文化遗产的保护和修复提供了新的可能性。这一技术不仅可以协助鉴定艺术品的真伪和年代,还可以帮助文物修复师更好地理解并修复古老的艺术品。本文将讨论机器视觉在艺术鉴赏和文物修复中的应用以及相关的挑战。艺术品真伪鉴定机器视......
  • python中predict函数参数:如何使用Python的predict函数进行机器学习预测
    示例示例predict函数是scikit-learn中的一个函数,用于预测新样本的输出结果。参数:predict函数是scikit-learn中的一个函数,用于预测新样本的输出结果。参数:1.X:array-like或spmatrix,shape=[n_samples,n_features],测试样本,其中n_samples表示样本的数量,n_features表示特征的数量。2......
  • 企业微信群机器人发送消息(三)java端如何控制
    1.先在群里添加机器人,然后获取机器人的webhook地址:假设webhook是:https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=693a91f6-7xxx-4bc4-97a0-0ec2sifa5aaa2.有多种方式发送群消息,可以采用curl,也可以采用发送http请求的方式,我这里采用okhttp发送http请求,pom如下:<!--ht......
  • 企业微信群机器人发送消息(二)机器人配置说明
    如何使用群机器人在终端某个群组添加机器人之后,创建者可以在机器人详情页看的该机器人特有的webhookurl。开发者可以按以下说明a向这个地址发起HTTPPOST请求,即可实现给该群组发送消息。下面举个简单的例子.假设webhook是:https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key......
  • 载波频率检测
    载波频率检测环PLLFrequencyDetector,锁定输入端可能有噪声的参考载波,并输出该频率的估计值,一般用于FM解调。实现原理内部实现参考《SDR中的锁相环原理及实现》,当PLL稳定后,环路滤波器中每个时刻的频率(out_i)就是检测到的频率。......
  • ABB机器人示教器转数计数器如何进行更新
    很多学员在学习和使用机器人的过程中,会遇到提示需要更新转数计数器的情况.工业机器人在出厂时,对各关节轴的机械零点进行了设定,对应着工业机器人本体上六个关节轴的同步标记,机械零点是各关节轴运动的基准。工业机器人的零点信息是指各关节轴处于机械零点位置时,各关节......
  • 记一次 .NET某新能源检测系统 崩溃分析
    一:背景1.讲故事前几天有位朋友微信上找到我,说他的程序会偶发性崩溃,一直找不到原因,让我帮忙看一下怎么回事,对于这种崩溃类的程序,最好的办法就是丢dump过来看一下便知,话不多说,上windbg说话。二:WinDbg分析1.到底是哪里的崩溃对于一个崩溃类的dump,寻找崩溃点非常重要,常用的命......
  • ABB机器人示教器中配置组输入输出
    很多学员在学习和使用机器人的过程中,会遇到一个很重要的东西,就是我们机器人要做输入输出时需要配置对应的信号。那我们配置对应信号的前提是要配置IO版。本篇文章就是基于已经配置好了DSQC652的信号板情况下的一个IO设置。注意:各位学员需要注意,并不是所有信号......