【自学笔记】无监督学习

server/2024/11/19 14:47:12/

文章目录

  • 简述
  • 聚类 (Cluster learning)
    • K-means
  • 异常检测
    • 密度估计
    • 一些技巧

简述

  无监督学习(Unsupervised Learning)是机器学习的一种方法,其特点是不依赖于事先标记的训练数据。在无监督学习中,算法尝试直接从数据中学习模式或结构,而不需要任何预先定义的输出标签。这种方法的主要目的是发现数据的内在结构、模式或特征,通常用于数据分析、数据挖掘和探索性研究。
  无监督学习的主要应用场景和方法包括:
  (1)聚类(Clustering):将数据集中的对象按照某种相似性标准分成不同的组或簇。常见的聚类算法包括 K-means 聚类、层次聚类(Hierarchical Clustering)和 DBSCAN(Density-Based Spatial Clustering of Applications with Noise)
  (2)降维(Dimensionality Reduction):减少数据集的特征数量,同时保留数据的主要信息。这有助于数据可视化和提高模型的计算效率。常见的降维算法包括主成分分析(Principal Component Analysis, PCA)、线性判别分析(Linear Discriminant Analysis, LDA)和 t-分布随机邻域嵌入(t-SNE)
  (3)关联规则学习(Association Rule Learning):发现数据集中项之间的关系或模式。常见的算法包括 Apriori 算法和 Eclat 算法。
  (4)密度估计(Density Estimation):估计数据的概率分布。常见的方法包括高斯混合模型(Gaussian Mixture Models, GMM)和核密度估计(Kernel Density Estimation, KDE)。
  (x)应用:市场细分、异常检测、推荐系统、自然语言处理和图像分割等

聚类 (Cluster learning)

  聚类算法是一种无监督学习方法,用于将数据集中的数据点分组为若干个簇(clusters),使得同一簇内的数据点彼此相似,而不同簇之间的数据点相异。

K-means

  最近学代数分析学魔怔了,实战一下:
  (0)假设每个样本点 X ( i ) ∈ V = V 1 × V 2 × . . . × V n X^{(i)} \in V =V_{1} \times V_{2} \times ... \times V_{n} X(i)V=V1×V2×...×Vn i ∈ I = { 1 , 2 , . . . , m } i \in I =\left \{ 1, 2, ..., m \right \} iI={1,2,...,m}
  (1)随机挑选 k k k个点 Y ( j ) ∈ V Y^{(j)} \in V Y(j)V j ∈ J = { 1 , 2 , . . . , k } j \in J = \left \{ 1, 2, ..., k \right \} jJ={1,2,...,k}作为虚拟簇中心
  (2)为每个样本点作标记,标记为最近的簇中心,假设 V V V上的度量为 d d d

L : V → J , X ↦ m i n { i ∈ J ∣ ∀ j ∈ J , d ( X , Y ( i ) ) ≤ d ( X , Y ( j ) ) } L : V \to J, X \mapsto min\left \{i \in J|\forall j \in J, d(X,Y^{(i)}) \le d(X,Y^{(j)}) \right \} L:VJ,Xmin{iJ∣∀jJ,d(XY(i))d(XY(j))}
这里用 m i n min min避免了可能存在多个满足的最近簇中心,用随机选取的方式也是可以的。

  (3)我们将标记相同的样本点构成的集合称为

j ∈ J , C ( j ) : = { X ∈ { X ( 1 ) , . . . , X ( n ) } ∣ L ( X ) = j } j \in J, \ C^{(j)} := \left \{X \in \left \{X^{(1)},...,X^{(n)} \right \} | L(X) = j \right \} jJ, C(j):={X{X(1),...,X(n)}L(X)=j}

  (4)定义点到簇的度量为:

D ( Y , C ) : = { 1 ∣ C ∣ ∑ X ∈ C d ( X , Y ) i f C ≠ ϕ ; + ∞ i f C = ϕ D(Y, C) := \left\{\begin{matrix} \frac{1}{|C|}\sum_{X \in C} d(X, Y) & if \ C \ne \phi; \\ +\infty & if \ C = \phi \end{matrix}\right. D(Y,C):={C1XCd(X,Y)+if C=ϕ;if C=ϕ
这里 ∣ C ∣ < + ∞ |C|<+\infty C<+表示 C C C中元素数量

  (5)将虚拟簇中心更新为当前簇的实际中心,簇在度量 d d d下的实际中心为:

Y ( j ) ′ ∈ V Y^{(j)'} \in V Y(j)V,满足  ∀ Y ∈ V \forall Y \in V YV, D ( Y ( j ) ′ , C ( j ) ) ≤ D ( Y , C ( j ) ) D(Y^{(j)'}, C^{(j)}) \le D(Y, C^{(j)}) D(Y(j),C(j))D(Y,C(j))
可能存在多个满足的点,我们随机取一个即可。

  (6)由于虚拟簇中心变化,每个样本点标记可能也发生了变化,回到步骤(2),直至没有样本点的标记发生变化。

  (7)最终,所有样本点被分成了 K K K个簇,实现了聚类。
  (8)总距离可以作为评估模型的损失函数,定义为:

J = ∑ i = 1 k D ( Y ( i ) , C ( i ) ) J = \sum_{i=1}^{k} D(Y^{(i)}, C^{(i)}) J=i=1kD(Y(i),C(i))

  此外还有一些可以选择的细节:
  (1)初始的虚拟簇中心可以直接在样本点中随机挑选,而不是在整个空间中随机。
  (2)停止条件可以放宽,如当 J J J下降幅度小于某个临界时就停止,来减少训练成本
  (3)多次运行K-mean可能会得到不一样的结果,我们可以选择其中分布较均匀的一次,或者 J J J最小的一次
  (4)肘部法则(Elbow Method):选择合适的聚类个数 k k k,我们可以绘制 J − k J-k Jk图像,然后选择图像开始显著变平的端点

异常检测

  异常检测算法是一种用于识别数据集中不符合预期模式或行为的观测值或事件的技术。

密度估计

  密度估计(Density Estimation)是统计学和机器学习中的一种技术,用于从数据集中估计未知的概率密度函数。给定一个界限 0 ≤ ϵ ≤ 1 0\le\epsilon\le1 0ϵ1,如果某数据点出现的概率 p ( x ) < ϵ p(x) < \epsilon p(x)<ϵ,那么认为它是异常数据。
  假设数据理论呈高斯分布,我们用已有数据去拟合出高斯曲线:

样本集 X = ( x ( i ) ) i = 1 n X = (x^{(i)})_{i=1}^{n} X=(x(i))i=1n,样本点 x ( i ) = ( x j ( i ) ) j = 1 m x^{(i)} = (x^{(i)}_{j})_{j=1}^{m} x(i)=(xj(i))j=1m
对于特征 j j j μ j = 1 n ∑ i = 1 n x j ( i ) \mu_{j} = \frac{1}{n}\sum_{i=1}^{n}x^{(i)}_{j} μj=n1i=1nxj(i) σ j = 1 n ∑ i = 1 n ( x j ( i ) − μ j ) 2 \sigma_{j}=\frac{1}{n}\sum_{i=1}^{n}(x_{j}^{(i)}-\mu_{j})^{2} σj=n1i=1n(xj(i)μj)2
高斯分布为: P ( x j ; μ j , σ j 2 ) = 1 2 π σ j 2 e − ( x j − μ j ) 2 2 σ j 2 P(x_{j};\mu_{j},\sigma_{j}^{2})=\frac{1}{\sqrt{2\pi \sigma_{j}^{2}}}e^{-\frac{(x_{j}-\mu_{j})^{2}}{2\sigma_{j}^{2}}} P(xj;μj,σj2)=2πσj2 1e2σj2(xjμj)2
样本点 x ( i ) x^{(i)} x(i)出现概率为: P ( x ( i ) ) = ∏ j = 1 m P ( x j ( i ) ; μ j , σ j 2 ) P(x^{(i)}) = \prod_{j=1}^{m}P(x_{j}^{(i)};\mu_{j},\sigma_{j}^{2}) P(x(i))=j=1mP(xj(i);μj,σj2)    ( ∗ ) (*) ()

  细心的朋友可能发现了一个问题,式子 ( ∗ ) (*) ()必须要在特征之间完全独立的情况下才能满足。对于不完全独立的情况,我们可以引入协方差矩阵来解决,这种优化后的分布被称为多元高斯分布

协方差矩阵 ∑ \sum 是一个 m × m m \times m m×m的矩阵:
在这里插入图片描述
其中, ∑ i j \sum_{ij} ij表示特征 i i i和特征 j j j之间的协方差, ∑ i i = σ i 2 \sum_{ii}=\sigma_{i}^{2} ii=σi2

均值向量 μ \mu μ是一个 m m m维向量:
在这里插入图片描述
则多维高斯分布概率密度曲线为: P ( x ; μ , ∑ ) = 1 ( 2 π ) m / 2 ∣ ∑ ∣ 1 / 2 e − 1 2 ( x − μ ) T ∑ − 1 ( x − μ ) P(x;\mu,\sum)=\frac{1}{(2\pi)^{m/2}|\sum|^{1/2}}e^{-\frac{1}{2}(x-\mu)^{T}\sum^{-1}(x-\mu)} P(x;μ,)=(2π)m/21/21e21(xμ)T1(xμ)

一些技巧

  (1)我们可以对数据进行转化(如取对数,取幂次等),来让特征更接近高斯分布(more gaussian)
  (2)我们可以通过已有的特征来创建新特征(如相加,取比值等),来检测多特征的异常。


http://www.ppmy.cn/server/143210.html

相关文章

【机器学习】从马尔可夫链到CRF:全方位解析序列建模的核心技术

&#x1f497;&#x1f497;&#x1f497;欢迎来到我的博客&#xff0c;你将找到有关如何使用技术解决问题的文章&#xff0c;也会找到某个技术的学习路线。无论你是何种职业&#xff0c;我都希望我的博客对你有所帮助。最后不要忘记订阅我的博客以获取最新文章&#xff0c;也欢…

(Ubuntu)添加用户并授予sudo权限

在 Ubuntu 中&#xff0c;可以使用 adduser 命令来新建用户。 以下是步骤和说明&#xff1a; 1.打开终端&#xff1a; 可以通过按下 Ctrl Alt T 来打开终端&#xff0c;或者在应用程序菜单中搜索并打开“终端”。 2.使用 adduser 命令&#xff1a; 在终端中输入以下命令&a…

Android OpenGL ES详解——实例化

目录 一、实例化 1、背景 2、概念 实例化、实例数量 gl_InstanceID 应用举例 二、实例化数组 1、概念 2、应用举例 三、应用举例——小行星带 1、不使用实例化 2、使用实例化 四、总结 一、实例化 1、背景 假如你有一个有许多模型的场景&#xff0c;而这些模型的…

H.265流媒体播放器EasyPlayer.js播放器出现加载视频等待画面时长过长的原因排查

在数字媒体时代&#xff0c;用户体验是衡量播放器性能的关键指标之一。EasyPlayer.js网页web无插件播放器作为一款流行的Web视频播放器&#xff0c;其加载速度和响应时间直接影响着用户的观看体验。 1、问题描述 加载视频等待画面时长过长。 2、可能的原因&#xff1a; 检查下…

将分割标签数据从JSON格式转换为YOLOv8的TXT格式

AnyLabeling是一款突破性的开源图像标注工具。 一、主要功能与特点 融合传统标注工具优点&#xff1a;AnyLabeling结合了LabelImg和Labelme等传统标注软件的优点&#xff0c;提供了多边形、矩形、圆形、线条和点等多种标注形式&#xff0c;满足不同场景的需求。强大的AI自动标…

简单爬虫的实现

以下是一个简单爬虫代码的实现&#xff1a; import requests from bs4 import BeautifulSoup# 生成一个包含多个网页 URL 的列表 # 这里我们构造了 50 个页面的 URL&#xff0c;假设网站有多页内容&#xff0c;页数从 1 到 50 urls [f"https://www.cnblogs.com/#p{i}&qu…

Python学习随笔(BSON数据格式 Python库的相对导入 文档字符串注释 Python中类的静态方法定义)

文章目录 前言BSON数据格式库的相对导入文档字符串注释类的静态方法 前言 博主写一篇质量相对比较好好的博文还是很费时间的&#xff0c;因为往往好的博文都需要非常精心构思&#xff0c;需要有大量的内容&#xff0c;并且对这些内容的结构进行非常详细的梳理&#xff0c;然后…

SQL MID() 函数详解

SQL MID() 函数详解 SQL 中的 MID() 函数是一个非常有用的字符串处理工具&#xff0c;它允许用户从字符串中提取特定位置的子字符串。这个函数在数据库查询和报告中特别有用&#xff0c;尤其是在需要从较长的文本字段中提取特定信息时。本文将详细介绍 MID() 函数的用法、参数…