机器学习特征降维

简介: 这篇内容概述了特征降维在机器学习中的重要性,包括三个主要方法:低方差过滤法、PCA(主成分分析)和相关系数法。低方差过滤法通过删除方差低于阈值的特征来减少无关信息;PCA通过正交变换降低数据的维数,保留大部分信息;相关系数法(如皮尔逊和斯皮尔曼相关系数)用于评估特征间的相关性,去除高度相关的特征以简化模型。这些技术有助于提高模型效率和泛化能力。

目录


特征降维概念

低方差过滤法

PCA主成分分析

相关系数法

小结


特征降维概念


特征对训练模型时非常重要的;用于训练的数据集包含一些不重要的特征,可能导致模型性能不好、泛化性能不佳;例如:


  • 某些特征的取值较为接近,其包含的信息较少
  • 希望特征独立存在对预测产生影响,两个特征同增同减非常相关,也会干扰模型的学习


特征降维是指在某些限定条件下,降低特征个数常用的方法:

低方差过滤法、PCA(主成分分析)降维法、相关系数(皮尔逊相关系数、斯皮尔曼相关系数)  


低方差过滤法


低方差过滤法:指的是删除方差低于某些阈值的一些特征


  1. 特征方差小:特征值的波动范围小,包含的信息少,模型很难学习到数据的规律
  2. 特征方差大:特征值的波动范围大,包含的信息相对丰富,便于模型学习事物规律(异常值除外)


机器学习低方差过滤API:


  • sklearn.feature_selection.VarianceThreshold(threshold = 0.0)  实例化对象用于删除所有低方差特征
  • variance_obj.fit_transform(X)  X:numpy array格式的数据[n_samples,n_features]


import numpy as np
import pandas as pd
from sklearn.feature_selection import VarianceThreshold
np.set_printoptions(suppress=True)
pd.set_option('display.float_format', lambda x: '%.4f' % x)
def dm01_VarianceThreshold():
 
    mydata = pd.read_csv('./data/factor_returns.csv')
 
    print('mydata-->\n', mydata.columns)
    print('mydata-->\n', mydata.shape)
    
    transfer = VarianceThreshold(threshold=0.2)
 
    mydata = transfer.fit_transform(mydata.iloc[:, 1:10]) # /0123456
    print(mydata.shape)
    print(mydata)


  • 效果:(200,11) 降到了(200,8)


PCA主成分分析


主成分分析(Principal Component Analysis,PCA)


PCA 通过对数据维数进行压缩,尽可能降低原数据的维数(复杂度)损失少量信息,在此过程中可能会舍弃原有数据、创造新的变量。


通过正交变换将一组可能存在相关性的变量转换为一组线性不相关的变量,转换后的这组变量叫主成分。


  • sklearn.decomposition.PCA(n_components=None) 将数据分解为较低维数空间
  • n_components: 小数表示保留百分之多少的信息;整数表示减少到多少特征 例如:由20个特征减少到10个
  • 返回值:转换后指定维度的array


非主要成分的数据不是被删除,而是被压缩,在空间几何中被称为投影


from sklearn.decomposition import PCA
def dm02_PCA():
    data = [[2, 8, 4, 5],
    [6, 3, 0, 8],
    [5, 4, 9, 1]]
 
    transfer = PCA(n_components=0.9)
 
    data1 = transfer.fit_transform(data)
    print(data1, data1.shape)
 
    transfer2 = PCA(n_components=3)
    data2 = transfer2.fit_transform(data)
    print(data2, data2.shape)


  • 主成分分析变换后,数据会发生变化


相关系数法


相关系数:反映特征列之间(变量之间)密切相关程度的统计指标。


特征x和目标值y的密切程度,是否同增同减;特征x和特征x之间是否同增同减;


可以把密切相关的2个列,删除掉1列,达到特征降维的效果


  • 常见2个相关系数:皮尔逊相关系数、斯皮尔曼相关系数


皮尔逊相关系数  


  • 反映变量之间相关关系密切程度的统计指标


相关系数的值介于–1与+1之间,当 r>0 时,表示两变量正相关,r<0 时,两变量为负相关,当 |r|=1 时,表示两变量为完全相关,当r=0时,表示两变量间无相关关系。


|r|<0.4为低度相关;0.4≤|r|<0.7为显著性相关;0.7≤|r|<1为高度线性相关


  • from scipy.stats import pearsonr


from scipy.stats import pearsonr
def dm03_pearsonr():
    x1 = [12.5, 15.3, 23.2, 26.4, 33.5, 34.4, 39.4, 45.2, 55.4, 60.9]
    x2 = [21.2, 23.9, 32.9, 34.1, 42.5, 43.2, 49.0, 52.8, 59.4, 63.5]
    print('pearsonr(x1, x2)-->', pearsonr(x1, x2))


相关系数斯皮尔曼


from scipy.stats import spearmanr
def dm04_spearmanr():
    x1 = [12.5, 15.3, 23.2, 26.4, 33.5, 34.4, 39.4, 45.2, 55.4, 60.9]
    x2 = [21.2, 23.9, 32.9, 34.1, 42.5, 43.2, 49.0, 52.8, 59.4, 63.5]
    print('spearmanr(x1, x2)-->', spearmanr(x1, x2))


斯皮尔曼相关系数与之前的皮尔逊相关系数大小性质一样,取值 [-1, 1]之间,斯皮尔曼相关系数比皮尔逊相关系数应用更加广泛。


小结


  • 低方差过滤法:按照阈值,把方差比较小的某一列进行剔除,sklearn.feature_selection.VarianceThreshold
  • PCA主成分分析:数据压缩,高维数据转换为低维数据,然后产生了新的变量,sklearn.decomposition.PCA
  • 皮尔逊相关系数:|r|<0.4为低度相关;0.4≤|r|<0.7为显著性相关;0.7≤|r|<1为高度线性相关,from scipy.stats import pearsonr
  • 斯皮尔曼相关系数:通过等级差进行计算,计算相对简单,使用更广,from scipy.stats import spearmanr


相关文章
|
10月前
|
机器学习/深度学习 算法 Python
机器学习特征筛选:向后淘汰法原理与Python实现
向后淘汰法(Backward Elimination)是机器学习中一种重要的特征选择技术,通过系统性地移除对模型贡献较小的特征,以提高模型性能和可解释性。该方法从完整特征集出发,逐步剔除不重要的特征,最终保留最具影响力的变量子集。其优势包括提升模型简洁性和性能,减少过拟合,降低计算复杂度。然而,该方法在高维特征空间中计算成本较高,且可能陷入局部最优解。适用于线性回归、逻辑回归等统计学习模型。
422 7
|
机器学习/深度学习 存储 设计模式
特征时序化建模:基于特征缓慢变化维度历史追踪的机器学习模型性能优化方法
本文探讨了数据基础设施设计中常见的一个问题:数据仓库或数据湖仓中的表格缺乏构建高性能机器学习模型所需的历史记录,导致模型性能受限。为解决这一问题,文章介绍了缓慢变化维度(SCD)技术,特别是Type II类型的应用。通过SCD,可以有效追踪维度表的历史变更,确保模型训练数据包含完整的时序信息,从而提升预测准确性。文章还从数据工程师、数据科学家和产品经理的不同视角提供了实施建议,强调历史数据追踪对提升模型性能和业务洞察的重要性,并建议采用渐进式策略逐步引入SCD设计模式。
448 8
特征时序化建模:基于特征缓慢变化维度历史追踪的机器学习模型性能优化方法
|
7月前
|
存储 分布式计算 API
基于PAI-FeatureStore的LLM embedding功能,结合通义千问大模型,可通过以下链路实现对物品标题、内容字段的离线和在线特征管理。
本文介绍了基于PAI-FeatureStore和通义千问大模型的LLM embedding功能,实现物品标题、内容字段的离线与在线特征管理。核心内容包括:1) 离线特征生产(MaxCompute批处理),通过API生成Embedding并存储;2) 在线特征同步,实时接入数据并更新Embedding至在线存储;3) Python SDK代码示例解析;4) 关键步骤说明,如客户端初始化、参数配置等;5) 最佳实践,涵盖性能优化、数据一致性及异常处理;6) 应用场景示例,如推荐系统和搜索排序。该方案支持端到端文本特征管理,满足多种语义理解需求。
260 1
|
机器学习/深度学习 算法 数据可视化
机器学习模型中特征贡献度分析:预测贡献与错误贡献
本文将探讨特征重要性与特征有效性之间的关系,并引入两个关键概念:预测贡献度和错误贡献度。
1063 3
|
10月前
|
存储 机器学习/深度学习 缓存
特征平台PAI-FeatureStore的功能列表
本内容介绍了阿里云PAI FeatureStore的功能与使用方法,涵盖离线和在线特征管理、实时特征视图、行为序列特征视图、FeatureStore SDK的多语言支持(如Go、Java、Python)、特征生产简化方案、FeatureDB存储特性(高性能、低成本、及时性)、训练样本导出以及自动化特征工程(如AutoFE)。同时提供了相关文档链接和技术细节,帮助用户高效构建和管理特征工程。适用于推荐系统、模型训练等场景。
335 2
|
10月前
PAI-Rec推荐平台对于实时特征有三个层次
PAI-Rec推荐平台针对实时特征有三个处理层次:1) 离线模拟反推历史请求时刻的实时特征;2) FeatureStore记录增量更新的实时特征,模型特征导出样本准确性达99%;3) 通过callback回调接口记录请求时刻的特征。各层次确保了实时特征的准确性和时效性。
278 0
|
存储 分布式计算 MaxCompute
使用PAI-FeatureStore管理风控应用中的特征
PAI-FeatureStore 是阿里云提供的特征管理平台,适用于风控应用中的离线和实时特征管理。通过MaxCompute定义和设计特征表,利用PAI-FeatureStore SDK进行数据摄取与预处理,并通过定时任务批量计算离线特征,同步至在线存储系统如FeatureDB或Hologres。对于实时特征,借助Flink等流处理引擎即时分析并写入在线存储,确保特征时效性。模型推理方面,支持EasyRec Processor和PAI-EAS推理服务,实现高效且灵活的风险控制特征管理,促进系统迭代优化。
298 6
|
机器学习/深度学习 人工智能 JSON
人工智能平台PAI产品使用合集之创建特征视图时遇到报错,该如何排查
阿里云人工智能平台PAI是一个功能强大、易于使用的AI开发平台,旨在降低AI开发门槛,加速创新,助力企业和开发者高效构建、部署和管理人工智能应用。其中包含了一系列相互协同的产品与服务,共同构成一个完整的人工智能开发与应用生态系统。以下是对PAI产品使用合集的概述,涵盖数据处理、模型开发、训练加速、模型部署及管理等多个环节。
|
存储 机器学习/深度学习 人工智能
人工智能平台PAI使用问题之特征平台是否可以与Java进行对接
阿里云人工智能平台PAI是一个功能强大、易于使用的AI开发平台,旨在降低AI开发门槛,加速创新,助力企业和开发者高效构建、部署和管理人工智能应用。其中包含了一系列相互协同的产品与服务,共同构成一个完整的人工智能开发与应用生态系统。以下是对PAI产品使用合集的概述,涵盖数据处理、模型开发、训练加速、模型部署及管理等多个环节。
|
机器学习/深度学习 数据采集 存储
在机器学习和数据科学中,数据预处理是一个至关重要的步骤。数据规范化(或称为特征缩放)是预处理的一种常见技术,它可以帮助我们改进模型的性能。`sklearn.preprocessing`模块提供了多种数据规范化的方法,其中`StandardScaler`和`MinMaxScaler`是最常用的两种。
在机器学习和数据科学中,数据预处理是一个至关重要的步骤。数据规范化(或称为特征缩放)是预处理的一种常见技术,它可以帮助我们改进模型的性能。`sklearn.preprocessing`模块提供了多种数据规范化的方法,其中`StandardScaler`和`MinMaxScaler`是最常用的两种。

热门文章

最新文章