数据挖掘-维度降低

维度降低

维度降低 — 动机

● 高维度 = 高数量的数据特征

    ■ m ("质量") — 数据点的数量

    ■ V ("体积") — 由维度描述的数据空间

    density = \rho =\frac{m}{V} ➜ 高维数据迅速变得非常稀疏!

● 许多特征和数据稀疏性的影响

    ■ 更高的计算成本

    ■ 对任何需要统计显著性的方法都是问题 ➜ 高风险的过拟合

(“好”的数据点和噪声/异常值看起来越来越无法区分)

    ■ 掩盖了数据点之间的相似性

(在低维度中相似但在高维度中不相似的点)

维度的诅咒

● 高维度的效应(即,许多特征)

    ■ 数据点往往永远不会靠得很近

    ■ 点与点之间的平均距离趋于收敛

● 直观

    ■ 假设有 N 个数据点均匀分布 在一个具有 d 维度的单位立方体内

    ■ 设 L 为包含数据点的 k-NN的最小立方体的边长

L^d\approx \frac{k}{N} \Rightarrow L\approx (\frac{k}{N})^{\frac{1}{d}}

这个包含 k-NN 的立方体几乎是整个单位立方体!

在1,000个随机数据点和不同数量的维度之间的成对距离分布

维度降低 — 特征选择

● 特征选择 — 分析前的特征移除 (或者说:只保留某些特征子集)

● 常见的特征选择

    ■ 基于专家知识移除"不重要"的特征 (例如,一个人的出生日期不太可能影响他/她的消费行为)

    ■ 移除可能引入伦理偏见的特征 (例如,信用卡批准的性取向和种族)

    ■ 移除方差非常低的特征 ➜ 没有用

    ■ 移除与其他特征强相关的特征 ➜ 不需要 (基本方法:计算成对关联并在高关联情况下移除其中一个特征)

    ■ 根据其区分数据点的能力移除排名较低的特征 (决策树的基本方法,根节点附近的特征产生更纯净的子树)

特征选择 — 优缺点

● 优点

    ■ 实施相对直接

    ■ 不改变特征本身 ➜ 分析结果的影响得以保留

● 缺点

    ■ 基于专家知识选择重要特征通常不是简单/明显的

    ■ 找到有意义的阈值 — 例如,最小方差或关联 — 不明显

维度降低 — 特征提取

● 特征提取 — 基本思想

    ■ 生成新特征作为原始特征的总结形式

    ■ 特征提取算法利用特征之间的区分能力和相关性

特征提取步骤

● 从2维降至1维

● 几乎没有信息损失

主成分分析 (PCA)

● PCA — 通过线性变换实现维度降低

    ■ 新的输出特征是原始输入特征的线性组合

    ■ 将数据转换到新的坐标系统

    ■ 无监督方法(与任何种类的类标签无关)

● 基本设置

    ■ 数据集 X (有 n 个样本,d 个特征)

    ■ 找到矩阵 WX 转换为 p 维数据集(p<<d

PCA — 使用简单变换的直观理解 

PCA — 寻找变换的等效目标

最小化残差

注意:这两个优化目标 是等效的,其中最大化变换后点的方差更容易处理

最大化变换后点的方差

PCA — 数据归一化

● 数据归一化步骤

    ■ 均值中心化 — 不会影响结果,但会使数学计算变得更加简单

    ■ 标准化(除以标准差)— 可选;会影响结果

 均值中心化的数据

均值中心化,标准化后的数据

PCA — 寻找第一个主成分

● 数据 X 的第一个主成分

    ■ 单位向量 w_1 用于最大化变换后数据的方差

    ■ w_1=argmax_{||w||=1} \frac{1}{n}\sum_i(p_i-0)^2

    ■ \frac{1}{n}\sum_i(p_i-0)^2变换后数据的方差 

    ■ p_i​ — 转换后的数据点 x_i

    ■ x_i​ 因为均值中心化的数据为0

C_XX 的协方差矩阵

注意:有时 C_X=X^TX (而不是 C_X=X^TX/n​)。在这种情况下,C_X​ 是 未归一化的协方差矩阵(散射矩阵)。这只会影响特征值的大小,但不影响 W 的特征向量。

w_1​ 是协方差矩阵 C_X​ 的最大特征向量

PCA — 寻找第 k 个主成分

● 从 X 中减去前 (k-1) 个主成分

    X_k=X-\sum^{k-1}_{s=1}Xw_sw_s^T

● 数据 X_k​ 的第 k 个主成分

    ■ 单位向量 w_k 用于最大化变换后数据的方差 — 在变换 X_k​ 之后

➜ w_k 是协方差矩阵 C_X^{(k)} 的最大特征向量

PCA — 获取所有主成分

● 数学便利性

    ■ C_X^{(k)}的最大特征向量 = C_X 的第 k 大特征向量 

X 的主成分 = 协方差矩阵 C_X​ 的特征向量 

解释

● 第1主成分指向最大方差的方向

● 第2主成分指向最大方差的方向 在从数据集 X 中移除第1主成分后

● ...

PCA 代码Python (using numpy library)

PCA — 转换原始数据集 X

C_x​ 是一个 (d\times d) 矩阵 ➜ d 个特征向量和特征值

    ■ 如何选择 1\leq p \leq d来获得形状为 (d \times p)的转换矩阵 W

● 解释方差比

    ■ 由每个主成分所属性的方差的百分比 ➜ 归一化的特征值

    ■ 选择 p 使得最大的 p 个 PC 解释 最小量的方差

PCA — 完整示例(IRIS 数据集)

● IRIS 数据集

    ■ 只考虑了 3(4个中的3个)特征 — 只为了方便可视化 22 具有3个主成分的数据集 3个 PC 的解释方差

● 使用主成分转换 X 

PCA — 优缺点

● 优点

    ■ 直观 — 利用关于相关和低方差特征的知识

    ■ 可以显著减少数据量

    ■ 提高算法的性能并降低过拟合的风险

    ■ 高维数据的可视化(即使仅在 EDA 期间应用)

● 缺点

    ■ 最基本的:信息损失

    ■ 假设特征之间有线性相关性

    ■ 假设大方差等于高重要性(并不总是这样)

    ■ 不考虑类标签(在分类任务中)

PCA — 用于分类数据集的局限性

● 将 PCA 应用于用于分类的标记数据集(病理性示例)

    ■ PCA 最大化整个数据集的方差

    ■ PCA 忽略了来自类标签的任何信息

线性判别分析 (LDA)

● 与 PCA 的相似性

    ■ 线性转换技术

    ■ 输出:矩阵 W 将数据集 X 转换为低维空间

● 主要区别:2个优化目标

    ■ 最小化每个类中的转换点的方差 (回想一下 PCA 是最大化整个数据集的方差)

    ■ 最大化类之间的分离

LDA 概念 — 类间方差 

● 类均值与(整体)均值之间的距离的方差

    ■ C — 类的数量

    ■ \mu^{(i)}— 类均值向量 (类 i 的数据点的均值)

    ■ \mu — (整体)均值向量

LDA 概念 — 类内方差

● 同一类的数据点的方差

LDA — 优化目标 

● 最大化:J(w)=\frac{w^TS_Bw}{w^TS_Ww}

    ■ w^TS_Bw 投影的类均值的散度

    ■ w^TS_Ww 每个类的投影数据点的散度

● 广义特征值问题:S^{-1}_WS_Bw=J(w)w

    ■ J(w) 标量值!

最优的投影向量 = 矩阵 S^{-1}_WS_B 的最大特征值的特征向量

关于特征向量的数量的注释

S_B 的定义包括两个约束

    ■ S_BC 个秩为1或更小的矩阵的总和

    ■ 由均值 \mu 约束 \mu=\frac{1}{C} \sum_{i=1}^C \mu_i

S_B 的秩为(C-1)或更小

➜ 只有 (C-1) 个特征向量是非零的!(相应的特征值为0) 注意:在实践中,由于浮点不精确,这些剩余的 d-c+1 特征值 只是非常接近零

LDA — 算法 

● 计算所有 C 类的均值向量 \mu\mu^{(i)}

● 计算散射矩阵 S_WS_B

● 计算 S_W^{-1}S_B 的特征向量和特征值

● 选择具有最大特征值的 p 个特征向量 w_p

● 通过 XW 将数据集 X 投影到新空间

LDA — 完整示例(IRIS 数据集)

● 生成的 d个特征值(排序)

● 使用解释方差比选择 p \leq C-1

LDA — 优缺点

● 优点

    ■ 对 PCA 的直观扩展产生了类似的好处 (数据量减少,过拟合风险降低,可视化等)

    ■ 考虑类标签(通常比 PCA 更适合有标签的数据集)

● 缺点

    ■ 与 PCA 相似的缺点(信息损失,假设线性相关等)

    ■ 假设单峰高斯分布

    ■ 假设均值是最有区分性的特征

LDA — 问题案例

● 数据分布是(显著地)非单峰高斯分布

t-分布随机邻域嵌入 (t-SNE)

● t-SNE — 非线性维度降低技术

    ■ 无监督方法(与任何种类的类标签无关)

    ■ 迭代算法:

         1) 从随机的低维表示 Y 开始

         2) 改变 Y,直到损失函数收敛到最小值

● t-SNE 背后的直觉

    ■ 将 X 和 Y 中的欧几里得距离转换为条件概率

(例如,如果数据点 x_i  和 x_j  靠近 ➜ 条件概率 p_{i|j}​ 应该很高)

    ■ 迭代地改变 Y,使两个概率分布变得更加相似

➜ 优化目标:在 X 中靠近的点在 Y 中也靠近 t-SNE — 将欧几里得距离转换为条件概率

● 数学公式 

p_{j|i}=\frac{exp(-||x_i-x_j||^2/2\sigma^2_i)}{\sum_{k\neq i}exp(-||x_i-x_k||^2/2\sigma^2_i)}

    ■ 对于 X 中的数据点

● 视觉解释(对于 i=3)

    ■ 假设以 x_3​ 为中心的 d-dim 高斯分布

    ■ 计算与高斯成正比的 p_{j|3}​ (与每个点  x_j 的虚线的高度成正比)

t-SNE

● t-SNE 使用学生 t 分布

    ■ 在实践中,更重的尾部产生了更好的结果

    ■ 1 个自由度

● 损失函数:P 和 Q 之间的 Kullback-Leibler 散度

注意:KL 散度是衡量 一个概率分布与另一个概率分布有多大差异的度量

t-SNE — 最小化损失

● 使用梯度下降法最小化 L

t-SNE — 非确定性

● t-SNE 是非确定性的

    ■ Y^{(0)} 是随机采样的

    ■ 不同的运行通常 会产生不同的投影

    ■ 在实践中,执行多次运行以 了解数据的情况

t-SNE — 计算 p_{j|i}​ (实现细节)

● 如何选择 \sigma_i 的值?

p_{j|i}=\frac{exp(-||x_i-x_j||^2/2\sigma^2_i)}{\sum_{k\neq i}exp(-||x_i-x_k||^2/2\sigma^2_i)}

● 直觉:根据 x_i​ 周围的密度设置 \sigma_i

    ■ 高密度 ➜ 更小的 \sigma_i / 低密度 ➜ 更大的 \sigma_i

    ■ 控制具有有效 p_{j|i} 的  x_j​ 的数量

● 基于超参数 perplexity 计算最佳 \sigma_i

     ■ 更大的perplexity:更多的邻居具有有效的 p_{j|i}

     ■ 实践中常见的perplexity值:5..50

t-SNE — 优缺点

● 优点

     ■ 可以处理非线性数据

     ■ 数据可视化效果非常好

● 缺点

     ■ 在非常高维的数据上计算非常昂贵(与,例如,PCA相比)

     ■ 非确定性行为;可能需要多次运行

     ■ 影响输出的多个超参数(perplexity, 学习率, 迭代次数, 初始化)

示例 — 数字数据集

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值