1. 首页
  2. 数据分析

机器学习-R-特征选择

点击上方免费订阅学习)

特征选择是实用机器学习的重要一步,一般数据集都带有太多的特征用于模型构建,如何找出有用特征是值得关注的内容。

1.Feature selection: All-relevant selection with the Boruta package

特征选择两种方法用于分析:

(1)最少最优特征选择(minimal-optimal feature selection)识别少量特征集合(理想状况最少)给出尽可能优的分类结果;

(2)所有相关特征选择(all-relevant feature selection)识别所有与分类有关的所有特征。

本文使用Boruta包,它使用随机森林分类算法,测量每个特征的重要行(z score)。

2. 使用caret包

使用递归特征消除法,rfe参数

x,预测变量的矩阵或数据框

y,输出结果向量(数值型或因子型)

sizes,用于测试的特定子集大小的整型向量

rfeControl,用于指定预测模型和方法的一系列选项

一些列函数可以用于rfeControl$functions,包括:线性回归(lmFuncs),随机森林(rfFuncs),朴素贝叶斯(nbFuncs),bagged trees(treebagFuncs)和可以用于caret的train函数的函数(caretFuncs)。

1)移除冗余特征

移除高度关联的特征。

Caret R包提供findCorrelation函数,分析特征的关联矩阵,移除冗余特征

[python]view plaincopy

  1. set.seed(7)

  2. #loadthelibrary

  3. library(mlbench)

  4. library(caret)

  5. #loadthedata

  6. data(PimaIndiansDiabetes)

  7. #Pcalculatecorrelationmatrix

  8. correlationMatrix<-cor(PimaIndiansDiabetes[,1:8])

  9. #summarizethecorrelationmatrix

  10. print(correlationMatrix)

  11. #findattributesthatarehighlycorrected(ideally>0.75)

  12. highlyCorrelated<-findCorrelation(correlationMatrix,cutoff=0.5)

  13. #printindexesofhighlycorrelatedattributes

  14. print(highlyCorrelated)

2) 根据重要性进行特征排序

特征重要性可以通过构建模型获取。一些模型,诸如决策树,内建有特征重要性的获取机制。另一些模型,每个特征重要性利用ROC曲线分析获取。

下例加载Pima Indians Diabetes数据集,构建一个Learning Vector Quantization(LVQ)模型。varImp用于获取特征重要性。从图中可以看出glucose, mass和age是前三个最重要的特征,insulin是最不重要的特征。


  1. #ensureresultsarerepeatable

  2. set.seed(7)

  3. #loadthelibrary

  4. library(mlbench)

  5. library(caret)

  6. #loadthedataset

  7. data(PimaIndiansDiabetes)

  8. #preparetrainingscheme

  9. control<-trainControl(method="repeatedcv",number=10,repeats=3)

  10. #trainthemodel

  11. model<-train(diabetes~.,data=PimaIndiansDiabetes,method="lvq",preProcess="scale",trControl=control)

  12. #estimatevariableimportance

  13. importance<-varImp(model,scale=FALSE)

  14. #summarizeimportance

  15. print(importance)

  16. #plotimportance

  17. plot(importance)

机器学习-R-特征选择

3)特征选择

自动特征选择用于构建不同子集的许多模型,识别哪些特征有助于构建准确模型,哪些特征没什么帮助。

特征选择的一个流行的自动方法称为 递归特征消除(Recursive Feature Elimination)或RFE。

下例在Pima Indians Diabetes数据集上提供RFE方法例子。随机森林算法用于每一轮迭代中评估模型的方法。该算法用于探索所有可能的特征子集。从图中可以看出当使用4个特征时即可获取与最高性能相差无几的结果。


  1. #ensuretheresultsarerepeatable

  2. set.seed(7)

  3. #loadthelibrary

  4. library(mlbench)

  5. library(caret)

  6. #loadthedata

  7. data(PimaIndiansDiabetes)

  8. #definethecontrolusingarandomforestselectionfunction

  9. control<-rfeControl(functions=rfFuncs,method="cv",number=10)

  10. #runtheRFEalgorithm

  11. results<-rfe(PimaIndiansDiabetes[,1:8],PimaIndiansDiabetes[,9],sizes=c(1:8),rfeControl=control)

  12. #summarizetheresults

  13. print(results)

  14. #listthechosenfeatures

  15. predictors(results)

  16. #plottheresults

  17. plot(results,type=c("g","o"))

机器学习-R-特征选择

来源:http://blog.csdn.net/python_learn/article/details/45008073

机器学习-R-特征选择

1、回复“数据分析师”查看数据分析师系列文章

2、回复“案例”查看大数据案例系列文章

3、回复“征信”查看相关征信的系列文章

4、回复“可视化”查看可视化专题系列文章

5、回复“SPPS”查看SPSS系列文章

6、回复“答案”查看hadoop面试题题目及答案

7、回复“爱情”查看大数据与爱情的故事

8、回复“笑话”查看大数据系列笑话

9、回复“大数据1、大数据2、大数据3、大数据4”查看大数据历史机遇连载

PPV课大数据ID:ppvke123(长按可复制)

本公众号专注大数据和数据科学领域,分享领域知识和相关技术文章,探索大数据商业价值,培养和挖掘大数据专业人才,欢迎大家关注!

原文始发于微信公众号(PPV课数据科学社区):机器学习-R-特征选择

原创文章,作者:ppvke,如若转载,请注明出处:http://www.ppvke.com/archives/16482

联系我们

4000-51-9191

在线咨询:点击这里给我发消息

工作时间:周一至周五,9:30-18:30,节假日休息