【机器学习】机器学习的基本分类-无监督学习(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. 高维数据问题:维度的增加可能导致距离度量失效("维度灾难")。

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

相关推荐
m0_7345717613 小时前
深入理解人工智能 chatGPT的客户端与接入层 (Client & Access Layer)
人工智能·chatgpt
鲜于言悠90513 小时前
Transformer架构优化
人工智能
西安圣木通13 小时前
智能体时代来临:重构企业生产力,开启商业效率新范式
大数据·人工智能·重构
阿里云基础软件13 小时前
一句话看透 JVM,SysOM 诊断 Skill 新增 Java 应用诊断能力
java·开发语言·jvm·人工智能·操作系统·sysom 诊断 skill
AI情绪识别开源13 小时前
检信ALLEMOTION 认知矫正能力语音识别模型拼音准确性测试报告
人工智能·语音识别
OreDev13 小时前
模型驾驭工程(Harness Engineering)与 DeepSeek Harness 的定位
人工智能
TheBestRucy13 小时前
PyTorch 基本使用学习笔记
pytorch·笔记·学习
ouynagda13 小时前
51 单片机 LED 流水灯 + 数码管动态扫描学习笔记(STC89C52)
笔记·单片机·学习
EEET智选13 小时前
科技晨间速报 | 苹果折叠屏deepseek新模型同日发布
人工智能·科技·ai·aigc·手机