面向面试的机器学习知识点(5)——无监督学习

省流版

本文介绍无监督学习的两种最经典,也是最基础的方法:聚类(K-means)和数据降维(PCA)。这也是实际业务中用的最多的两种算法,值得深入研究。在数据分析面试和保研考研面试等环节均可能出现。

内容很长,创作不易,如果对你有帮助的话,还请三连支持~

文中部分内容来自GPT4.0创作,它已经成为了我日常工作中必不可少的生产力工具。更多教程请参见这篇博客:

GPT4.0升级使用教程​


无监督学习------聚类:目的是将数据点分组成不同的簇,使得同一簇内的数据点彼此相似,而不同簇的数据点差异较大。

K-means

原理:K均值聚类是一种常用的无监督学习算法,用于将数据集划分为K个不同的簇,每个簇中的数据点与该簇中心点最近,并且簇内的数据点相互之间的距离较小。K均值聚类的目标是最小化数据点与所属簇中心点之间的距离之和,通常是通过迭代的方式来实现。

计算方法

  1. 初始化簇中心点:随机选择K个数据点作为初始的簇中心点。
  2. 分配数据点到最近的簇中心点:对于每个数据点,计算其与每个簇中心点之间的距离,并将其分配到距离最近的簇中心点所在的簇中。
  3. 更新簇中心点:对于每个簇,计算该簇中所有数据点的均值,并将其作为新的簇中心点。
  4. 重复迭代:重复步骤2和步骤3,直到簇中心点不再发生变化,或者达到预定的迭代次数。

确定K值的方法

  1. 肘部法则(Elbow Method):这是一种直观的方法。对于不同的 K 值,计算对应的聚类误差(如 SSE,簇内平方和),然后绘制 K 与聚类误差的关系图。通常可以看到在一定 K 值后,聚类误差的下降速度会减缓,形成一个拐点,该点被认为是最佳的 K 值。
  2. 轮廓系数(Silhouette Score):轮廓系数是一种用于衡量聚类质量的指标。对于每个数据点,计算它与同簇内其他数据点的相似度,以及它与最近其他簇内数据点的相似度,然后计算轮廓系数。聚类质量通常在轮廓系数接近于 1 时最佳。
  3. Gap Statistics:Gap Statistics 方法通过与随机数据集进行比较来评估聚类质量。它计算了真实数据与随机数据之间的差异,并选择使这种差异最大化的 K 值。这种方法可以避免过拟合的风险。

距离的计算方式,以及是否能忽略量纲差异

  1. 欧氏距离:是最常用的距离度量方式之一。它衡量了两个点之间的直线距离,即空间中两点之间的距离。但是,欧氏距离没有考虑到不同特征之间的量纲差异,因此在处理具有量纲差异的数据时,可能会受到影响。
  2. 余弦距离:用于衡量两个向量之间的夹角余弦值的差异。它通常用于文本相似度计算等领域,而不适用于考虑特征之间的量纲差异的情况。
  3. **闵可夫斯基距离:**是一种通用的距离度量方法,它是欧氏距离和曼哈顿距离的一般化形式。在闵可夫斯基距离中,可以通过设置不同的参数来调整度量方式,但是它仍然不能解决特征量纲差异的问题。
  4. 马氏距离:是一种考虑了特征之间相关性和协方差的距离度量方式。它通过协方差矩阵的逆矩阵对各个特征进行归一化,从而消除了特征之间的量纲差异 ,使得距离度量更加合理和准确。因此,马氏距离是一种可以规避量纲差异的距离度量方式,特别适用于 K-means 等算法中处理具有量纲差异的数据。

K-means和KNN区别

K-means KNN
类别 聚类 分类/回归
监督 无监督 有监督
计算方法 通过优化簇内的数据点之间的距离来分割数据 通过计算样本之间的距离来确定最近的邻居,进而进行预测

Python

 # 导入所需的库
from sklearn.datasets import make_blobs
from sklearn.cluster import KMeans
import matplotlib.pyplot as plt

# 生成示例数据集
X, _ = make_blobs(n_samples=300, centers=4, cluster_std=0.60, random_state=0)

# 创建KMeans聚类器对象,设置簇的数量为4
kmeans = KMeans(n_clusters=4)

# 使用数据拟合模型
kmeans.fit(X)

# 获取簇中心点的坐标
centers = kmeans.cluster_centers_

# 获取每个数据点所属的簇标签
labels = kmeans.labels_

# 绘制数据点和簇中心点
plt.scatter(X[:, 0], X[:, 1], c=labels, cmap='viridis')
plt.scatter(centers[:, 0], centers[:, 1], marker='o', s=200, color='red')
plt.show()

无监督学习------数据降维

PCA(主成分分析)

维数灾难

  1. 维数灾难泛指在处理高维数据时所产生的问题。当数据真的很高维的时候(特征很多的时候),高维空间里的数据互相之间将有着相似的距离。也就是是没有谁和谁更近,谁和谁更远的概念了。距离的概念在高维空间久失效了,这也就意味着,需要更多更多的样本,才能得到永阳的确定性。
  2. 随着特征的数量上升,那么数据的可能性(组合)也随之上升,使用固定百分比训练数据也以几何速度增长。
  3. 随着数据的维度上升,收敛速率会大幅度下降

降维的目的是什么

  1. 保留下最重要的一些特征,去除噪声和不重要的特征,从而提升数据处理速度
  2. 在实际的生产和应用中,降维在定的信息损失范围内,可以为我们节省大量的时间和成本
  3. 优点:
  • 使得数据集更易使用
  • 降低算法的计算开销
  • 去除噪声
  • 使结果更易理解

PCA原理

  1. PCA旨在找到数据中的主成分,并利用这些主成分表征原始数据,从而达到降维的目的
  2. 原理
    1. 最小化平方误差(样本点到超平面的垂直距离足够近)
    2. 最大化投影方差(让数据在主轴上投影的方差尽可能大)
  3. 做法:数据中心化之后,对样本数据协方差矩阵进行特征分解,选取前d个最大的特征值对应的特征向量,即可将数据从原来的p维降到d维,也可根据奇异值分解来求解主成分

具体计算步骤

  1. 对数据进行归一化处理
  2. 计算归一化后的数据集的协方差矩阵;
  3. 计算协方差矩阵的特征值和特征向量;
  4. 保留最重要的k个特征(通常k要小于n);
  5. 找出k个特征值相应的特征向量
  6. n的数据集乘以k个n维的特征向量的特征向量(nk),得到最后降维的数据。

PCA的第一、第二主成分分别是什么?怎么确定?

  1. 第一主成分和第二主成分:是通过线性变换从原始数据中提取出来的新的特征向量。这些主成分是按照数据中的方差递减的顺序排列的,因此第一主成分包含最大的方差,第二主成分包含次大的方差
  2. 怎么确定:通过对原始数据的协方差矩阵进行特征值分解。特征值分解将协方差矩阵分解为特征向量和特征值的乘积。特征向量对应于协方差矩阵的主轴方向,而特征值表示在每个主轴方向上的方差大小。
  3. 具体步骤
    1. 投影数据:将原始数据投影到所选的主成分上,得到降维后的数据。
    2. 选择主成分:按照特征值的大小,选取最大的 k 个特征值对应的特征向量作为主成分。通常选择的主成分数取决于希望保留的信息量或者维度的目标。
    3. 特征值分解:对协方差矩阵进行特征值分解,得到特征值和对应的特征向量。
    4. 计算协方差矩阵:然后,计算标准化后的数据的协方差矩阵。
    5. 标准化数据:首先,将原始数据标准化,使得每个特征的均值为0,方差为1。

PCA算法的优缺点

优点

  • 降维: PCA可以有效地降低数据的维度,从而减少数据集中的冗余信息和噪声,简化了数据的复杂度。
  • 提取特征: PCA能够发现数据中的主要特征和结构,帮助识别数据中的模式和变化,从而提高了数据的可解释性。
  • 减少计算复杂度: PCA通过特征值分解等数学方法,可以将原始数据转换为主成分,减少了数据处理和计算的复杂度。
  • 降低过拟合风险: 降低数据的维度可以减少模型的复杂度,从而降低了过拟合的风险,提高了模型的泛化能力。
  • 去相关性: PCA通过将原始特征进行线性组合,可以减少特征之间的相关性,有助于消除多重共线性问题。

缺点

  • 信息损失: 降维可能会导致信息的损失,特别是当选择较低的维度时,可能无法保留原始数据的所有信息。
  • 线性限制: PCA是一种线性降维方法,只能发现数据中的线性关系,对于非线性关系的数据降维效果可能不佳。
  • **变量分布:**PCA假设变量服从高斯分布,当变量不服从高斯分布(如均匀分布)时,会发生尺度缩放与旋转。
  • 可解释性差: PCA得到的主成分通常是原始特征的线性组合,这些主成分可能不易解释,降低了模型的可解释性。

PCA算法使用场景

    1. **非监督式的数据集:**它是一种非监督式的降维方法,因此适用于不带有标签的数据集,对于带有标签的可以采用LDA
    2. **根据方差自主控制特征数量:**最大的主成分的数量会小于或等于特征的数量,即,PCA可以输出全部的特征,具体取决于选择特征中解释的方差比例。
    3. **更少的正则化处理:**选择较多的主成分将导致更少的平滑,因为能保留很多特征,减少正则化。
    4. **数据量较大的数据集:**数据量大指数据记录多和维度多两种情况,PCA对大型数据集的处理效率高。
    5. 数据分布是位于相同平面上,数据中存在线性结构

总结

本文介绍无监督学习的两种最经典,也是最基础的方法:聚类(K-means)和数据降维(PCA)。这也是实际业务中用的最多的两种算法,值得深入研究。在数据分析面试和保研考研面试等环节均可能出现。

内容很长,创作不易,如果对你有帮助的话,还请三连支持~

文中部分内容来自GPT4.0创作,它已经成为了我日常工作中必不可少的生产力工具!但我了解到部分朋友还不清楚怎么开通和升级正版GPT,给大家分享一个我和周围同事都在用的GPT升级方法,参见下方博客:

GPT4.0升级使用教程

相关推荐
Robot251几秒前
浅谈,华为切入具身智能赛道
人工智能
只怕自己不够好5 分钟前
OpenCV 图像运算全解析:加法、位运算(与、异或)在图像处理中的奇妙应用
图像处理·人工智能·opencv
果冻人工智能1 小时前
2025 年将颠覆商业的 8 大 AI 应用场景
人工智能·ai员工
代码不行的搬运工1 小时前
神经网络12-Time-Series Transformer (TST)模型
人工智能·神经网络·transformer
石小石Orz1 小时前
Three.js + AI:AI 算法生成 3D 萤火虫飞舞效果~
javascript·人工智能·算法
罗小罗同学1 小时前
医工交叉入门书籍分享:Transformer模型在机器学习领域的应用|个人观点·24-11-22
深度学习·机器学习·transformer
孤独且没人爱的纸鹤1 小时前
【深度学习】:从人工神经网络的基础原理到循环神经网络的先进技术,跨越智能算法的关键发展阶段及其未来趋势,探索技术进步与应用挑战
人工智能·python·深度学习·机器学习·ai
阿_旭1 小时前
TensorFlow构建CNN卷积神经网络模型的基本步骤:数据处理、模型构建、模型训练
人工智能·深度学习·cnn·tensorflow
羊小猪~~1 小时前
tensorflow案例7--数据增强与测试集, 训练集, 验证集的构建
人工智能·python·深度学习·机器学习·cnn·tensorflow·neo4j
极客代码2 小时前
【Python TensorFlow】进阶指南(续篇三)
开发语言·人工智能·python·深度学习·tensorflow