文章目录
- 简述
- 聚类 (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 \} i∈I={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 \} j∈J={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:V→J,X↦min{i∈J∣∀j∈J,d(X,Y(i))≤d(X,Y(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 \} j∈J, 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):={∣C∣1∑X∈Cd(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 ∀Y∈V, 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 J−k图像,然后选择图像开始显著变平的端点
异常检测
异常检测算法是一种用于识别数据集中不符合预期模式或行为的观测值或事件的技术。
密度估计
密度估计(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=n1∑i=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=n1∑i=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πσj21e−2σ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/2∣∑∣1/21e−21(x−μ)T∑−1(x−μ)
一些技巧
(1)我们可以对数据进行转化(如取对数,取幂次等),来让特征更接近高斯分布(more gaussian)
(2)我们可以通过已有的特征来创建新特征(如相加,取比值等),来检测多特征的异常。