精华内容
下载资源
问答
  • 特征筛选

    2020-12-21 17:14:31
    1. 特征筛选 单特征分析 覆盖度 区分度 稳定性 多特征筛选 星座 Boruta VIF RFE L1 业务 内部特征的监控 前端稳定性 后端区分度 外部特征的评估 评分型数据 名单型数据 保护隐私 未来信息 1.1 单特征...

    1. 单特征分析

    1.1 简介

    好特征可以从几个角度衡量:覆盖度,区分度,相关性,稳定性

    1.2 覆盖度

    1. 应用场景

    • 采集类,授权类,第三方数据在使用前都会分析覆盖度

    2. 分类

    • 采集类 :如APP list (Android 手机 90%)
    • 授权类:如爬虫数据(20% 30%覆盖度)GPS (有些产品要求必须授权)

    3. 计算

    • 一般会在两个层面上计算覆盖度(覆盖度 = 有数据的用户数/全体用户数)
      • 全体存量客户
      • 全体有信贷标签客户

    4. 衍生

    • 覆盖度可以衍生两个指标:缺失率,零值率
      • 缺失率:一般就是指在全体有标签用户上的覆盖度
      • 零值率:很多信贷类数据在数据缺失时会补零,所以需要统计零值率
    • 业务越来越成熟,覆盖度可能会越来愈好,可以通过运营策略提升覆盖度

    1.3 区分度

    1. 简介

    • 评估一个特征对好坏用户的区分性能的指标

    2. 应用场金

    • 可以把单特征当做模型,使用AUC, KS来评估特征区分度
    • 在信贷领域,常用Information Value (IV)来评估单特征的区分度

    3. 计算

    • Information Value刻画了一个特征对好坏用户分布的区分程度
      • IV值越大
      • IV值越小

    在这里插入图片描述

    • IV值最后ln的部分跟WOE是一样的

    在这里插入图片描述

    • IV计算举例(数据为了方便计算填充,不代表实际业务)

    在这里插入图片描述

    • IV<0.02 区分度小 建模时不用 (xgboost,lightGMB 对IV值要求不高)
    • IV [0.02,0.5] 区分度大 可以放到模型里
    • (IV> 0.1 考虑是否有未来信息)
    • IV > 0.5 单独取出作为一条规则使用,不参与模型训练

    4. 注意

    • 模型中尽可能使用区分度相对较弱的特征,将多个弱特征组合,得到评分卡模型
    • 连续变量的IV值计算,先离散化再求IV,跟分箱结果关联很大(一般分3-5箱)

    1.4 相关性

    1. 简介

    • 对线性回归模型,有一条基本假设是自变量x1,x2,…,xp之间不存在严格的线性关系

    2. 分类

    • 需要对相关系数较大的特征进行筛选,只保留其中对标签区分贡献度最大的特征,即保留IV较大的
    • 皮尔逊相关系数,斯皮尔曼相关系数,肯德尔相关系数

    3. 选择

    • 考察两个变量的相关关系,首先得清楚两个变量都是什么类型的
      • 连续型数值变量,无序分类变量、有序分类变量
    • 连续型数值变量,如果数据具有正态性,此时首选Pearson相关系数,如果数据不服从正态分布,此时可选择
      Spearman和Kendall系数
    • 两个有序分类变量相关关系,可以使用Spearman相关系数
    • 一个分类变量和一个连续数值变量,可以使用kendall相关系数
    • 总结:就适用性来说,kendall > spearman > pearson
    4. 计算
    import pandas as pd 
    df = pd.DataFrame({'A':[5,91,3],'B':[90,15,66],'C':[93,27,3]}) 
    df.corr() # 皮尔逊 
    df.corr('spearman')#斯皮尔曼 
    df.corr('kendall')#肯德尔
    
    • 可以使用toad库来过滤大量的特征,高缺失率、低iv和高度相关的特征一次性过滤掉
    import pandas as pd 
    import toad data = pd.read_csv('data/germancredit.csv') 
    data.replace({'good':0,'bad':1},inplace=True) 
    data.shape
    
    #缺失率大于0.5,IV值小于0.05,相关性大于0.7来进行特征筛选 
    selected_data, drop_list= toad.selection.select(data,target = 'creditability', empty = 0.5, iv = 0.05, corr = 0.7, return_drop=True) 
    print('保留特征:',selected_data.shape[1],'缺失删除:',len(drop_list['empty']),'低iv删 除:',len(drop_list['iv']),'高相关删除:',len(drop_list['corr']))
    

    1.5 稳定性

    1. 简介

    • 主要通过计算不同时间段内同一类用户特征的分布的差异来评估

    2. 分类

    • 常用的特征稳定性的度量有Population Stability Index (PSI)
    • 当两个时间段的特征分布差异大,则PSI大
    • 当两个时间段的特征分布差异小,则PSI小
      在这里插入图片描述

    3. PSI和IV对比

    • IV是评估好坏用户分布差异的度量
    • PSI是评估两个时间段特征分布差异的度量
    • 都是评估分布差异的度量,并且公式其实一模一样,只是符号换了而已

    2. 多特征筛选

    1. 简介

    • 当构建了大量特征时,接下来的调整就是筛选出合适的特征进行模型训练
    • 过多的特征会导致模型训练变慢,学习所需样本增多,计算特征和存储特征成本变高

    2. 方法

    • 星座特征
    • Boruta
    • 方差膨胀系数
    • 后向筛选
    • L1惩罚项
    • 业务逻辑

    2.1 星座特征

    1. 简介

    • 星座是公认没用的特征,区分度低于星座的特征可以认为是无用特征

    2. 步骤

    • 把所有特征加上星座特征一起做模型训练
    • 拿到特征的重要度排序
    • 多次训练的重要度排序都低于星座的特征可以剔除

    2.2 Boruta

    1. 简介

    2. 原理

    Boruta原理

    • 创建阴影特征 (shadow feature) : 对每个真实特征R,随机打乱顺序,得到阴影特征矩阵S,拼接到真实特征后面,构成新的特征
      矩阵N = [R, S].
    • 用新的特征矩阵N作为输入,训练模型,能输出feature_importances_的模型,如RandomForest, lightgbm,xgboost都可以得到真实特征和阴影特征的feature importances,
    • 取阴影特征feature importance的最大值S_max,真实特征中feature importance小于S_max的,被认为是不重要的特征
    • 删除不重要的特征,重复上述过程,直到满足条件

    3. 应用

    import numpy as np 
    import pandas as pd 
    import joblib 
    from sklearn.ensemble import RandomForestClassifier 
    from boruta import BorutaPy 
    #加载数据 
    pd_data = joblib.load('data/train_woe.pkl') pd_data
    
    #处理数据,去掉id 和 目标值 
    pd_x = pd_data.drop(['SK_ID_CURR', 'TARGET'], axis=1) 
    x = pd_x.values # 特征 
    y = pd_data[['TARGET']].values # 目标 
    y = y.ravel() # 将多维数组降位一维
    
    • 使用Boruta,选择features
    # 先定义一个随机森林分类器 
    rf = RandomForestClassifier(n_jobs=-1, class_weight='balanced', max_depth=5) 
    ''' 
    BorutaPy function 
    estimator : 所使用的分类器 
    n_estimators : 分类器数量, 默认值 = 1000 
    max_iter : 最大迭代次数, 默认值 = 100 
    ''' 
    feat_selector = BorutaPy(rf, n_estimators='auto', random_state=1, max_iter=10) 
    feat_selector.fit(x, y)
    
    • 展示选择出来的feature
    dic_ft_select = dict() 
    # feat_selector.support_ # 返回特征是否有用,false可以去掉 
    for ft, seleted in zip(pd_x.columns.to_list(), feat_selector.support_): 
    	dic_ft_select[ft] = seleted 
    pd_ft_select = pd.DataFrame({'feature':pd_x.columns.to_list(), "selected": feat_selector.support_}) 
    pd_ft_selec
    

    2.3 方差膨胀系数 (VIF)

    1. 简介

    • 方差膨胀系数 Variance inflation factor (VIF)
    • 如果一个特征是其他一组特征的线性组合,则不会在模型中提供额外的信息,可以去掉
    • 评估共线性程度:
      在这里插入图片描述

    2. 计算

    • VF计算:
      在这里插入图片描述
    • VIF越大说明拟合越好,该特征和其他特征组合共线性越强,就越没有信息量,可以剔除

    5.3 应用

    • 加载数据
    import numpy as np 
    import pandas as pd 
    import joblib 
    from statsmodels.stats.outliers_influence import variance_inflation_factor 
    pd_data = joblib.load('./train_woe.pkl') #去掉ID和目标值 
    pd_x = pd_data.drop(['SK_ID_CURR', 'TARGET'], axis=1)
    
    • 计算方差膨胀系数
    #定义计算函数 
    def checkVIF_new(df): 
    	lst_col = df.columns 
    	x = np.matrix(df) 
    	VIF_list = [variance_inflation_factor(x,i) for i in range(x.shape[1])] 
    	VIF = pd.DataFrame({'feature':lst_col,"VIF":VIF_list}) 
    	max_VIF = max(VIF_list) print(max_VIF) 
    	return VIF 
    df_vif = checkVIF_new(pd_x) 
    df_vif
    
    • 选取方差膨胀系数 > 3的features
    df_vif[df_vif['VIF'] > 3]
    

    2.4 RFE 递归特征消除 (Recursive Feature Elimination)

    1. 简介

    • 使用排除法的方式训练模型,把模型性能下降最少的那个特征去掉,反复上述训练直到达到指定的特征个数

    6.2 api

    sklearn.feature_selection.RFE
    

    6.3 应用

    • 加载数据
    import numpy as np 
    import pandas as pd 
    import joblib from sklearn.feature_selection 
    import RFE from sklearn.svm 
    import SVR pd_data = joblib.load('data/final_data.pkl') 
    pd_data
    
    • 特征,目标提取
    pd_x = pd_data.drop(['SK_ID_CURR', 'TARGET'], axis=1) 
    x = pd_x.values 
    y = pd_data[['TARGET']].values 
    y = y.ravel()
    
    • 使用RFE,选择features
    #定义分类器 
    estimator = SVR(kernel="linear") 
    selector = RFE(estimator, 3, step=1) # step 一次去掉几个特征 
    selector = selector.fit(x, y) 
    #展示选择参数 
    dic_ft_select = dict() 
    for ft, seleted in zip(pd_x.columns.to_list(), selector.support_): 
    	dic_ft_select[ft] = seleted 
    pd_ft_select = pd.DataFrame({'feature':pd_x.columns.to_list(), "selected": selector.support_}) 
    pd_ft_select
    

    2.5 基于L1的特征选择 (L1-based feature selection)

    1. 简介

    • 使用L1范数作为惩罚项的线性模型(Linear models)会得到稀疏解:大部分特征对应的系数为0
    • 希望减少特征维度用于其它分类器时,可以通过 feature_selection.SelectFromModel 来选择不为0的系数
      • 特别指出,常用于此目的的稀疏预测模型有 linear_model.Lasso(回归), linear_model.LogisticRegression 和 svm.LinearSVC(分类)

    7.3 应用

    from sklearn.svm import LinearSVC 
    from sklearn.datasets import load_iris 
    from sklearn.feature_selection import SelectFromModel 
    iris = load_iris() X, y = iris.data, iris.target 
    X.shape
    
    lsvc = LinearSVC(C=0.01, penalty="l1", dual=False).fit(X, y) 
    model = SelectFromModel(lsvc, prefit=True) 
    X_new = model.transform(X) 
    X_new.shape
    

    3. 内部特征的监控

    3.1 前端监控(授信之前)

    • 特征稳定性
      • 大多数情况下,随着业务越来越稳定,缺失率应该呈现逐渐降低的趋势
      • 如下表所示,Week3缺失率突然增加到28%,大概率是数据采集或传输过程出问题了
      • PSI,特征维度的PSI如果>0.1可以观察一段时间

    前端监控

    3.2 后端监控(放款之后)

    • 特征区分度
      • AUC/KS 波动在10%以内
      • KS 如果是线上A卡 0.2是合格的水平
      • IV值的波动稍大可以容忍,和分箱相关,每周数据分布情况可能不同,对IV影响大一些
        后端监控
      • 分箱样本比例:
        后端监控
      • 分箱风险区分:要重视每个特征的风险趋势单调性
        • 每一箱 的bad_rate有波动,容忍度相对高一些
        • 高度重视不同箱之间风险趋势发生变化,如分箱1,分箱2,在week2和week3 风险趋势发生了变化
        • 如果风险趋势单调性发生变化,要考虑特征是不是要进行迭代
          分箱

    4. 外部特征评估

    4.1 数据评估标准

    • 覆盖度、区分度、稳定性

    4.2 使用外部数据注意事项

    1. 避免未来信息

    • 使用外部数据的时候,可能出现训练模型的时候效果好,上线之后效果差
      • 取最近一个时间周期的数据
      • 之前3~4个月或者更长时间的数据做验证,看效果是不是越来越差

    2. 外部数据覆盖度计算

    • 交集用户数 / 内部用户数
    • 外部数据选择
      • 如果外部数据免费,那么全部调用,但付费的三方数据要在有必要的时候在调用
      • 在计算外部数据覆盖度前,首先应该明确什么客群适合这个第三方数据
      • 内部缺少数据且这个第三方数据能提升区分度,那这个第三方数据才有用
    • 覆盖度 = 交集用户数 / 内部目标客群

    3. 避免内部数据泄露

    • 如果需要把数据交给外部公司,让对方匹配一定要将内部信息做Hash处理再给对方匹配
      Hash处理
    • 匹配上的是共有的数据,匹配不上的外部无法得知其身份

    4. 避免三方公司对结果美化

    • 内部自己调用接口测覆盖度直接调用即可
    • 如果是把样本交给外部公司让对方匹配,一定要加假样本
      • 这样他们只能匹配出结果,但无法得知真实的覆盖度
      • 只有内部公司能区分出真假样本,从而计算出真实覆盖度
      • 如果覆盖度高于真实样本比例,说明结果作假

    5. 评分型外部数据

    • 区分度和稳定性的分析方法同单特征的分析一样
    • 区分度:AUC, KS, IV, 风险趋势
    • 稳定性: PSI

    6. 模型效果

    • 内部特征训练的模型效果 vs 内部特征+外部特征训练的模型效果
      • AUC有 2~3个点的提升就很好了

    7. 黑名单型外部数据

    • 使用混淆矩阵评估区分度
      ·在这里插入图片描述
      在这里插入图片描述
    • Precision: 外部命中的尽可能多的是内部的坏客户
    • Recall: 内部的坏客户尽可能多的命中外部名单

    8. 回溯性

    • 外部数据是否具有可回溯性无法得知,所以尽可能取最近的样本去测
      早期接入数据后要密切关注线上真实的区分度表现
    展开全文
  • 特征筛选工具

    2021-01-24 16:28:32
    做模型时常常是特征越多模型准确率越高(至少在训练集上)。但过多的特征又增加了数据收集、处理、存储的工作量,以及模型的复杂度。 在保证模型质量的前提下,我们希望...本篇介绍特征筛选工具feature-selector,在

    做模型时常常是特征越多模型准确率越高(至少在训练集上)。但过多的特征又增加了数据收集、处理、存储的工作量,以及模型的复杂度。

    在保证模型质量的前提下,我们希望尽量少地使用特征,这样也间接地加强了模型的可解释性。一般来说,为避免过拟合,特征尽量控制在实例个数的1/20以下,比如有3000个实例,则特征最好控制在150以下。

    除了特征的具体个数,特征工程中也经常遇到某些特征严重缺失,特征相关性强,一些特征不但无法给模型带来贡献,反而带来噪声等问题。

    本篇介绍特征筛选工具feature-selector,在github上有1.8K星,它使用少量的代码解决了特征筛选中的常见问题,用法简单,便于扩展;同时也提供了作图方法,以更好地呈现特征效果。

    下载地址

    https://github.com/WillKoehrsen/feature-selector

    核心代码

    其核心代码文件只有feature_selector/feature_selector.py(600多行代码),所有方法都定义在FeatureSelector类中,因此,不用安装,只需要将该文件复制你的项目中即可使用。

    功能点

    • 寻找缺失严重的特征
    • 寻找仅有单值的特征
    • 寻找相关性强的特征(皮尔森相关系数,默认只考虑数值型)
    • 寻找特征重要性为0的特征(根据gbm模型)
    • 寻找特征重要性低的特征(根据gbm模型)

    示例代码

    示例及效果见:Feature Selector Usage.ipynb

    代码中使用Kaggle比赛中信用风险预测的数据,为分类问题。

    其中包含10000条数据,122个特征;将其TARGET字段作为标签,其它字段作为预测特征。

    首先用训练数据建立类的实例:

    fs = FeatureSelector(data = train, labels = train_labels)

    后面逐一列出了各个函数的用法,此处不再一一列举。

    图示

    工具提供plot_xxx等方法具象地展示了数据情况:

    • 数据缺失图
      该图横坐标为缺失比例,纵坐标为特征个数,例如第一列为缺失比例在0-0.1之间的特征约60多个。

    • 特征取值图
      该图横坐标为特征取值个数,纵轴为特征个数,例如第一个柱表示将近100个特征取值的个数在1-1000之间,最后一柱表示有几个特征有上万种取值。

    • 特征相关性
      下图中列出了相关系数大于0.98的特征(未列出所有特征),同时还提供fs.record_collinear()方法列出各个特征对及其相关系数。

    • 特征重要性
      工具默认使用lightgbm模型计算特征重要性,在调用方法时需要指定损失函数,以及使用分类方法还是回归方法,迭代次数等等。工具可显示其前N个重要特征。另外,还可以参考下图,查看模型特征个数与模型效果的关系,下图显示:将模型参数简化为122个后,模型准确率几乎不变。

    展开全文
  • 包含5大类特征筛选方法,12小类特征筛选方法的原理以及python实现代码。
  • 特征提升之特征筛选

    万次阅读 2017-09-05 18:23:21
    良好的数据特征组合不需太多,就可以使得模型的性能表现突出。冗余的特征虽然不会影响到模型的性能,但使得CPU的计算做了无用功。比如,PCA主要用于去除多余的线性相关的...然而特征筛选不存在对特征值的修改,从而更加
    良好的数据特征组合不需太多,就可以使得模型的性能表现突出。冗余的特征虽然不会影响到模型的性能,但使得CPU的计算做了无用功。比如,PCA主要用于去除多余的线性相关的特征组合,因为这些冗余的特征组合不会对模型训练有更多贡献。不良的特征自然会降低模型的精度。
    特征筛选与PCA这类通过主成分对特征进行重建的方法略有区别:对于PCA,经常无法解释重建之后的特征;然而特征筛选不存在对特征值的修改,从而更加侧重于寻找那些对模型的性能提升较大的少量特征。

    下面沿用Titanic数据集,试图通过特征筛选来寻找最佳的特征组合,并且达到提高预测准确性的目标。

    Python源码:

    #coding=utf-8
    import pandas as pd
    from sklearn.cross_validation import train_test_split
    from sklearn.feature_extraction import DictVectorizer
    from sklearn.tree import DecisionTreeClassifier
    from sklearn import feature_selection
    from sklearn.cross_validation import cross_val_score
    import numpy as np
    import pylab as pl
    
    #-------------download data
    titanic=pd.read_csv('http://biostat.mc.vanderbilt.edu/wiki/pub/Main/DataSets/titanic.txt')
    #-------------sperate data and target
    y=titanic['survived']
    X=titanic.drop(['row.names','name','survived'],axis=1)
    #-------------fulfill lost data with mean value
    X['age'].fillna(X['age'].mean(),inplace=True)
    X.fillna('UNKNOWN',inplace=True)
    #-------------split data,25% for test
    X_train,X_test,y_train,y_test=train_test_split(X,y,test_size=0.25,random_state=33)
    #-------------feature vectorization
    vec=DictVectorizer()
    X_train=vec.fit_transform(X_train.to_dict(orient='record'))
    X_test=vec.transform(X_test.to_dict(orient='record'))
    #-------------
    print 'Dimensions of handled vector',len(vec.feature_names_)
    #-------------use DTClassifier to predict and measure performance
    dt=DecisionTreeClassifier(criterion='entropy')
    dt.fit(X_train,y_train)
    print dt.score(X_test,y_test)
    #-------------selection features ranked in the front 20%,use DTClassifier with the same config to predict and measure performance
    fs=feature_selection.SelectPercentile(feature_selection.chi2,percentile=20)
    X_train_fs=fs.fit_transform(X_train,y_train)
    dt.fit(X_train_fs,y_train)
    X_test_fs=fs.transform(X_test)
    print dt.score(X_test_fs,y_test)
    
    percentiles=range(1,100,2)
    results=[]
    
    for i in percentiles:
        fs=feature_selection.SelectPercentile(feature_selection.chi2,percentile=i)
        X_train_fs=fs.fit_transform(X_train,y_train)
        scores=cross_val_score(dt,X_train_fs,y_train,cv=5)
        results=np.append(results,scores.mean())
    print results
    #-------------find feature selection percent with the best performance
    opt=int(np.where(results==results.max())[0])
    print 'Optimal number of features',percentiles[opt]
    #TypeError: only integer scalar arrays can be converted to a scalar index
    #transfer list to array
    #print 'Optimal number of features',np.array(percentiles)[opt]
    
    #-------------use the selected features and the same config to measure performance on test datas
    fs=feature_selection.SelectPercentile(feature_selection.chi2,percentile=7)
    X_train_fs=fs.fit_transform(X_train,y_train)
    dt.fit(X_train_fs,y_train)
    X_test_fs=fs.transform(X_test)
    print dt.score(X_test_fs,y_test)
    
    pl.plot(percentiles,results)
    pl.xlabel('percentiles of features')
    pl.ylabel('accuracy')
    pl.show()
    Result:



    分析:

    1.经过初步的特征处理后,最后训练与测试数据均有474个维度的特征。
    2.若之间使用全部474个维度的特征用于训练决策树模型进行分类预测,在测试集上的准确性约为81.76%
    3.若筛选前20%的维度的特征,在相同的模型配置下进行预测,那么在测试集上表现的准确性约为82.37%
    4.如果按照固定的间隔采用不同百分比的特征进行训练与测试,那么如图所示,通过交叉验证得出的准确性有很大的波动,最好的模型性能表现在选取前7%维度的特征的时候;
    5.如果使用前7%维度的特征,那么最终决策树模型可以在测试集上表现出85.71%的准确性,比最初使用全部特征的模型高处近4%。 

    展开全文
  • 高维生存数据的强大特征筛选
  • 特征筛选是模型训练前很重要的一步。from feature_selector import FeatureSelectorimport pandas as pd案例一:Air Quality Datasetair_quality = pd.read_csv('data/AirQualityUCI.csv')air_quality['Date'] = pd....

    特征筛选是模型训练前很重要的一步。

    from feature_selector import FeatureSelector

    import pandas as pd

    案例一:Air Quality Dataset

    air_quality = pd.read_csv('data/AirQualityUCI.csv')

    air_quality['Date'] = pd.to_datetime(air_quality['Date'])

    air_quality['Date'] = (air_quality['Date'] - air_quality['Date'].min()).dt.total_seconds()

    air_quality['Time'] = [int(x[:2]) for x in air_quality['Time']]

    air_quality.head()

    labels = air_quality['PT08.S5(O3)']

    air_quality = air_quality.drop(columns = 'PT08.S5(O3)')

    fs = FeatureSelector(data = air_quality, labels = labels)

    fs.identify_all(selection_params = {'missing_threshold': 0.5, 'correlation_threshold': 0.7,

    'task': 'regression', 'eval_metric': 'l2',

    'cumulative_importance': 0.9})

    。。。

    fs.plot_collinear(plot_all=True)

    案例二:Insurance Dataset

    保险数据集

    insurance = pd.read_csv('data/caravan-insurance-challenge.csv')

    insurance = insurance[insurance['ORIGIN'] == 'train']

    labels = insurance['CARAVAN']

    insurance = insurance.drop(columns = ['ORIGIN', 'CARAVAN'])

    insurance.head()

    fs = FeatureSelector(data = insurance, labels = labels)

    fs.identify_all(selection_params = {'missing_threshold': 0.8, 'correlation_threshold': 0.85,

    'task': 'classification', 'eval_metric': 'auc',

    'cumulative_importance': 0.8})

    insurance_missing_zero = fs.remove(methods = ['missing', 'zero_importance'])

    to_remove = fs.check_removal()

    fs.feature_importances.head()

    insurance_removed = fs.remove(methods = 'all', keep_one_hot=False)

    —END—

    微信公众号:数据分析联盟

    加群微信助手:lestat911

    ——

    手机淘宝用户复制下面:

    【Python全套代码 实战 图片 数据演示 案例】 http:// m.tb.cn/h.34wSLrP 点击链接,再选择浏览器咑閞;或復·制这段描述€hi79bdU0FGR€后到:point_right:淘♂寳♀:point_left:[来自超级会员的分享]

    展开全文
  • 随机森林能够度量每个特征的重要性,我们...特征筛选(随机森林)一般情况下,数据集的特征成百上千,因此有必要从中选取对结果影响较大的特征来进行进一步建模,相关的方法有:主成分分析、lasso等,这里我们介绍的是...
  • 0x00 前言我们在《特征工程系列:特征筛选的原理与实现(上)》中介绍了特征选择的分类,并详细介绍了过滤式特征筛选的原理与实现。本篇继续介绍封装式和嵌入式特征筛选的原理与...
  • 圆形特征筛选耦合随机样本的图像真伪决策
  • 超高维可加模型下的特征筛选,井海银,刘朝林,Fan and Lv(2008) 提出了以相关系数为基础的安全独立筛选方法,简称为SIS,此种方法可以对超高维模型进行特征筛选。然而,此种方法并不�
  • 建模-特征筛选

    2019-08-09 19:08:15
    第二次任务:对数据已经预处理的变量,使用IV和随机森林的...4、特征筛选 1、导入数据 #导入需要的包 import numpy as np import pandas as pd import LR as lr import matplotlib.pyplot as plt from sklearn.model...
  • 主要代码在autofeat.autofeat.AutoFeatModel#fit_transform, 在做完特征生成后, 调用 autofeat.featsel.select_features函数做特征筛选。 在select_features函数, 会做featsel_runs次特征筛选 selected_columns ...
  • pyspark实现iv特征筛选

    千次阅读 2018-08-14 17:56:04
    特征筛选和iv值 特征筛选 在实际的工程建模中,有时会引入大量的特征,以便可以从更多角度来刻画特征。但是当特征太多时,难免会引入一些无效特征。无效特征不仅会给模型带来噪音,并且还会增加模型的训练难度。...
  • 机器学习之特征筛选

    千次阅读 2019-07-13 15:42:45
    特征筛选与PCA这类通过选择主成分对特征进行重建的方法有所区别:PCA压缩之后的特征往往无法解释;但是特征筛选不存在对特征值的修改,而更加侧重于寻找那些对模型的性能提升较大的少量特征。 ##此模型采用的titanic...
  • 特征筛选实现1、特征筛选2、特征筛选具体案例操作参考文献: 1、特征筛选 (1)含义 特征筛选/选择( Feature Selection )也称特征子集选择( Feature Subset Selection , FSS ),或属性选择( Attribute Selection )。...
  • 基于sklearn的特征筛选

    2018-01-20 23:25:00
    特征筛选的作用 样本中的有些特征是所谓的“优秀特征”,使用这些特征可以显著的提高泛化能力。而有些特征在样本类别区分上并不明显,在训练中引入这些特征会导致算力的浪费;另外有些特征对样本的分类有反作用,...
  • 为此,提出一种基于目标感知特征筛选的孪生网络跟踪算法。将经过裁剪处理后的模板帧和检测帧送入到ResNet50的特征提取网络分别提取目标和搜索区域的浅层、中层、深层特征;在目标感知模块中,通过设计一个回归损失函数...
  • 特征工程系列:特征筛选的原理与实现1. 什么是特征工程2. 特征选择的方法2.1 Filter方法 过滤法2.2 Wrapper方法 封装式2.3 Embedded方法 嵌入式3. 特征选择实现3.1 去掉取值变化小的特征 要有区分度3.2 单变量特征...
  • 本pdf简要精辟的介绍了IV值理论,做特征筛选时能够高效的计算IV值
  • 特征工程又包含了Feature Selection(特征选择)、Feature Extraction(特征提取)和Feature construction(特征构造)等子...因此,我们需要进行特征筛选,排除无效/冗余的特征,把有用的特征挑选出来作为模型的训练数
  • 机器学习-特征筛选

    千次阅读 2018-01-26 20:02:12
    特征筛选与PCA这类通过选择主成分对特征进行重建方法略有区别:对于PCA而言,我们经常无法解释重建后的特征;但是特征筛选不存在对特征值的修改,而更加侧重于寻找那些对模型的性能提升较大的少量特征。 #泰坦尼克...
  • 天善学院-特征筛选与降低维度 jupyter notebook(python 语言) 很详细的讲解和应用,可以快速入门。应用是实例的。
  • 特征筛选:重要性评估

    千次阅读 2020-07-22 21:50:09
    特征筛选的目的: 避免无用的特征(avoid useless features) 避免冗余的特征(avoid redundant features) 使用易于理解的简单特征(good features should easy to understand) 好的特征具有如下的特点: 有...
  • 特征筛选(复习15)

    2018-01-21 00:03:36
    本文是个人学习笔记,内容主要基于sklearn库的特征筛选器对Titanic数据集进行特征预处理后,再进行分类。特征筛选与PCA这类通过选择主成分对特征进行重建的方法略有区别:对于PCA而言,经常无法解释重建之后的特征;...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 2,932
精华内容 1,172
关键字:

特征筛选