题解
题面描述
已知一个包含 N 个样本、每个样本有 M 个特征以及对应的类别标签的数据集。要求基于有监督的度量学习算法(即线性判别分析 LDA 的思想),计算样本之间的距离矩阵,并按照如下步骤进行:
- 读取数据
输入包含第一行两个整数 N 和 M,接下来 N 行每行包含 M+1 个数,其中前 M 个为特征值,最后一个为类别标签。
题目内容
在天文观测中,天文学家获得了 N 颗恒星的记录,每颗恒星有 M 个物理特征(如温度、光度等)以及一个类型标签。为了研究恒星的演化关系,需要在一个新的特征空间中计算恒星之间的欧氏距离矩阵,使得同类恒星的投影尽量聚集,不同类恒星的投影尽量远离。
请完成以下步骤:
- 读取恒星数据,计算每个类型的特征均值向量 μc 和全部样本的全局均值 μ。
- 计算类内差异矩阵 Sw=∑c∑x∈c(x−μc)(x−μc)T 和类间差异矩阵 Sb=∑cNc(μc−μ)(μc−μ)T,其中 Nc 为类型 c 的样本数。
- 对 Sw−1Sb 进行特征分解,将特征值从大到小排序,取前 K=C−1 个最大特征值对应的特征向量构成投影矩阵 P,其中 C 为类型总数。若 Sw 奇异,则添加正则化项 ϵI(ϵ=10−6)以确保可逆。
- 利用投影矩阵将原始特征映射至新空间:Y=XP。
- 在新空间中计算两两恒星之间的欧氏距离,得到 N×N 的距离矩阵 D,其中 Dij=∥yi−yj∥2。