news 2026/5/1 17:06:43

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

作者头像

张小明

前端开发工程师

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/5/1 1:07:23

AI如何优化Docker Desktop在Windows上的开发体验

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容: 创建一个基于AI的辅助工具,帮助Windows用户优化Docker Desktop的配置。工具应能自动分析系统资源,生成优化的Dockerfile,并提供实时性能监控和调…

作者头像 李华
网站建设 2026/5/1 10:02:29

5分钟搭建私有网络请求拦截原型

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容: 开发一个快速原型工具,用于验证私有网络请求拦截的基本功能。工具需要支持:1. 一键部署;2. 实时监控和拦截演示;3. 提供简单的配置界…

作者头像 李华
网站建设 2026/5/1 8:53:30

小白也能懂:127.0.0.1到底是什么?

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容: 开发一个面向初学者的交互式教程,包含:1) 用日常生活类比解释127.0.0.1;2) 可视化地址解析过程;3) 简单的试一试功能让用户体验效果…

作者头像 李华
网站建设 2026/5/1 8:39:52

AI助力IIS配置:自动生成服务器身份验证代码

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容: 创建一个IIS服务器配置脚本,实现以下功能:1. 配置身份验证方式为Windows身份验证;2. 设置内置账户访问权限;3. 指定物理路径访问控制…

作者头像 李华
网站建设 2026/5/1 7:10:35

CMD查询硬盘序列号太慢?这5种高效方法对比评测

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容: 开发一个硬盘信息查询效率对比工具,要求:1. 实现5种查询方式(CMD wmic、PowerShell、WMI、第三方工具API、直接读取注册表)2. 自动统…

作者头像 李华
网站建设 2026/4/23 15:14:21

传统刷机 vs AI刷机:E900V22D效率对比

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容: 对比传统刷机方法和AI辅助刷机的效率。输入设备信息和需求,生成两种方法的步骤列表和时间预估。AI方法应包含自动适配驱动、一键生成刷机包和错误检测功能。输出为对比…

作者头像 李华