维度降低
维度降低 — 动机
● 高维度 = 高数量的数据特征
■ ("质量") — 数据点的数量
■ ("体积") — 由维度描述的数据空间
➜ 高维数据迅速变得非常稀疏!
● 许多特征和数据稀疏性的影响
■ 更高的计算成本
■ 对任何需要统计显著性的方法都是问题 ➜ 高风险的过拟合
(“好”的数据点和噪声/异常值看起来越来越无法区分)
■ 掩盖了数据点之间的相似性
(在低维度中相似但在高维度中不相似的点)
维度的诅咒
● 高维度的效应(即,许多特征)
■ 数据点往往永远不会靠得很近
■ 点与点之间的平均距离趋于收敛
● 直观
■ 假设有 个数据点均匀分布 在一个具有
维度的单位立方体内
■ 设 为包含数据点的
的最小立方体的边长
这个包含 的立方体几乎是整个单位立方体!
在1,000个随机数据点和不同数量的维度之间的成对距离分布
维度降低 — 特征选择
● 特征选择 — 分析前的特征移除 (或者说:只保留某些特征子集)
● 常见的特征选择
■ 基于专家知识移除"不重要"的特征 (例如,一个人的出生日期不太可能影响他/她的消费行为)
■ 移除可能引入伦理偏见的特征 (例如,信用卡批准的性取向和种族)
■ 移除方差非常低的特征 ➜ 没有用
■ 移除与其他特征强相关的特征 ➜ 不需要 (基本方法:计算成对关联并在高关联情况下移除其中一个特征)
■ 根据其区分数据点的能力移除排名较低的特征 (决策树的基本方法,根节点附近的特征产生更纯净的子树)
特征选择 — 优缺点
● 优点
■ 实施相对直接
■ 不改变特征本身 ➜ 分析结果的影响得以保留
● 缺点
■ 基于专家知识选择重要特征通常不是简单/明显的
■ 找到有意义的阈值 — 例如,最小方差或关联 — 不明显
维度降低 — 特征提取
● 特征提取 — 基本思想
■ 生成新特征作为原始特征的总结形式
■ 特征提取算法利用特征之间的区分能力和相关性
特征提取步骤
● 从2维降至1维
● 几乎没有信息损失
主成分分析 (PCA)
● PCA — 通过线性变换实现维度降低
■ 新的输出特征是原始输入特征的线性组合
■ 将数据转换到新的坐标系统
■ 无监督方法(与任何种类的类标签无关)
● 基本设置
■ 数据集 (有
个样本,
个特征)
■ 找到矩阵 将
转换为
维数据集(
)
PCA — 使用简单变换的直观理解
PCA — 寻找变换的等效目标
最小化残差
注意:这两个优化目标 是等效的,其中最大化变换后点的方差更容易处理
最大化变换后点的方差
PCA — 数据归一化
● 数据归一化步骤
■ 均值中心化 — 不会影响结果,但会使数学计算变得更加简单
■ 标准化(除以标准差)— 可选;会影响结果
均值中心化的数据
均值中心化,标准化后的数据
PCA — 寻找第一个主成分
● 数据 的第一个主成分
■ 单位向量 用于最大化变换后数据的方差
■
■ 变换后数据的方差
■ — 转换后的数据点
■ 因为均值中心化的数据为0
➜
是
的协方差矩阵
注意:有时 (而不是
)。在这种情况下,
是 未归一化的协方差矩阵(散射矩阵)。这只会影响特征值的大小,但不影响
的特征向量。
➜ 是协方差矩阵
的最大特征向量
PCA — 寻找第 k 个主成分
● 从 中减去前
个主成分
● 数据 的第
个主成分
■ 单位向量 用于最大化变换后数据的方差 — 在变换
之后
➜ 是协方差矩阵
的最大特征向量
PCA — 获取所有主成分
● 数学便利性
■ 的最大特征向量 =
的第
大特征向量
➜ 的主成分 = 协方差矩阵
的特征向量
解释
● 第1主成分指向最大方差的方向
● 第2主成分指向最大方差的方向 在从数据集 中移除第1主成分后
● ...
PCA 代码Python (using numpy library)
PCA — 转换原始数据集 X
● 是一个
矩阵 ➜
个特征向量和特征值
■ 如何选择 来获得形状为
的转换矩阵
?
● 解释方差比
■ 由每个主成分所属性的方差的百分比 ➜ 归一化的特征值
■ 选择 使得最大的
个 PC 解释 最小量的方差
PCA — 完整示例(IRIS 数据集)
● IRIS 数据集
■ 只考虑了 3(4个中的3个)特征 — 只为了方便可视化 22 具有3个主成分的数据集 3个 PC 的解释方差
● 使用主成分转换 X
PCA — 优缺点
● 优点
■ 直观 — 利用关于相关和低方差特征的知识
■ 可以显著减少数据量
■ 提高算法的性能并降低过拟合的风险
■ 高维数据的可视化(即使仅在 EDA 期间应用)
● 缺点
■ 最基本的:信息损失
■ 假设特征之间有线性相关性
■ 假设大方差等于高重要性(并不总是这样)
■ 不考虑类标签(在分类任务中)
PCA — 用于分类数据集的局限性
● 将 PCA 应用于用于分类的标记数据集(病理性示例)
■ PCA 最大化整个数据集的方差
■ PCA 忽略了来自类标签的任何信息
线性判别分析 (LDA)
● 与 PCA 的相似性
■ 线性转换技术
■ 输出:矩阵 将数据集
转换为低维空间
● 主要区别:2个优化目标
■ 最小化每个类中的转换点的方差 (回想一下 PCA 是最大化整个数据集的方差)
■ 最大化类之间的分离
LDA 概念 — 类间方差
● 类均值与(整体)均值之间的距离的方差
■ — 类的数量
■ — 类均值向量 (类
的数据点的均值)
■ — (整体)均值向量
LDA 概念 — 类内方差
● 同一类的数据点的方差
LDA — 优化目标
● 最大化:
■ 投影的类均值的散度
■ 每个类的投影数据点的散度
● 广义特征值问题:
■ 标量值!
最优的投影向量 = 矩阵 的最大特征值的特征向量
关于特征向量的数量的注释
● 的定义包括两个约束
■ 是
个秩为1或更小的矩阵的总和
■ 由均值 约束
➜ 的秩为
或更小
➜ 只有 个特征向量是非零的!(相应的特征值为0) 注意:在实践中,由于浮点不精确,这些剩余的
特征值 只是非常接近零
LDA — 算法
● 计算所有 类的均值向量
和
● 计算散射矩阵 和
● 计算 的特征向量和特征值
● 选择具有最大特征值的 个特征向量
● 通过 将数据集
投影到新空间
LDA — 完整示例(IRIS 数据集)
● 生成的 个特征值(排序)
● 使用解释方差比选择
LDA — 优缺点
● 优点
■ 对 PCA 的直观扩展产生了类似的好处 (数据量减少,过拟合风险降低,可视化等)
■ 考虑类标签(通常比 PCA 更适合有标签的数据集)
● 缺点
■ 与 PCA 相似的缺点(信息损失,假设线性相关等)
■ 假设单峰高斯分布
■ 假设均值是最有区分性的特征
LDA — 问题案例
● 数据分布是(显著地)非单峰高斯分布
t-分布随机邻域嵌入 (t-SNE)
● t-SNE — 非线性维度降低技术
■ 无监督方法(与任何种类的类标签无关)
■ 迭代算法:
1) 从随机的低维表示 开始
2) 改变 ,直到损失函数收敛到最小值
● t-SNE 背后的直觉
■ 将 X 和 Y 中的欧几里得距离转换为条件概率
(例如,如果数据点 和
靠近 ➜ 条件概率
应该很高)
■ 迭代地改变 Y,使两个概率分布变得更加相似
➜ 优化目标:在 X 中靠近的点在 Y 中也靠近 t-SNE — 将欧几里得距离转换为条件概率
● 数学公式
■ 对于 X 中的数据点
● 视觉解释(对于 i=3)
■ 假设以 为中心的 d-dim 高斯分布
■ 计算与高斯成正比的 (与每个点
的虚线的高度成正比)
t-SNE
● t-SNE 使用学生 t 分布
■ 在实践中,更重的尾部产生了更好的结果
■ 1 个自由度
● 损失函数:P 和 Q 之间的 Kullback-Leibler 散度
注意:KL 散度是衡量 一个概率分布与另一个概率分布有多大差异的度量
t-SNE — 最小化损失
● 使用梯度下降法最小化 L
t-SNE — 非确定性
● t-SNE 是非确定性的
■ 是随机采样的
■ 不同的运行通常 会产生不同的投影
■ 在实践中,执行多次运行以 了解数据的情况
t-SNE — 计算
(实现细节)
● 如何选择 的值?
● 直觉:根据 周围的密度设置
■ 高密度 ➜ 更小的 / 低密度 ➜ 更大的
■ 控制具有有效 的
的数量
● 基于超参数 perplexity 计算最佳
■ 更大的perplexity:更多的邻居具有有效的
■ 实践中常见的perplexity值:5..50
t-SNE — 优缺点
● 优点
■ 可以处理非线性数据
■ 数据可视化效果非常好
● 缺点
■ 在非常高维的数据上计算非常昂贵(与,例如,PCA相比)
■ 非确定性行为;可能需要多次运行
■ 影响输出的多个超参数(perplexity, 学习率, 迭代次数, 初始化)