多重共线性:自变量之间存在线性关系
或者说 两个或多个自变量(特征)之间存在高度线性相关关系。
常见诊断方法:
相关系数矩阵: 计算所有特征之间的两两皮尔逊相关系数。绝对值接近1(如 > 0.8 或 0.9)的特征对可能存在共线性。缺点:只能检测两两共线性。
方差膨胀因子: 这是最常用的指标。
对每个特征 X_i,计算其 VIF: 将 X_i 作为目标变量,用其他所有自变量对其进行线性回归。 计算该回归的 R²。 VIF_i = 1 / (1 - R²_i)。 解读: VIF = 1 表示无共线性(R²=0),VIF > 5 或 > 10 通常被认为是存在显著共线性的标志(意味着该变量的系数方差由于共线性被放大了至少5倍或10倍)。
条件指数: 基于特征值分解的更高级诊断方法,能检测多元共线性(多个特征共同相关)。
什么样的机器学习模型需要考虑多重共线性?
机器学习模型(尤其是基于树和集成的方法)对多重共线性的耐受性通常更强,因为它们的目标主要是预测精度,而不是精确解读单个特征的系数。
但是,这并不意味着机器学习模型完全不受影响(见下文对不同模型的讨论)。
多重共线性是任何试图估计特征系数并解释其含义的建模任务(尤其是线性模型)都需要考虑的问题。
- 机器学习领域中的线性模型(如线性回归、逻辑回归)也必须面临这个问题。
- 非线性的、特征重要性解读方式不同的模型则受影响较小或关注点不同。
对于回归/分类/聚类问题的影响?
- 回归问题: 影响最大。
回归模型(特别是线性回归)的核心目标之一就是理解和量化每个特征对连续目标变量的影响。多重共线性直接破坏了这个目标的达成(系数不稳定、方差大、难以解释)。预测准确性有时可能受影响较小。
- 分类问题:影响线性模型。
线性模型:
对于逻辑回归(本质是广义线性模型,用于分类),多重共线性会造成与回归模型完全相同的问题:系数不稳定、方差增大、难以解释特征重要性、特征显著性检验困难。
非线性模型:
对于决策树、随机森林、梯度提升树等非线性分类模型,影响相对较小(见后面具体模型分析)。
- 聚类问题: 影响最小,但存在潜在问题。
聚类是无监督学习,目标是将相似样本分组,不涉及估计特征系数或预测目标变量。
主要潜在问题:
-
- 扭曲距离计算: 如果聚类算法(如K-Means)依赖于欧氏距离等度量,高度相关的特征会过度强调这些特征所代表的维度。想象两个本来在三维空间中距离很远的点,如果它们在两个高度相关的特征方向上都偏离中心,距离计算可能会被夸大。这可能导致聚类结果偏向于这些相关特征所定义的方向。
-
- 冗余信息浪费计算资源: 包含多个高度相关的特征增加了维度,但并未提供太多额外信息,白白增加计算负担。
解决方案: 在聚类之前进行降维(如PCA)或特征选择,去除冗余特征,既能解决共线性导致的距离扭曲,又能提高效率。
相比于对模型的优化,更为重要的是模型训练之前的特征工程,而剔除特征中的多重共线性对逻辑回归而言非常重要。
各种模型对多重共线性的敏感度?
分析(6模型):逻辑回归模型、KNN、lightGBM、XGBoost、决策树、支持向量机
Logistic回归:高度敏感
广义线性模型,它面临与线性回归完全相同的多重共线性问题:系数不稳定、难以解释、显著性检验不可靠。
建议: 诊断VIF。处理方式包括:删除相关特征之一、PCA降维、增大正则化强度(L1/L2)。
KNN(K-Nearest Neighbors):中度敏感(距离度量依赖)
高度相关的特征会扭曲距离计算(如欧氏距离)。
例如,两个在身高和体重(高度相关)上都偏离的点会被计算为非常远,尽管它们可能在其他独立特征上很相似。这会导致寻找“邻居”的过程失真,影响预测准确性。
建议: 进行特征缩放(非常重要,否则量纲大的特征主导距离)。考虑降维(PCA)或特征选择去除高度相关特征。使用考虑特征相关性的距离度量(如马氏距离),但计算复杂且需估计协方差矩阵(当特征维度高或样本少时可能不稳定)。
LightGBM / XGBoost / 决策树 (CART):低敏感度(对预测精度)、影响(特征重要性的解释)
预测精度,通常影响非常小。
树模型在节点分裂时,每次只基于一个特征及其分裂点进行决策,目标是最大化纯度增益(如Gini,
信息增益)。即使特征高度相关,模型通常也能找到一个提供足够信息含量的特征进行分裂。最终的预测是多个树/叶子的平均或加权结果,对单个特征的扰动容忍度较高。
主要影响特征重要性的解释!
当存在高度相关特征组时:
- 模型可能会随机地选择该组中的任何一个特征进行分裂(因为它们提供的信息差不多)。
- 该组特征整体的重要性(累积)是显著的。 但该组中单个特征的重要性会被稀释(重要性分数被分摊到组内多个特征上)。
- 你在看特征重要性图时,可能会看到一组中等重要性的相关特征,而不是一个主导特征。
支持向量机:取决于核函数(线性核 - 高度敏感!)
线性核: 高度敏感!
线性SVM(kernel='linear')本质上是在寻找一个线性超平面(w·x + b = 0)。多重共线性会导致权重向量 w 的估计不稳定(类似于线性回归系数),影响决策边界和特征权重(w分量)的解释。
非线性核: 低至中度敏感(对边界稳定性)。
使用 RBF核 等的 非线性SVM 将数据映射到高维空间寻找决策边界。多重共线性本身不直接影响映射和高维空间的分离。但高度相关的特征仍然是冗余信息,浪费计算资源。
对于线性SVM:类似线性回归(VIF检测,删除特征,PCA,增加正则化参数 C)。
对于非线性SVM:不是首要关注点,但进行特征缩放至关重要(影响距离计算)。如果维度极高且存在大量无关或冗余特征,进行特征选择或降维可以显著提高训练效率和模型泛化能力。
结论:
多重共线性是一个统计问题,核心影响是特征系数的估计和解释(在线性/广义线性模型中尤为严重)。
机器学习模型并非都不需要考虑:
敏感:逻辑回归(线性分类器)、线性核SVM、KNN(距离计算)、树模型(特征重要性解释)。
不敏感:树模型(预测精度)。
- 是否需要处理取决于目标:
- 追求预测精度: 线性模型、逻辑回归、线性SVM、KNN需要处理。树模型、非线性SVM通常无需特意处理(但特征缩放很重要)。
- 追求特征解释/系数解读: 线性模型、逻辑回归、线性SVM必须处理。树模型需警惕特征重要性被稀释。
- 追求效率: 所有模型都可以从去除高度冗余特征中受益(降维或特征选择)。
- 聚类: 为了获得更合理的结果和提高效率,建议在距离依赖算法前进行降维或特征选择。