在数据挖掘工作中,通常处理的是一个包含大量特征且含义未知的数据集,并基于该数据集挖掘到有用的特征。那么这里面一般是四个步骤:特征工程、特征选择、模型构造、模型融合。特征工程主要是清洗特征、删除无用特征和构造新特征,经过特征工程这个过程我们可能会得到大量的特征;而特征选择的目的就是从这大量的特征中挑选出优秀的特征,因为好的特征更能够提升模型性能,同时也通过降维达到了避免维度灾难的目的。本文主要利用sklearn 这个工具来实现常用的特征选择方法。
特征选择有两个功能:1.减少特征数量,起到降维作用,使泛化能力更强;2.减少过拟合,增强对特征和特征值之间的理解
本文主要基于sklearn 介绍两大类特征选择方法:
- 单变量特征选择方法,这里面主要包括皮尔森相关系数、最大信息系数、距离相关系数等,主要思想是衡量特征和标签变量之间的相关性;
- 基于模型的特征选择方法,这主要是指模型在训练过程中对特征的排序,如基于随机森林的特征选择、基于逻辑回归的特征选择等
1. 单变量特征选择
1.1 皮尔森相关系数
皮尔森相关系数是一种最简单的、能帮助理解特征和标签变量之间关系的方法。它衡量的是变量之间的线性相关性,其值在-1,1 之间;其中1 代表变量完全正相关,-1 代表完全负相关。
例如 a = [2,4,6,8] b = [4,8,12,16] c= [-4,-8,-12,-16] 使用scipy 来求解
import numpy as np
import sci