news 2026/3/1 9:54:53

机器学习 - 高相关性筛选法

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
机器学习 - 高相关性筛选法

摘要:高相关性筛选法是机器学习中用于特征选择的技术,通过计算特征间的相关系数并设定阈值来移除冗余特征。该方法能减少多重共线性、提升模型性能并降低计算成本,但也存在信息丢失、无法处理非线性关系等局限。Python实现时需计算相关矩阵并设定阈值筛选特征,最终保留关键特征用于模型训练。该技术适用于线性关系数据集,但需权衡简化模型与潜在信息损失的风险。

目录

机器学习 - 高相关性筛选法

概述

工作原理

核心原理

实现步骤

优势

局限性

示例:Python 实现高相关性筛选法

输出结果

补充说明

优点详解

缺点详解


机器学习 - 高相关性筛选法

概述

高相关性筛选法是机器学习中一种特征选择技术,用于识别并移除数据集中高度相关的特征。该技术通过减少模型训练所用的特征数量,提升模型性能,同时避免多重共线性问题 —— 即两个或多个预测变量之间存在高度相关性的情况。

工作原理

高相关性筛选法的核心是计算数据集中每对特征之间的相关性,然后移除每对高度相关特征中的一个。具体操作是为特征间的相关系数设定阈值,若相关系数的绝对值超过该阈值,则移除其中一个特征。

核心原理

  1. 特征与目标变量的相关性衡量单个特征对目标变量的解释能力,相关性越高,该特征对模型的贡献可能越大。

    • 连续型目标变量(回归任务):用皮尔逊相关系数(Pearson Correlation Coefficient),取值范围[-1,1],绝对值越接近 1 相关性越强。
    • 离散型目标变量(分类任务):用斯皮尔曼相关系数(Spearman Correlation Coefficient)、互信息(Mutual Information)或卡方检验(Chi-square Test)。
  2. 特征与特征之间的相关性衡量特征间的冗余程度,若两个特征高度相关,保留其中一个即可,避免多重共线性问题。

  • 常用指标:皮尔逊相关系数、斯皮尔曼相关系数。

实现步骤

  1. 计算数据集的相关矩阵;
  2. 设定特征间相关系数的阈值;
  3. 找出相关系数超过阈值的特征对;
  4. 从每对高度相关的特征中移除其中一个;
  5. 使用剩余特征训练机器学习模型。

优势

使用高相关性筛选法具有以下优势:

  • 减少多重共线性:可有效缓解多重共线性问题(多个特征间高度相关的情况),而多重共线性会对机器学习模型的性能产生负面影响;
  • 提升模型性能:通过移除高度相关的特征,有助于改善机器学习模型的表现;
  • 简化模型:特征数量减少后,模型更易于解释和理解;
  • 节省计算资源:所需特征减少,训练机器学习模型的计算资源消耗也随之降低。

局限性

高相关性筛选法也存在一些局限性:

  • 信息丢失:可能会移除包含重要信息的特征,导致数据信息丢失;
  • 对非线性关系不适用:该方法假设特征间的关系为线性,对于特征间存在非线性关系的数据集,其效果可能不佳;
  • 影响因变量:移除高度相关的特征有时可能对因变量产生负面影响,尤其是当这些特征与因变量高度相关时;
  • 选择偏差:若移除了对预测因变量至关重要的特征,可能会引入选择偏差。

示例:Python 实现高相关性筛选法

# 导入必要的库 import pandas as pd import numpy as np # 加载糖尿病数据集 diabetes = pd.read_csv(r'C:\Users\Leekha\Desktop\diabetes.csv') # 定义预测变量(X)和目标变量(y) X = diabetes.iloc[:, :-1].values y = diabetes.iloc[:, -1].values # 计算相关矩阵 corr_matrix = np.corrcoef(X, rowvar=False) # 设置高相关性的阈值 threshold = 0.8 # 找出高度相关特征的索引 high_corr_indices = np.where(np.abs(corr_matrix) > threshold) # 创建待移除的特征对集合 features_to_remove = set() # 遍历高度相关特征的索引并添加到待移除集合 for i, j in zip(*high_corr_indices): if i != j and (j, i) not in features_to_remove: features_to_remove.add((i, j)) # 将特征对集合转换为列表 features_to_remove = list(features_to_remove) # 从每对高度相关特征中移除一个 X_filtered = np.delete(X, [j for i, j in features_to_remove], axis=1) # 打印筛选后数据集的形状 print('筛选后数据集的形状:', X_filtered.shape)

输出结果

运行上述代码后,将得到以下输出:

筛选后数据集的形状: (768, 8)

补充说明

优点详解

  1. 减少多重共线性:多重共线性会导致模型参数估计不稳定、不可靠,高相关性筛选法通过剔除冗余的相关特征,从源头降低这种影响;
  2. 提升模型性能:去除无关或冗余的高度相关特征后,模型能更聚焦于关键信息,减少噪声干扰,从而提升预测准确性;
  3. 简化模型解释:特征数量减少后,用户更容易理解每个特征对模型预测结果的影响,降低模型的复杂度;
  4. 节省计算成本:特征越少,模型训练、验证和预测过程中所需的内存、计算时间等资源越少,尤其适用于大规模数据集。

缺点详解

  1. 信息丢失风险:即使两个特征高度相关,其中一个特征可能仍包含另一个特征未覆盖的重要信息,直接移除可能导致模型性能下降;
  2. 仅适用于线性关系:该方法基于线性相关系数(如皮尔逊相关系数)计算,无法捕捉特征间的非线性相关关系,对非线性数据集适应性差;
  3. 可能影响因变量拟合:若被移除的特征与因变量存在强相关性,可能导致模型无法充分学习到与目标变量相关的信息,进而降低预测效果;
  4. 潜在选择偏差:筛选过程仅基于特征间的相关性,未考虑特征与因变量的关联程度,可能误删对预测至关重要的特征,引入选择偏差。
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/2/24 2:34:51

新手必看:如何为项目设定明确目标

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容: 开发一个新手友好的目标设定教程应用,包含:1. 交互式教程;2. 目标设定模板;3. 示例项目库;4. 即时反馈系统。使用简单的…

作者头像 李华
网站建设 2026/2/21 23:05:11

零售业数字化转型:MGeo赋能门店地址数据分析

零售业数字化转型:MGeo赋能门店地址数据分析实战指南 在零售行业数字化转型过程中,门店地址数据的标准化处理一直是个棘手问题。想象一下:当连锁便利店分析师想研究"500米范围内竞品分布"时,却发现同一家门店在不同系统…

作者头像 李华
网站建设 2026/2/24 14:02:31

从0到1:LEAGUEAKARI竞品官网开发全记录

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容: 基于LEAGUEAKARI现有官网的分析报告,生成优化的竞品官网代码。重点改进:1. 加载速度提升方案 2. 移动端体验优化 3. 产品参数对比功能 4. 在线客服集成 5. …

作者头像 李华
网站建设 2026/2/21 2:19:56

专业级同城跑腿小程序源码系统的核心功能一览

温馨提示:文末有资源获取方式在同城即时配送领域,效率即是生命线。一套专业的跑腿系统,其价值不仅在于连接用户与骑手,更在于通过精细化的数字工具提升整个业务流程的协同效率与管理深度。源码获取方式在源码闪购网。以下通过列表…

作者头像 李华
网站建设 2026/3/1 13:26:30

AI如何帮你自动生成Postman接口测试脚本

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容: 创建一个基于AI的Postman接口测试脚本生成工具,用户只需输入API文档的URL或文本描述,系统自动解析并生成完整的Postman测试集合,包括请求参数、…

作者头像 李华
网站建设 2026/2/21 0:49:56

FSCAN效率翻倍:多线程与批量扫描技巧

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容: 创建一个优化的FSCAN多线程扫描脚本,要求支持同时扫描多个IP段,动态调整线程数量以避免网络拥堵,实时显示扫描进度,并在扫描完成后自…

作者头像 李华