Mais conteúdo relacionado Semelhante a Imputation of Missing Values using Random Forest (13) Mais de Satoshi Kato (10) Imputation of Missing Values using Random Forest1. それを捨てるなんてとんでもない
“Imputation of Missing Values using Random Forest”
missForest packageを紹介します
(DJ Stekhoven, P Bühlmann (2011), Bioinformatics 28 (1), 112-118)
第53回R勉強会@東京(#TokyoR)
random Forestによる欠損値の補完(rfImpute)の概要
missForestによるrfImputeの改良
missForestを使ってみる
4. データ
①,②
データ
③
弱学習器=(決定木)
欠損値を初期値で埋める
連続変数 → 中央値
カテゴリカル変数 → 最頻値
それぞれの木でデータ同士の近似度計算
目的変数が同じLeafに落ちたら+1
そうでなければ+0
森全体でデータ間の近似度を集計・正規化
近似度の和÷木の数
欠損していない他のデータから補完
連続変数 → 近似度による重み付け平均値
カテゴリカル変数 → 近似度による重みづけ最頻値データ①と②の近似度は+1
データ①と③の近似度は+0
randomForestで学習
ノンパラメトリックな補完
連続・カテゴリカルな変数の混在を許す
random Forestによる欠損値の補完
{randomForest} パッケージには、rfImpute 関数が用意されている
7. missForestを使ってみる
データの準備
データの
準備
とりあえず
動かす
(検証)
エラー計測と
チューニング
#install.packages(missForest, dependencies = TRUE)
require(dplyr)
require(missForest)
data(diamonds, package = "ggplot2")
dia.sample <- sample_n(diamonds, size=2000)
dia.sample <- as.data.frame(dia.sample)
summary(dia.sample)
dia.sample %>% head
par(mfrow=c(3,4))
for(i in c(1,5:10)){
hist(unlist(dia.sample[,i]) ,
main=colnames(dia.sample[,i]), xlab="")
}
plot.new()
for(i in 2:4){
dia.sample[,i] %>% table %>% barplot
}
par(mfrow=c(1,1))
連続変数 ×7
カテゴリ変数 ×3
ggplot2のdiamondデータを間引いて使う
15. missForestを使ってみる
検証: mixError()は OOB Errorを基準に、別の補完法との比較もできる
require(mi)
dia.mdf <- missing_data.frame(dia.mis)
summary(dia.mdf)
n.chains <- 20
options(mc.cores=n.chains)
dia.MI <- mi(dia.mdf, n.chains = n.chains)
str(dia.MI,max.level = 2)
dia.dfs <- complete(dia.MI)
str(dia.dfs)
dia.imp_itr <- foreach(i=1:n.chains) %do% {
this <- dia.dfs[[i]]%>%select(-contains("missing"))
}
dia.err_mi <- foreach(i=1:n.chains, .combine=rbind) %do% {
mixError(ximp = dia.imp_itr[[i]],
xmis = dia.mis,
xtrue= dia.sample)
}
dia.err_mi
colMeans(dia.err_mi)
データの
準備
補完プロセス (検証)
エラー計測と
チューニング
16. 参考文献
• randomForest {randomForest}
• Breiman, L. (2001). Random forests. Machine learning, 45(1), 5–32.
• cForest {party}
• "Party on! A New, Conditional Variable Importance Measure for Random Forests Available in the party Package",
Strobl et al. 2009.
• http://epub.ub.uni-muenchen.de/9387/1/techreport.pdf
• rfImputeによる欠損値の補完
• “Random Forestを用いた欠測データの補完とその応用”
• http://www.rd.dnc.ac.jp/~tunenori/doc/jjasRf2010slide.pdf
• missForest
• Package missForest
• https://cran.r-project.org/web/packages/missForest/
• Vignette: “Using the missForest Package”
• https://stat.ethz.ch/education/semesters/ss2013/ams/paper/missForest_1.2.pdf
• “MissForest - nonparametric missing value imputation for mixed-type data”
• http://bioinformatics.oxfordjournals.org/content/early/2011/10/28/bioinformatics.btr597.full.pdf