精华内容
下载资源
问答
  • 特征选择方法

    2021-02-21 21:16:26
    特征选择方法 为什么进行特征选择 1、去除不相关或冗余特征 2、减少过拟合,提高泛化能力,缓解维度灾难 3、提高模型准确率,加快模型训练速度 相关特征:对于学习任务(例如分类问题)有帮助,可以提升学习算法的...

    特征选择方法

    为什么进行特征选择

    1、去除不相关或冗余特征

    2、减少过拟合,提高泛化能力,缓解维度灾难

    3、提高模型准确率,加快模型训练速度

    相关特征:对于学习任务(例如分类问题)有帮助,可以提升学习算法的效果;

    无关特征:对于我们的算法没有任何帮助,不会给算法的效果带来任何提升;

    冗余特征:不会对我们的算法带来新的信息,或者这种特征的信息可以由其他的特征推断出

    特征选择方法

    一、Filter

    描述:按照发散性或者相关性对各个特征进行评分,设定阈值或者待选择阈值的个数,选择特征

    具体方法:

    • 方差

    • f_classif f_regression

    • 相关系数:皮尔逊相关系数等

    • 距离相关系数:克服Pearson相关系数的弱点

    在x 和x ^2这个例子中,即便Pearson相关系数是0,我们也不能断定这两个变量是独立的(有可能是非线性相关);但如果距离相关系数是0,那么我们就可以说这两个变量是独立的。

    • 卡方检验 Chi2
    • 信息增益
    • 互信息 mutual_info_classif mutual_info_regression
    • 最大信息系数

    互信息直接用于特征选择其实不是太方便:

    1、它不属于度量方式,也没有办法归一化,在不同数据及上的结果无法做比较;

    2、对于连续变量的计算不是很方便(X和Y都是集合,x,y都是离散的取值),通常变量需要先离散化,而互信息的结果对离散化的方式很敏感。

    最大信息系数MIC克服了这两个问题。它首先寻找一种最优的离散化方式,然后把互信息取值转换成一种度量方式,取值区间在[ 0 , 1 ]

    //使用方差进行选择
    from sklearn.feature_selection import VarianceThreshold
    f = VarianceThreshold(threshold=(.8 * (1 - .8)))
    f.fit_transform(X)//X为样本数据
    
    二、wrapper

    描述:根据目标函数,每次选择若干特征或者排除若干特征,直到选择出最佳的子集。

    ​ 迭代产生特征子集

    具体方法:

    • 递归特征消除 RFE

      • RFE通过递归减少考察的特征集规模来选择特征。首先,预测模型在原始特征上训练,每个特征指定一个权重。之后,那些拥有最小绝对值权重的特征被踢出特征集。
    • RFECV

      • 交叉验证的方式执行RFE,以此来选择最佳数量的特征
    三、Embedding

    描述:根据目标函数,每次选择若干特征或者排除若干特征,直到选择出最佳的子集。

    具体方法:

    • 决策树、随机森林、Xgboost
    //RF进行特征选择的例子
    from sklearn.model_selection import cross_val_score, ShuffleSplit
    from sklearn.datasets import load_boston
    from sklearn.ensemble import RandomForestRegressor
    import numpy as np
    # Load boston housing dataset as an example
    boston = load_boston()
    X = boston["data"]
    Y = boston["target"]
    names = boston["feature_names"]
    
    rf = RandomForestRegressor(n_estimators=20, max_depth=4)
    scores = []
    # 单独采用每个特征进行建模,并进行交叉验证
    for i in range(X.shape[1]):
        score = cross_val_score(rf, X[:, i:i+1], Y, scoring="r2",cv=ShuffleSplit(len(X), 3, .3)) 
        # 注意X[:, i]shape(1,m)和X[:, i:i+1]的区别hape(m,1)
        scores.append((format(np.mean(score), '.3f'), names[i]))
    print(sorted(scores, reverse=True))
    

    embedding方法可以先构建模型,得出重要性排序,选择特征。也可以使用sklearn的SelectFromModel.

    • 基于L1的特征选择 (L1-based feature selection)
    lsvc = LinearSVC(C=0.01, penalty="l1", dual=False).fit(X, y)
    model = SelectFromModel(lsvc, prefit=True)
    
    • 深度学习
    展开全文

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 11,651
精华内容 4,660
关键字:

特征选择方法