精华内容
下载资源
问答
  • 特征重要性排序–Permutation Importance 参考:Permutation Importance | Kaggle 相比于其他衡量特征重要性的方法,Permutation Importance的优点: 计算量低 广泛使用和容易理解 与我们要测量特征重要性的属性...

    特征重要性排序–Permutation Importance

    参考:Permutation Importance | Kaggle

    相比于其他衡量特征重要性的方法,Permutation Importance的优点:

    • 计算量低
    • 广泛使用和容易理解
    • 与我们要测量特征重要性的属性一致

    Permutation Importance的计算是在模型训练完成后进行的,即,模型参数不再改变。如果我们将验证集中的单独一列的数据进行打乱,并保持其他列和目标值不变,那么,预测打乱后的验证集的结果会怎么变化?
    在这里插入图片描述

    上图示例是将第二列的数据进行shaffle,如果模型预测对该列特征的依赖性很大,那么打乱后,预测精度会受到很大的影响。

    具体实施流程:

    1. 训练模型
    2. 打乱其中一列的数据,用该数据集进行预测,评估预测精度下降来提现该特征变量的重要性
    3. 将验证数据集还原,并重复第二步,分析其他特征变量

    代码示例:

    import numpy as np
    import pandas as pd
    from sklearn.model_selection import train_test_split
    from sklearn.ensemble import RandomForestClassifier
    
    data = pd.read_csv('../input/fifa-2018-match-statistics/FIFA 2018 Statistics.csv')
    y = (data['Man of the Match'] == "Yes")  # Convert from string "Yes"/"No" to binary
    feature_names = [i for i in data.columns if data[i].dtype in [np.int64]]
    X = data[feature_names]
    train_X, val_X, train_y, val_y = train_test_split(X, y, random_state=1)
    my_model = RandomForestClassifier(n_estimators=100,
                                      random_state=0).fit(train_X, train_y)
    
    import eli5
    from eli5.sklearn import PermutationImportance
    
    perm = PermutationImportance(my_model, random_state=1).fit(val_X, val_y)
    eli5.show_weights(perm, feature_names = val_X.columns.tolist())
    

    在这里插入图片描述

    像大部分数据科学中的结果一样,当打乱单个列的时候的结果变化会存在一定随机性,我们通过重复这个过程多次打乱来测量permutation importance计算的随机性大小。

    我们通过重复这个过程多次打乱来测量permutation importance计算的随机性大小。

    经常会遇到一些负的值,在这种情形下,在打乱(噪声)数据上的预测会得到比真实数据更高精度的结果,该特征的重要性接近于0,但存在一定的机会导致在打乱数据上的预测会更精确。这种情形一般更容易发生在小数据集,因为会有更大几率好运。

    展开全文
  • MATLAB中SVM的特征重要性排序

    千次阅读 2018-12-01 21:19:07
    MATLAB中可以通过支持向量机递归特征消除(Support Vector Machine Recursive Feature Elimination :SVM-RFE)来获得SVM的特征重要性排序!!! SVM-RFE算法是根据SVM在训练时生成的权向量w来构造排序...

    MATLAB中可以通过支持向量机递归特征消除(Support Vector Machine Recursive Feature Elimination :SVM-RFE)来获得SVM的特征重要性排序!!!

    SVM-RFE算法是根据SVM在训练时生成的权向量w来构造排序系数,每次迭代去掉一个排序系数最小的特征属性,最终得到所有特征属性的递减顺序的排序。
    经典的SVM-RFE采用的是线性核函数,推广到非线性情况,这里我们采用的是RBF核函数,此时采用的排序系数为:

    整体SVM-RFE(RBF核)算法过程如下:

    在每一次循环中,具有最小排序系数的特征将被移除,然后SVM对剩余的特征重新训练以获取新的排序系数。SVM-RFE方法通过迭代执行这一过程,最后得到一个特征排序表,利用该排序列表,定义若干个嵌套的特征子集 来训练SVM,并以SVM的预测正确率评估这些子集的优劣,从而获得最优的特征子集。需要注意的是,排在前面的那些特征,单个并不一定使得SVM分类器获得最好的分类性能,而是多个特征组合在一起,才使得分类器获得最优的分类性能,因此,SVM-RFE算法能选择出互补的特征组合。

    在选择最佳特征子集的过程中,我们采用训练集留一交叉检验错误识别率(LooErrorRate)和独立测试集错误识别率(TestErrorRate)两个指标来综合判定最佳的特征子集。由于采用RBF核函数,这就涉及到参数的选取设定(惩罚因子c和RBF核函数参数 ),在SVM-RFE确定特征排序表过程和训练集留一交叉检验过程中,采用固定的参数组 ,在独立测试集识别过程中将使用网格寻参(grid search)的方法来进行参数寻优。整体确定最佳特征子集过程如下表所示:

    SVM-RFE 代码实现

    
    function r = SVMRFE(label, data)
    % SVM-RFE
    % SVM Recursive Feature Elimination (SVM RFE)
    % by liyang @BNU Math
    % Email:patrick.lee@foxmail.com
    % last modified 2010.09.18
    %%
    n = size(data,2);
    s = 1:n;
    r = [];
    iter = 1;
    while ~isempty(s)
    %     if mod(iter, 10) == 0
    %         str = ['===',num2str(iter),'==='];
    %         disp(str);
    %         disp('processing .....');
    %     end
        X = data(:,s);
        
    %     v = 3;
    %     [bestCVaccuracy,bestc,bestg] = SVMcgForClass(label, X, ...
    %         -8,8,-8,8,v,0.8,0.8,4.5);
    %     cmd = ['-c ',num2str(bestc),' -g ',num2str(bestg)];
    %     model = svmtrain(label, X, cmd);
        
        model = svmtrain(label, X);
        
        w = model.SVs' * model.sv_coef;
        c = w.^2;
        [c_minvalue, f] = min(c);
        r = [s(f),r];
        ind = [1:f-1, f+1:length(s)];
        s = s(ind);
        
        iter = iter + 1;
    end
    

    该程序需要用到以下工具箱:
    Libsvm-mat faruto版本下载
    libsvm-mat-2.89-3[FarutoUltimate3.0]
    http://www.matlabsky.com/thread-9327-1-1.html

    ===================================================
    更多关于SVM的最新整理帖子请看:
    关于SVM的那点破事[长期更新整理 by faruto]
    http://www.matlabsky.com/thread-10966-1-1.html

    相关参考资料:


    SVM-RFE相关文献.rar (1.38 MB, 下载次数: 68741)

    ===================================================
    MATLAB 神经网络30个案例分析》视频销售官方地址:
    http://video.ourmatlab.com/
    视频销售客服QQ:1007911579
    ===================================================
    《MATLAB 神经网络30个案例分析》购买方式:
    当当网:
    http://product.dangdang.com/prod ... mp;ref=search-1-pub
    China-Pub:
    http://www.china-pub.com/50688
    卓越网:
    http://www.amazon.cn/mn/detailAp ... 03HGHB9W&sr=8-1
    ===================================================

    转自http://www.matlabsky.com/forum-viewthread-tid-11568-fromuid-18677.html

    展开全文
  • 模型中特征重要性排序 什么是软件模型? (What is a software model?) A software model describes all the important aspects of the software, hiding the rest of them. In other words, the software model ...

    模型中特征重要性排序

    什么是软件模型? (What is a software model?)

    A software model describes all the important aspects of the software, hiding the rest of them. In other words, the software model represents only the useful and required aspects of any software and all the other aspects that are not much important to showcase are abstracted.

    软件模型描述了软件的所有重要方面,而隐藏了其余部分。 换句话说, 软件模型仅代表任何软件的有用和必需方面,而对展示而言不太重要的所有其他方面则被抽象化。

    The software model is most of the time confused with software design, but both of them are two different things. The software design is a detailed representation of the entire software, but as already mentioned, the software model contains only the important things.

    大多数情况下, 软件模型与软件设计相混淆,但是两者都是两回事。 软件设计是整个软件的详细表示,但是正如已经提到的, 软件模型仅包含重要的内容。

    Also, the software model is created before the requirement analysis phase of the software while the software design is made after the analysis phase. It can be said that the software design is probably for the developers so that they can easily understand each requirement of the user and how it should be implemented inside the software. On the other hand, the software model is for the people who need to understand the software but not as deeply as the developers, as they are not meant for the developing purpose. An example of this can be investors.

    同样,在软件的需求分析阶段之前创建软件模型 ,而在分析阶段之后进行软件设计。 可以说,软件设计可能是针对开发人员的,以便他们可以轻松了解用户的每个需求以及应如何在软件内部实现它。 另一方面,软件模型适用于需要了解软件但不像开发人员那样深入的人员,因为它们并不是为了开发目的。 投资者就是一个例子。

    为什么需要软件模型? (Why do we need a software model?)

    A software model is a very useful tool in software development. Through the software model, the complexity of the entire software can be analyzed and also the strategy behind the development of the software can be estimated.

    软件模型是软件开发中非常有用的工具。 通过软件模型,可以分析整个软件的复杂性,并可以估算出软件开发背后的策略。

    A software model once created is useful in every phase of the software development: from the ideation phase to the retirement phase. All the other phases that fall in between these two phases and in which the software model is termed useful are as follows:

    一旦创建了软件模型,则在软件开发的每个阶段都非常有用:从构思阶段到淘汰阶段。 介于这两个阶段之间并且软件模型被称为有用的所有其他阶段如下:

    • Analysis phase (of the feasibility and the software requirements)

      分析阶段(可行性和软件要求)

    • Specification phase

      规范阶段

    • Designing phase

      设计阶段

    • Visualizing and understanding of the design

      可视化和理解设计

    • Coding and implementation phase

      编码和实施阶段

    • Unit Testing phase (Done by the developer)

      单元测试阶段(由开发人员完成)

    • Integration phase (bringing all the modules together)

      集成阶段(将所有模块整合在一起)

    • Sample testing phase (done by the tester)

      样品测试阶段(由测试人员完成)

    • And the software model is sometimes used as a reference in the maintenance phase also

      而且软件模型有时在维护阶段也可以用作参考

    翻译自: https://www.includehelp.com/basics/a-software-model-the-importance-of-a-model-in-a-software.aspx

    模型中特征重要性排序

    展开全文
  • LR模型特征重要性排序

    千次阅读 2019-09-17 23:10:02
    1.特征重要性的意义 LR模型也就是逻辑回归模型,作为一个简单的常用的模型,其有非常多的有点,除了模型简单,容易实现分布式,还有一个重要的优点就是模型的可解释性非常好。...2.逻辑回归模型特征重要性排序 Ta...

    1.特征重要性的意义

    LR模型也就是逻辑回归模型,作为一个简单的常用的模型,其有非常多的优点,除了模型简单,容易实现分布式,还有一个重要的优点就是模型的可解释性非常好。因为每个特征都对应一个模型参数wiw_{i},该参数越大,那么该特征对模型预测结果的影响就会越大,我们就说该特征就越重要,因此LR模型的特征重要性评估方式就是wiw_{i}的大小。

    2.逻辑回归模型特征重要性及排序

    Talk is cheap,Show me the code,直接亮代码

    from sklearn import linear_model
    import pandas as pd
    
    data_dir = 'dir_name/'
    train_data_file = 'train_data_file_name'
    test_data_dile = 'test_data_dile_name'
    df_train = pd.read_csv(data_dir+train_data_file)
    df_test = pd.read_csv(data_dir+test_data_dile)
    
    tr_data = df_train_train.as_matrix()
    va_data = df_train_validation.as_matrix()
    
    # 训练数据,每一行的第一列为样本label
    tr_x_data = tr_data[:, 1:] # 训练样本特征
    tr_y_data = tr_data[:, 0] # 训练样本真实label
    
    mod = linear_model.LogisticRegression()
    mod.fit(tr_x_data, tr_y_data)
    
    col_name = list(df_train.columns)[1:]
    
    m = {}
    for i in range(len(col_name)):
        m.setdefault(col_name[i], 0)
        m[col_name[i]] = mod.coef_[i]
        
    sorted(m.items(), key=lambda x: x[1], reverse=True)
    
    展开全文
  • 随机森林对特征重要性排序

    万次阅读 2018-05-18 17:00:47
    two methods: 1.Mean decrease impurity 大概是对于每颗树,按照impurity(gini /entropy /information gain)给特征排序,然后整个森林取平均2.Mean decrease accuracy 大概就是measure一下对每个特征加躁,看对...
  • 树模型天然会对特征进行重要性排序,以分裂数据集,构建分支; 1. 使用 Random Forest from sklearn.datasets import load_boston from sklearn.ensemble import RandomForestRegressor boston_data = load...
  • 随机森林的特征重要性排序

    千次阅读 2019-09-03 23:11:35
    Feature Selection ...在这个特征里面加入一些垃圾,如果和不放的准确率类似,那么就可以说明是重要的。 加什么垃圾呢?垃圾还能选吗? 一个是把原数据的分布改掉,一个是杂絮的影响。 有放回抽样boo...
  • 利用随机森林进行特征重要性排序

    千次阅读 2019-07-09 21:29:31
    第一步就是导包,这里我们主要需要用到的就是sklearn和pandas 我们先对自己的数据集进行一下处理 import numpy as np import ... 线性回归进行重要性排序 使用标准数据集对特征进行重要性排序 两种重要性排序的方法
  • from sklearn.datasets import load_boston from sklearn.ensemble import RandomForestRegressor from sklearn.model_selection import train_test_split import numpy as np #Load boston housing dataset as an ...
  • 导读本文将基于Airbnb KDD ...2018年,Airbnb提出基于 GBDT + embedding高级特征排序模型,基于用户的点击、预定序列学习 item的embedding表示,并设计高级特征添加到GBDT排序模型中,线上订单量显著提升,作为...
  • " 雨天天气下随机森林算法中各个特征排序 " + "\n" ) file.write( "———————————————————————————————————" + "\n" ) for f in range (X.shape[ 1 ]): print( "%d. ...
  • 2.特征重要性排序图: (这里有个不完美的地方,xgboost模块竟然没有提供改feature name的方法!所以全是f0,f1,f2,…,你只能对照数据文件看谁是第0个feature谁是第1个了) 想要修改f1,f2等字段请戳这里
  • 如果你还不知道如何使用XGboost模块XGBClassifier、plot_importance来做特征重要性排序,戳这个网址即可。 下面我们讲一个全网都没好好讲的问题:如何修改f1,f2成对应的特征名称。(我它喵了个咪的找了起码5天,都是...
  • 用xgboost模型对特征重要性进行排序

    万次阅读 多人点赞 2018-08-12 21:08:21
    xgboost对预测模型特征重要性排序的原理(即为什么xgboost可以对预测模型特征重要性进行排序)。 如何绘制xgboost模型得到的特征重要性条形图。 如何根据xgboost模型得到的特征重要性,在scikit-learn进行特征选择...

空空如也

空空如也

1 2 3 4 5 ... 18
收藏数 360
精华内容 144
关键字:

特征重要性排序