当前位置: 首页 > news >正文

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

摘要:高相关性筛选法是机器学习中用于特征选择的技术,通过计算特征间的相关系数并设定阈值来移除冗余特征。该方法能减少多重共线性、提升模型性能并降低计算成本,但也存在信息丢失、无法处理非线性关系等局限。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. 潜在选择偏差:筛选过程仅基于特征间的相关性,未考虑特征与因变量的关联程度,可能误删对预测至关重要的特征,引入选择偏差。
http://www.jsqmd.com/news/215147/

相关文章:

  • AI如何帮你优化JAVA foreach循环代码
  • 吐血推荐10个AI论文软件,助你轻松搞定本科毕业论文!
  • AI如何自动化特征工程?提升数据预处理效率
  • MGeo模型极速体验:无需CUDA的云端推理方案
  • FSCAN效率翻倍:多线程与批量扫描技巧
  • 1小时验证创意:用人生K线模型做产品原型
  • Z-Image-Turbo推理步数怎么选?不同场景下的最佳配置
  • 1小时搞定:用快马平台开发洛雪链接解析器原型
  • 零基础入门:小乌龟SVN安装配置图文教程
  • M2FP结果可导出吗?支持JSON Mask与PNG双格式输出
  • AI助力DDNS-GO配置:自动生成动态域名解析脚本
  • 如何用Z-Image-Turbo生成高清产品概念图?完整案例分享
  • TinyMCE中文实战:从零搭建企业级富文本编辑器
  • RedisInsight中文设置图解:小白也能轻松上手
  • 多人场景分割总出错?M2FP镜像一键解决遮挡识别难题
  • 基于SpringBoot和Vue的WMS仓储管理系统毕业设计源码
  • 游戏动画制作辅助:M2FP实现角色动作区域智能分割
  • 如何用Z-Image-Turbo生成逼真宠物照片?附完整案例
  • Z-Image-Turbo语音输入集成:说一句话生成对应图像
  • 地址数据增强实战:用少量标注数据提升模型效果
  • 1小时开发:基于TAR的自动化备份工具原型
  • 解决博客粘贴图片IE浏览器兼容上传问题
  • 传统刷机 vs AI刷机:E900V22D效率对比
  • 1小时验证创意:UREPORT2+快马打造智能报表原型
  • Z-Image-Turbo素描效果生成:黑白线条艺术创作指南
  • 零基础入门:75KXCC新版本第一课
  • 阿里通义Z-Image-Turbo性能实测:1024×1024图像生成仅需15秒
  • 如何选择人体解析方案?M2FP的多人重叠处理能力成关键优势
  • 如何监控Z-Image-Turbo运行状态?系统信息页面使用指南
  • 1小时打造你的GitHub下载工具:GHelper原型开发