狠狠撸
Search
Submit Search
Randomforestて?高次元の変数重要度を見る #japanr LT
?
6 likes
?
12,608 views
Akifumi Eguchi
JapanR 2016でのLT資料です
Read less
Read more
1 of 17
Download now
Downloaded 25 times
More Related Content
Randomforestて?高次元の変数重要度を見る #japanr LT
1.
Randomforestで高次元の変数重要度を見る????? Janitza, S., Celik, E., & Boulesteix, A. L. (2015). A computaAonally fast variable importance test for random forests for high-dimensional data. 20161127: Japan.R LT @Yahoo!: TwiTer: @siero5335
2.
機械学習で重要な課題といえば?????? 特徴量の抽出! 特にデータが高次元の場合、 どれが重要な特徴量なのかわかりにくい
3.
機械学習で重要な課題といえば?????? 特徴量の抽出! 特にデータが高次元の場合、 どれが重要な特徴量なのかわかりにくい 特徴量抽出についての参考資料 hTp://www.slideshare.net/Keiku322/r48rtokyor hTp://www.slideshare.net/sercantahaahi/feature- selecAon-with-r-in-jp XgboostのGBDT feature, FeatureHashing詳細 RFのジニ係数から特徴選択
4.
機械学習で重要な課題といえば?????? 特徴量の抽出! 特にデータが高次元の場合、 どれが重要な特徴量なのかわかりにくい 特徴量抽出についての参考資料 RFだとGini係数あるいはpermutaAonから出す変数重要度 があるが今回はpermutaAonの変数重要度に基づいた手法 hTp://www.slideshare.net/Keiku322/r48rtokyor hTp://www.slideshare.net/sercantahaahi/feature- selecAon-with-r-in-jp XgboostのGBDT feature, FeatureHashing詳細 RFのジニ係数から特徴選択
5.
変数重要度の分布を計算できれば仮説検定もできるはず Randomforestで高次元の変数重要度を見る????? Janitza, S., Celik, E., & Boulesteix, A. L. (2015). A computaAonally fast variable importance test for random forests for high-dimensional data.
6.
どうやって使うの? hTps://cran.r-project.org/web/packages/vita/index.html randomforestとvita packageを組み合わせて使うのが普通だが、 ranger内に関数が用意されてて早くて楽なので今回はそっちを使う
7.
どうやって使うの?rangerのすがた library(ranger) # > version 0.5.0 library(mlbench) data(Sonar, package="mlbench") Sonar[,61] = as.numeric(Sonar[,61])-1 Sonar <- as.data.frame(Sonar) testRF <- ranger(Class ~ ., data = Sonar, mtry = 5, importance = "permutaAon")
8.
どうやって使うの?rangerのすがた library(ranger) # > version 0.5.0 library(mlbench) data(Sonar, package="mlbench") Sonar[,61] = as.numeric(Sonar[,61])-1 Sonar <- as.data.frame(Sonar) testRF <- ranger(Class ~ ., data = Sonar, mtry = 5, importance = "permutaAon") importance_pvalues(testRF, method = "janitza", conf.level = 0.95) importanceが信頼区間, p-value付きででてくる
9.
どうやって使うの?caretのすがた library(ranger) library(caret) library(mlbench) data(Sonar, package="mlbench") train.x = data.matrix(Sonar[train.ind, 1:60]) train.y = Sonar[train.ind, 61] tr = trainControl(method = "repeatedcv”, number = 5, repeats = 5) grid = expand.grid(mtry = 1:20) set.seed(71) ranger_?t = train(train.x, train.y, method = "ranger", tuneGrid = grid, trControl=tr, importance = "permutaAon") importance_pvalues(ranger_?t$?nalModel, method = "janitza", conf.level = 0.95)
10.
おおまかなしくみ VIj: 変数Xjの変数重要度, 0以上であれば判別に寄与してる (Xjを使うより、Xjの独立したコピーであるXj*を使ったほうが 誤分類率が高い) 通常であれば下記のように、OOBから変数重要度を求める
11.
おおまかなしくみ Hold-outなら2個, CVならk個のモデルをつくり、 それぞれのモデルにおける変数重要度を求めることもできる Slを使って算出 Holdout K-fold CV (目的変数がカテゴリの場合)
12.
おおまかなしくみ Hold-outなら2個, CVならk個のモデルをつくり、 それぞれのモデルにおける変数重要度を求めることもできる Slを使って算出 Holdout K-fold CV (目的変数がカテゴリの場合) 今回はこっちを使う Vita packageだと kも指定できる
13.
おおまかなしくみ 1.? 元データをランダムに半分こ 2.? 下記の感じでF^ 0を算出する 3.?
p-valueを より算出 例: 変数重要度が負のやつ全て 例: 変数重要度が0のやつ全て 例: 変数重要度が負のモノすべて に-1を掛けた値 : empirical cumulaAve distribuAon funcAon 馴染み深いp-valueが出てくるので カットオフラインがわかりやすい
14.
どうでもいいこと 著者はメディカルインフォマティクス畑の人 D論が出てるので熱心な方は以下参照(今年の? hTps://edoc.ub.uni-muenchen.de/19671/1/Janitza_Silke.pdf
15.
Enjoy feature selecAon !
17.
どうやって使うの?vitaのすがた hTps://cran.r-project.org/web/packages/vita/index.html randomforestとvita packageを組み合わせて使うのが普通だが、 ranger内に関数が用意されてて早くて楽なので今回はそっちを使う Vita packageの場合の使い方 cv_vi = CVPVI(X,y,k = 2,mtry = 3, ntree = 1000,ncores = 4) cv_p = NTA(cv_vi$cv_varim) summary(cv_p,pless = 0.1) cl.rf = randomForest(X,y,mtry = 3,ntree = 500, importance = TRUE) pvi_p = NTA(importance(cl.rf, type=1, scale=FALSE)) summary(pvi_p) または
Download