【机器学习】机器学习的基本分类-无监督学习(Unsupervised Learning)

无监督学习(Unsupervised Learning)

无监督学习是一种机器学习方法,主要用于没有标签的数据集。其目标是从数据中挖掘出潜在的结构和模式。常见的无监督学习任务包括 聚类降维密度估计异常检测


1. 无监督学习的核心目标

1.1 聚类

将数据分成多个组,使得同一组中的数据点具有更高的相似性,而不同组之间的相似性较低。

应用场景

  • 市场细分:将用户分组,提供个性化服务。
  • 图像分割:将像素划分为不同区域。

1.2 降维

通过减少特征的数量而保留尽可能多的信息,主要用于数据可视化或特征提取。

应用场景

  • 数据压缩:如主成分分析 (PCA)。
  • 数据可视化:将高维数据映射到 2D 或 3D 空间。

1.3 密度估计

估计数据的概率分布,用于理解数据生成过程。

应用场景

  • 图像生成:生成新的、类似于训练数据的图像。
  • 异常检测:检测数据集中低概率的异常点。

2. 主要算法

2.1 聚类算法

(1) K-Means

K-Means 是最常用的聚类算法,通过迭代优化,将数据分为 K 个簇。

核心步骤

  1. 初始化 K 个簇中心。
  2. 分配每个点到最近的簇中心。
  3. 更新簇中心为当前簇内点的均值。
  4. 重复步骤 2 和 3,直到收敛。

优缺点

  • 优点:简单高效,适合大数据集。
  • 缺点:对初始中心敏感,适用于凸形分布。
python 复制代码
from sklearn.cluster import KMeans
import numpy as np

# 生成数据
from sklearn.datasets import make_blobs
X, _ = make_blobs(n_samples=300, centers=4, random_state=42)

# K-Means 聚类
kmeans = KMeans(n_clusters=4, random_state=42)
kmeans.fit(X)
labels = kmeans.labels_

(2) DBSCAN

基于密度的聚类方法,能够发现任意形状的簇,同时可以自动识别噪声点。

核心思想

  1. 定义每个点的邻域(基于半径 ϵ)。
  2. 寻找核心点(邻域内有足够多点的点)。
  3. 扩展核心点形成簇。

优缺点

  • 优点:对噪声鲁棒,适合非球形数据。
  • 缺点:对参数 ϵ 和最小样本数敏感。
python 复制代码
from sklearn.cluster import DBSCAN

# DBSCAN 聚类
dbscan = DBSCAN(eps=0.5, min_samples=5)
dbscan.fit(X)
labels = dbscan.labels_

2.2 降维算法

(1) 主成分分析(PCA)

通过线性变换,将数据投影到低维空间,同时尽可能保留数据的方差。

核心步骤

  1. 计算数据的协方差矩阵。
  2. 对协方差矩阵进行特征值分解。
  3. 选择最大的 k 个特征值对应的特征向量。
python 复制代码
from sklearn.decomposition import PCA

# PCA 降维
pca = PCA(n_components=2)
X_reduced = pca.fit_transform(X)
(2) t-SNE

t-SNE 是一种非线性降维技术,特别适合高维数据的可视化。

核心思想

  • 在高维空间和低维空间中分别计算数据点对之间的相似性。
  • 通过梯度下降优化,使高维和低维空间中的相似性尽可能一致。
python 复制代码
from sklearn.manifold import TSNE

# t-SNE 降维
tsne = TSNE(n_components=2, random_state=42)
X_embedded = tsne.fit_transform(X)

2.3 密度估计

(1) 高斯混合模型(GMM)

通过混合多个高斯分布来对数据建模。每个高斯分布对应一个簇,同时计算数据属于每个簇的概率。

核心步骤

  1. 初始化每个高斯分布的参数。
  2. E 步:计算每个点属于每个分布的概率。
  3. M 步:更新高斯分布的参数。
python 复制代码
from sklearn.mixture import GaussianMixture

# GMM 聚类
gmm = GaussianMixture(n_components=4, random_state=42)
gmm.fit(X)
labels = gmm.predict(X)
(2) 核密度估计(KDE)

通过核函数(如高斯核)对数据的概率密度进行估计,适合发现数据分布中的细节。

python 复制代码
from sklearn.neighbors import KernelDensity

# KDE 密度估计
kde = KernelDensity(kernel='gaussian', bandwidth=0.5)
kde.fit(X)

3. 无监督学习的应用

3.1 聚类

  • 客户分群:细分客户群体,制定针对性策略。
  • 推荐系统:基于用户行为聚类推荐内容。

3.2 降维

  • 数据可视化:如高维基因数据的分析。
  • 特征选择:减少模型复杂度,提高训练速度。

3.3 密度估计

  • 异常检测:检测异常交易或异常行为。
  • 数据生成:生成新的、与训练数据相似的样本。

4. 无监督学习的挑战

  1. 难以评估:没有标签,难以量化结果的优劣。
  2. 算法敏感性:如 K-Means 对初始中心敏感,DBSCAN 对参数敏感。
  3. 高维数据问题:维度的增加可能导致距离度量失效("维度灾难")。

无监督学习方法强大而灵活,但通常需要结合特定的领域知识以更好地解释结果。如果需要更深入的分析或实践指导,可以进一步探讨!

相关推荐
迅易科技1 小时前
借助腾讯云质检平台的新范式,做工业制造企业质检的“AI慧眼”
人工智能·视觉检测·制造
古希腊掌管学习的神2 小时前
[机器学习]XGBoost(3)——确定树的结构
人工智能·机器学习
ZHOU_WUYI2 小时前
4.metagpt中的软件公司智能体 (ProjectManager 角色)
人工智能·metagpt
靴子学长3 小时前
基于字节大模型的论文翻译(含免费源码)
人工智能·深度学习·nlp
AI_NEW_COME4 小时前
知识库管理系统可扩展性深度测评
人工智能
海棠AI实验室4 小时前
AI的进阶之路:从机器学习到深度学习的演变(一)
人工智能·深度学习·机器学习
hunteritself4 小时前
AI Weekly『12月16-22日』:OpenAI公布o3,谷歌发布首个推理模型,GitHub Copilot免费版上线!
人工智能·gpt·chatgpt·github·openai·copilot
XH华4 小时前
初识C语言之二维数组(下)
c语言·算法
南宫生5 小时前
力扣-图论-17【算法学习day.67】
java·学习·算法·leetcode·图论
不想当程序猿_5 小时前
【蓝桥杯每日一题】求和——前缀和
算法·前缀和·蓝桥杯