第12讲:无监督学习与大数据计算方法

无监督学习与大数据计算方法

本讲把“从无标签数据中发现结构”和“在大规模数据环境中完成计算”放在一起讨论。无监督学习关注在没有预先类别标记的情况下发现样本分组、变量结构和低维表示;并行、分布式与云计算则回答另一个现实问题:当数据规模、变量维度和模型迭代成本上升时,如何组织计算资源,让数据分析能够真正运行起来。

一、无监督学习的基本问题

在许多现实场景中,我们并没有足够的先验知识来给样本标注类别,或者人工标注的成本过高。此时需要计算机根据数据本身的结构提供帮助。根据类别未知、没有标记的训练样本来解决模式识别和数据分析问题的方法,称为无监督学习

无监督学习常见任务包括:

  • 聚类分析:把相似对象分到同一组,使组内相似、组间差异明显;
  • 主成分分析:用少数综合变量概括原始变量中的主要信息;
  • 因子分析:用少数不可直接观测的公共因子解释多个观测变量之间的相关结构;
  • 典型相关分析:研究两组变量之间的整体相关关系。

这些方法的共同点是:不先给定标签,而是从数据矩阵自身寻找结构。

二、问题情境

无监督学习通常从“如何概括复杂数据”出发。

例如,已知 18 种花卉,并测得是否能过冬、是否生长在阴暗环境、是否有块茎、花卉颜色、土壤类型、个人偏好、花卉高度和间隔距离等 8 个指标。若希望把这些花卉分成若干类,核心问题就是:应该聚成几类?每一类包含哪些花卉?分类依据是什么?

再如,使用 R 中的 USArrests 数据集分析 1973 年美国 50 个州的犯罪率指标,变量包括谋杀、暴力、强奸犯罪逮捕率和城市人口比例。如果希望用更少的综合变量评价各州犯罪率水平,就需要主成分分析。

如果观察某班学生的数学、物理、化学、语文、历史、英语成绩,并希望判断成绩结构更偏文科还是理科,可以用因子分析寻找隐藏在各科成绩背后的公共能力维度。

如果一组变量描述身体形态,如年龄、体重、胸围和日抽烟量,另一组变量描述健康状况,如脉搏、收缩压和舒张压,则可以用典型相关分析研究两组变量之间的整体联系。

三、聚类分析

聚类分析是数据科学中的基础工具,在信息检索、生物学、心理学、医学、商业客户细分等领域都有广泛应用。其目标是让同一类中的对象尽可能相似,不同类之间尽可能不同。

聚类可以分为:

  • Q 型聚类:对样品进行聚类,是最常见的聚类任务;
  • R 型聚类:对变量进行聚类,用于发现变量之间的相似结构。

设共有 $n$ 个观测,希望划分为 $K$ 类,可用

\[C=\{C_1,C_2,\cdots,C_K\}\]

表示类别集合。合理的聚类结果通常满足“不重不漏”:每个观测至少属于一类,不同类别之间没有重复样本。

四、相异度与距离

聚类首先需要回答“如何衡量两个对象是否相似”。最常见的衡量方式是距离或相异度。

数值型数据

数值型变量常用明考夫斯基距离:

\[d_{ij}=\left(\sum_{k=1}^{p}|X_{ik}-X_{jk}|^q\right)^{1/q}, \quad q>0\]

当 $q=1$ 时是绝对距离;当 $q=2$ 时是欧氏距离;当 $q=\infty$ 时对应切比雪夫距离。

马氏距离进一步考虑变量之间的协方差结构:

\[d_{ij}^{2}=(X_i-X_j)'\Sigma^{-1}(X_i-X_j)\]

它的优点是能够减弱量纲影响,并考虑变量相关性。

余弦相似度关注向量方向而非绝对大小,常用于文本、推荐和高维稀疏数据:

\[\cos(X_i,X_j)=\frac{X_i'X_j}{\|X_i\|_2\|X_j\|_2}\]

分类型和有序数据

对于二元变量,可以根据两个观测在各变量上共同为 1、共同为 0 或不一致的数量来构造相异度。对于名义变量,可以使用简单匹配方法。对于有序变量,通常先把有序等级映射到 $[0,1]$ 区间,再用连续变量距离计算。

距离选择会直接影响聚类结果。变量量纲差异较大时,通常需要先做标准化。

五、K-means 聚类

K-means 是最常用的划分式聚类方法。它需要预先指定类别数 $K$,目标是让每一类内部的差异尽可能小。算法基本步骤为:

  1. 给定类数 $K$,随机初始化每个观测的类别;
  2. 分别计算每一类的类中心;
  3. 计算每个观测到各类中心的距离;
  4. 将观测重新分配给距离最近的类;
  5. 重复计算类中心和重新分配,直到类别不再明显变化。

K-means 的优点是思想简单、计算效率较高,适合较大规模数据。局限在于:需要事先给定 $K$,对初始值敏感,对异常值也比较敏感。

六、系统聚类

系统聚类,也称层次聚类,不需要一开始就固定最终类别数。它通常从每个观测各自成类开始,逐步合并最相似的类别,并形成谱系图。

常见类间距离包括:

  • 最短距离法:取两类样本两两距离中的最小值;
  • 最长距离法:取两类样本两两距离中的最大值;
  • 重心法:比较两个类中心之间的距离;
  • 类平均法:取两类样本两两距离的平均值。

系统聚类的优点是可以展示从细到粗的多层分类结构,便于解释类别形成过程。缺点是计算复杂度较高,通常不适合非常大的样本量。

K-means 和系统聚类都以距离远近为基础。实践中可以先用系统聚类观察可能的类别数,再用 K-means 对大样本进行稳定划分。

七、主成分分析

主成分分析(Principal Component Analysis, PCA)的基本思想是:把原来的多个指标线性组合成少数几个新的、互不相关的综合指标,并尽可能保留原始变量中的主要信息。

如果原始变量很多,且变量之间存在较强相关性,直接建模可能出现冗余和多重共线性。PCA 通过寻找方差最大的方向,把数据投影到新的坐标轴上。变量的变异性越大,说明它包含的信息越多。

PCA 的作用包括:

  • 降低变量维度;
  • 消除或缓解多重共线性;
  • 便于可视化高维数据;
  • 为后续回归、分类、聚类提供更紧凑的特征表示。

在主成分回归中,可以用少数主成分替代大量原始变量拟合模型。这样既保留了大部分数据信息,又减少了需要估计的参数数量,有助于减轻过拟合。

八、因子分析

因子分析希望用少数公共因子解释多个观测变量之间的相关结构。设

\[X=(X_1,X_2,\cdots,X_p)'\]

是 $p$ 维随机向量,因子分析模型可写为:

\[X=AF+\varepsilon\]

其中,$F=(F_1,F_2,\cdots,F_m)’$ 是不可直接观测但客观存在的公共因子,$\varepsilon$ 是特殊因子,$A$ 是因子载荷矩阵。

常见估计方法包括:

  • 主成分法:从总体方差出发,尽可能让公共因子解释原始变量变异;
  • 主轴因子法:从相关系数矩阵出发,解释变量之间的相关结构;
  • 极大似然法:在正态分布假设下估计因子载荷和特殊因子方差。

因子分析常用于心理测量、教育评价、用户画像、问卷量表和综合指标构建。

九、典型相关分析

典型相关分析用于研究两组变量之间的整体相关关系。设两组随机向量为:

\[X^{(1)}=(X_1^{(1)},X_2^{(1)},\cdots,X_p^{(1)})\]

\[X^{(2)}=(X_1^{(2)},X_2^{(2)},\cdots,X_q^{(2)})\]

典型相关分析会分别寻找两组变量的线性组合:

\[U=a'X^{(1)}, \quad V=b'X^{(2)}\]

使 $U$ 与 $V$ 的相关程度最大。它不是逐一比较单个变量之间的相关系数,而是从整体上分析两组变量的联系。

一般步骤包括:

  1. 对原始数据进行标准化;
  2. 构造两组变量的线性组合;
  3. 计算典型相关系数;
  4. 进行显著性检验;
  5. 解释典型变量与原始变量之间的关系。

十、大数据时代的计算需求

无监督学习常常用于探索复杂数据结构。当数据进入大数据场景后,计算问题会变得同样重要。大数据通常具有四个特征:

  • Volume:数据量大,可能达到 TB、PB 甚至更高量级;
  • Variety:类型繁多,包括日志、音频、视频、图片、地理位置等;
  • Value:价值密度低,需要通过算法提纯信息;
  • Velocity:产生和更新速度快,对处理时效要求高。

简单地说,大量数据需要计算资源支撑。数据科学不仅要会建模,还要理解计算平台如何影响数据处理效率。

十一、并行计算

并行计算是同时使用多种计算资源解决同一计算问题的过程。其基本思想是把问题分解为若干部分,让多个处理器或工作节点协同完成。

并行计算可分为:

  • 数据并行:同一任务作用于不同数据块;
  • 任务并行:不同任务同时运行。

在 R 中,可以通过 parallelforeachdoParallel 等包实现并行计算。一般流程为:

  1. 建立若干工作节点;
  2. 初始化每个进程;
  3. 将数据和所需函数传输到工作节点;
  4. 把任务分割给不同节点计算;
  5. 合并整理各节点结果;
  6. 关闭工作节点。

并行计算适合重复模拟、交叉验证、批量模型训练、矩阵运算和大规模排序等任务。但并行并不总是越多越快,数据传输、节点初始化和结果合并也会产生额外开销。

十二、分布式计算

分布式计算与集中式计算相对。它把一个大型任务分解成许多较小部分,分配给多台计算机处理,从而节约整体计算时间并提高效率。

分布式计算的核心优势包括:

  • 稀有计算资源可以共享;
  • 多台计算机可以平衡计算负载;
  • 程序可以放在最适合运行它的计算机上;
  • 可以处理单机难以承载的大规模问题。

网格计算是分布式计算的一种形式,其本质是组合、共享资源,并确保系统安全。开放分布式计算架构强调可移植性和可裁剪性。

十三、Hadoop、HDFS 与 MapReduce

Hadoop 是支持数据密集型分布式应用的开源软件框架,适合在商品硬件构成的大型集群上运行。它的设计来源包括 Google 文件系统和 MapReduce 论文。

Hadoop 的关键思想是:硬件故障是常见情况,框架应自动处理可靠性和数据移动问题。

Hadoop 平台通常包括:

  • Hadoop 核心;
  • HDFS 分布式文件系统;
  • MapReduce 编程模型;
  • Hive、HBase 等相关生态项目。

HDFS 负责把数据分布式存储在多个节点上。经典 HDFS 架构包括 NameNode、Secondary NameNode 和 DataNode。

MapReduce 是一种面向键值记录的数据处理模型,主要包括 Map 和 Reduce 两个阶段,中间经过 shuffle 和 sort。它适合批处理任务,但对于需要多轮迭代的机器学习算法,效率可能受到磁盘读写影响。

十四、Spark

Apache Spark 是面向大规模数据处理的快速通用计算引擎。它与 Hadoop MapReduce 相比,一个重要优势是中间结果可以保存在内存中,减少反复读写 HDFS 的成本。

因此,Spark 更适合:

  • 数据挖掘;
  • 机器学习;
  • 交互式分析;
  • 需要多轮迭代的算法。

Spark 使用分布式数据集抽象,使开发者能够以接近本地集合操作的方式处理分布式数据。

十五、云计算

云计算可以理解为分布式处理、并行处理和网格计算的进一步发展及商业化实现。它通过互联网把计算、存储、网络和软件能力作为服务提供给用户。

云计算的特点包括:

  • 数据在云端,便于备份、恢复和跨设备访问;
  • 软件在云端,便于统一升级;
  • 计算能力可以按需扩展;
  • 用户不必自行建设完整 IT 基础设施。

常见服务方式包括:

  • SaaS:软件即服务,如网盘、协作工具、项目管理系统;
  • PaaS:平台即服务,如数据库服务、Web 应用平台、容器服务;
  • IaaS:基础设施即服务,如虚拟机、虚拟网络和存储资源。

典型云计算厂商包括 AWS、Azure、阿里云和腾讯云。

十六、小结

无监督学习帮助我们在无标签数据中发现结构:聚类分析关注样本分组,主成分分析关注降维和信息压缩,因子分析关注潜在公共因素,典型相关分析关注两组变量的整体关系。

并行、分布式和云计算则帮助我们把这些方法放到更大规模的数据环境中运行。数据科学实践不仅需要理解算法,还需要理解数据量、计算资源、存储架构和任务拆分方式之间的关系。

课后练习

  1. 选择一个包含多个数值变量的数据集,分别使用 K-means 和系统聚类进行分析,比较类别结果是否一致。
  2. 使用 USArrests 数据集做主成分分析,解释前两个主成分的含义。
  3. 思考 PCA 和因子分析的区别:二者都能降维,但它们关注的问题是否相同?
  4. 用自己的语言解释并行计算和分布式计算的差异,并举一个适合并行处理的数据科学任务。
  5. 查阅 Hadoop MapReduce 和 Spark 的基本资料,说明为什么 Spark 更适合迭代式机器学习任务。