SlideShare uma empresa Scribd logo
1 de 16
それを捨てるなんてとんでもない
“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を使ってみる
欠測のある観測データ、どうしてますか?
https://www.iwanami.co.jp/cgi-bin/isearch?isbn=ISBN978-4-00-029847-6
目次
1. はじめに:欠測のDo's and Don'ts とガイドライン
2. 欠測データに対する最尤法
3. EMアルゴリズム
4. 単一代入と多重代入
5. 回帰分析モデルにおける欠測データ解析
6. 脱落を伴う経時測定データの解析
7. 欠測データメカニズムの検討
ランダムフォレスト
学習データのランダムサブセットで構築した様々な決定木の集合(=森)の
予測結果 を統合する
 分類 → 多数決
 回帰 → 平均
 特定の説明変数への依存が少ないため、クエリデータの説明変数が
欠損していても良い出力を与える
ALL DATA
Random subset Random subset Random subset
…
データ
①,②
データ
③
弱学習器=(決定木)
欠損値を初期値で埋める
 連続変数 → 中央値
 カテゴリカル変数 → 最頻値
それぞれの木でデータ同士の近似度計算
 目的変数が同じLeafに落ちたら+1
 そうでなければ+0
森全体でデータ間の近似度を集計・正規化
 近似度の和÷木の数
欠損していない他のデータから補完
連続変数 → 近似度による重み付け平均値
カテゴリカル変数 → 近似度による重みづけ最頻値データ①と②の近似度は+1
データ①と③の近似度は+0
randomForestで学習
 ノンパラメトリックな補完
 連続・カテゴリカルな変数の混在を許す
random Forestによる欠損値の補完
{randomForest} パッケージには、rfImpute 関数が用意されている
目的変数が同じLeafに落ちるかどうかで重みを計算する
↓
目的変数も欠損しているデータには
適用できない
既知のデータセットに含まれる欠損値の推定には役立つが、
予測をしたいデータの前処理に用いたいときに困る
random Forestによる欠損値の補完
{randomForest} パッケージには、rfImpute 関数が用意されているが…
random Forestによる欠損値の補完
missForestの改良点
補完したい変数を目的変数に設定する
変数ごとに予測値で補完
目的変数の欠損の有無でデータ分割
 補完したい変数が非欠損 → 教師データ
 補完したい変数が欠損値 → テストデータ
テストデータ=欠損値の予測
教師データでrandomForestの学習
補完開始
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データを間引いて使う
missForestを使ってみる
データの準備
データの
準備
とりあえず
動かす
(検証)
エラー計測と
チューニング
# create sample data with NA ---------------------------------------------
dia.mis <- prodNA(dia.sample, noNA=0.05)
summary(dia.mis)
5%欠損データを人工的につくる
missForestを使ってみる
とりあえず動かす
データの
準備
とりあえず
動かす
(検証)
エラー計測と
チューニング
dia.imp <- missForest(dia.mis, verbose=TRUE)
dia.imp %>% str(max.level=1)
dia.imp$ximp
返ってくる結果の構造に注意!
補完後のデータは $ximp
※ よく間違える
Iterationの打ち切り条件
 defference(s) が十分に小さくなったら収束
missForestを使ってみる
エラー計測: OOB error※を算出し、補完精度を推定する
データの
準備
とりあえず
動かす
(検証)
エラー計測と
チューニング
dia.imp$OOBerror
dia.imp <- missForest(dia.mis, verbose=TRUE, variablewise=TRUE)
※ out-of-bag (OOB) imputation error estimate
連続変数全体の評価=NRMSE (normalized root mean squared error)
カテゴリ変数全体の評価=PFC (proportion of falsely classified )
TRUEとセットすると変数の数だけ
OOB errorを返す(並びはカラム順)
missForestを使ってみる
チューニング: OOB errorを見ながら変えてみる。基本はRFと同じ。
データの
準備
とりあえず
動かす
(検証)
エラー計測と
チューニング
dia.imp <- missForest(dia.mis, verbose=TRUE, maxiter=4)
補完の繰り返し回数
※ 収束するまで繰り返しがデフォルト推奨
dia.imp <- missForest(dia.mis, verbose=TRUE, mtree=4000)
決定木の数
※ 多いほうがよさそうだが、
増やした分だけ計算量は線形に増加する
dia.imp <- missForest(dia.mis, verbose=TRUE, mtry=4)
決定木あたりに使う変数の数
※ デフォルトは(変数の数)1/2だが、
推奨値の提示は難しい(データ次第)とのこと
missForestを使ってみる
変数ごとに補完プロセスを並列化
データの
準備
エラー計測と
チューニング
補完プロセスの
並列化
require(doParallel)
cl <- makeCluster(NCOL(dia.mis))
registerDoParallel(cl)
dia.imp <- missForest(
xmis = dia.mis,
variablewise = TRUE,
ntree = 1200,
parallelize = "variables",
verbose = TRUE)
stopCluster(cl)
(検証)
missForestを使ってみる
randomForestの学習を並列化
データの
準備
エラー計測と
チューニング
補完プロセスの
並列化
require(doParallel)
cl <- makeCluster(NCOL(dia.mis))
registerDoParallel(cl)
dia.imp <- missForest(
xmis = dia.mis,
variablewise = TRUE,
ntree = 1200,
parallelize = "forests",
verbose = TRUE)
stopCluster(cl)
※ 注意
ソースコードを見ると指定できるコア数に制約あり
makeClusterで指定するコア数≦カラムの数
(variablewiseな並列化を推奨?)
(検証)
missForestを使ってみる
検証: 欠損のない完全データがあるときには補完精度の評価ができる
データの
準備
補完プロセス (検証)
エラー計測と
チューニング
mixError(ximp = dia.imp$ximp,
xmis = dia.mis,
xtrue= dia.sample)
dia.imp <- missForest(dia.mis, verbose=TRUE, xtrue=dia.sample)
ximp : 補完後のデータ
xmis : 人工的に作った欠損データ
xtrue: 欠損のない完全データ
補完中の精度評価も可能
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)
データの
準備
補完プロセス (検証)
エラー計測と
チューニング
参考文献
• 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

Mais conteúdo relacionado

Mais procurados

パターン認識と機械学習(PRML)第2章 確率分布 2.3 ガウス分布
パターン認識と機械学習(PRML)第2章 確率分布 2.3 ガウス分布パターン認識と機械学習(PRML)第2章 確率分布 2.3 ガウス分布
パターン認識と機械学習(PRML)第2章 確率分布 2.3 ガウス分布
Nagayoshi Yamashita
 
階層ベイズによるワンToワンマーケティング入門
階層ベイズによるワンToワンマーケティング入門階層ベイズによるワンToワンマーケティング入門
階層ベイズによるワンToワンマーケティング入門
shima o
 
傾向スコア:その概念とRによる実装
傾向スコア:その概念とRによる実装傾向スコア:その概念とRによる実装
傾向スコア:その概念とRによる実装
takehikoihayashi
 
MCMCサンプルの使い方 ~見る・決める・探す・発生させる~
MCMCサンプルの使い方 ~見る・決める・探す・発生させる~MCMCサンプルの使い方 ~見る・決める・探す・発生させる~
MCMCサンプルの使い方 ~見る・決める・探す・発生させる~
. .
 
状態空間モデルの考え方・使い方 - TokyoR #38
状態空間モデルの考え方・使い方 - TokyoR #38状態空間モデルの考え方・使い方 - TokyoR #38
状態空間モデルの考え方・使い方 - TokyoR #38
horihorio
 

Mais procurados (20)

第4回DARM勉強会 (構造方程式モデリング)
第4回DARM勉強会 (構造方程式モデリング)第4回DARM勉強会 (構造方程式モデリング)
第4回DARM勉強会 (構造方程式モデリング)
 
PRML8章
PRML8章PRML8章
PRML8章
 
ベイズファクターとモデル選択
ベイズファクターとモデル選択ベイズファクターとモデル選択
ベイズファクターとモデル選択
 
Rで計量時系列分析~CRANパッケージ総ざらい~
Rで計量時系列分析~CRANパッケージ総ざらい~ Rで計量時系列分析~CRANパッケージ総ざらい~
Rで計量時系列分析~CRANパッケージ総ざらい~
 
負の二項分布について
負の二項分布について負の二項分布について
負の二項分布について
 
マルコフ連鎖モンテカルロ法 (2/3はベイズ推定の話)
マルコフ連鎖モンテカルロ法 (2/3はベイズ推定の話)マルコフ連鎖モンテカルロ法 (2/3はベイズ推定の話)
マルコフ連鎖モンテカルロ法 (2/3はベイズ推定の話)
 
社会心理学者のための時系列分析入門_小森
社会心理学者のための時系列分析入門_小森社会心理学者のための時系列分析入門_小森
社会心理学者のための時系列分析入門_小森
 
階層ベイズと自由エネルギー
階層ベイズと自由エネルギー階層ベイズと自由エネルギー
階層ベイズと自由エネルギー
 
ノンパラベイズ入門の入門
ノンパラベイズ入門の入門ノンパラベイズ入門の入門
ノンパラベイズ入門の入門
 
パターン認識と機械学習(PRML)第2章 確率分布 2.3 ガウス分布
パターン認識と機械学習(PRML)第2章 確率分布 2.3 ガウス分布パターン認識と機械学習(PRML)第2章 確率分布 2.3 ガウス分布
パターン認識と機械学習(PRML)第2章 確率分布 2.3 ガウス分布
 
MCMC法
MCMC法MCMC法
MCMC法
 
階層ベイズによるワンToワンマーケティング入門
階層ベイズによるワンToワンマーケティング入門階層ベイズによるワンToワンマーケティング入門
階層ベイズによるワンToワンマーケティング入門
 
ベイズ統計学の概論的紹介
ベイズ統計学の概論的紹介ベイズ統計学の概論的紹介
ベイズ統計学の概論的紹介
 
非制約最小二乗密度比推定法 uLSIF を用いた外れ値検出
非制約最小二乗密度比推定法 uLSIF を用いた外れ値検出非制約最小二乗密度比推定法 uLSIF を用いた外れ値検出
非制約最小二乗密度比推定法 uLSIF を用いた外れ値検出
 
傾向スコア:その概念とRによる実装
傾向スコア:その概念とRによる実装傾向スコア:その概念とRによる実装
傾向スコア:その概念とRによる実装
 
20180118 一般化線形モデル(glm)
20180118 一般化線形モデル(glm)20180118 一般化線形モデル(glm)
20180118 一般化線形モデル(glm)
 
MCMCサンプルの使い方 ~見る・決める・探す・発生させる~
MCMCサンプルの使い方 ~見る・決める・探す・発生させる~MCMCサンプルの使い方 ~見る・決める・探す・発生させる~
MCMCサンプルの使い方 ~見る・決める・探す・発生させる~
 
非劣性試験の入門
非劣性試験の入門非劣性試験の入門
非劣性試験の入門
 
『バックドア基準の入門』@統数研研究集会
『バックドア基準の入門』@統数研研究集会『バックドア基準の入門』@統数研研究集会
『バックドア基準の入門』@統数研研究集会
 
状態空間モデルの考え方・使い方 - TokyoR #38
状態空間モデルの考え方・使い方 - TokyoR #38状態空間モデルの考え方・使い方 - TokyoR #38
状態空間モデルの考え方・使い方 - TokyoR #38
 

Destaque

Destaque (6)

Oracle property and_hdm_pkg_rigorouslasso
Oracle property and_hdm_pkg_rigorouslassoOracle property and_hdm_pkg_rigorouslasso
Oracle property and_hdm_pkg_rigorouslasso
 
forestFloorパッケージを使ったrandomForestの感度分析
forestFloorパッケージを使ったrandomForestの感度分析forestFloorパッケージを使ったrandomForestの感度分析
forestFloorパッケージを使ったrandomForestの感度分析
 
Introduction of "the alternate features search" using R
Introduction of  "the alternate features search" using RIntroduction of  "the alternate features search" using R
Introduction of "the alternate features search" using R
 
Interpreting Tree Ensembles with inTrees
Interpreting Tree Ensembles with  inTreesInterpreting Tree Ensembles with  inTrees
Interpreting Tree Ensembles with inTrees
 
for関数を使った繰り返し処理によるヒストグラムの一括出力
for関数を使った繰り返し処理によるヒストグラムの一括出力for関数を使った繰り返し処理によるヒストグラムの一括出力
for関数を使った繰り返し処理によるヒストグラムの一括出力
 
A3Cという強化学習アルゴリズムで遊んでみた話
A3Cという強化学習アルゴリズムで遊んでみた話A3Cという強化学習アルゴリズムで遊んでみた話
A3Cという強化学習アルゴリズムで遊んでみた話
 

Semelhante a Imputation of Missing Values using Random Forest

Transfer forest(PRMU Jun 2014)
Transfer forest(PRMU Jun 2014)Transfer forest(PRMU Jun 2014)
Transfer forest(PRMU Jun 2014)
Masamitsu Tsuchiya
 
パターン認識 第10章 決定木
パターン認識 第10章 決定木 パターン認識 第10章 決定木
パターン認識 第10章 決定木
Miyoshi Yuya
 
機会学習ハッカソン:ランダムフォレスト
機会学習ハッカソン:ランダムフォレスト機会学習ハッカソン:ランダムフォレスト
機会学習ハッカソン:ランダムフォレスト
Teppei Baba
 

Semelhante a Imputation of Missing Values using Random Forest (13)

Feature Selection with R / in JP
Feature Selection with R / in JPFeature Selection with R / in JP
Feature Selection with R / in JP
 
20150329 tokyo r47
20150329 tokyo r4720150329 tokyo r47
20150329 tokyo r47
 
RのffでGLMしてみたけど...
RのffでGLMしてみたけど...RのffでGLMしてみたけど...
RのffでGLMしてみたけど...
 
Maeshori missing
Maeshori missingMaeshori missing
Maeshori missing
 
PRML Chapter 14
PRML Chapter 14PRML Chapter 14
PRML Chapter 14
 
判別分析
判別分析判別分析
判別分析
 
最近のRのランダムフォレストパッケージ -ranger/Rborist-
最近のRのランダムフォレストパッケージ -ranger/Rborist-最近のRのランダムフォレストパッケージ -ranger/Rborist-
最近のRのランダムフォレストパッケージ -ranger/Rborist-
 
Rで学ぶロバスト推定
Rで学ぶロバスト推定Rで学ぶロバスト推定
Rで学ぶロバスト推定
 
Transfer forest(PRMU Jun 2014)
Transfer forest(PRMU Jun 2014)Transfer forest(PRMU Jun 2014)
Transfer forest(PRMU Jun 2014)
 
パターン認識 第10章 決定木
パターン認識 第10章 決定木 パターン認識 第10章 決定木
パターン認識 第10章 決定木
 
Model seminar shibata_100710
Model seminar shibata_100710Model seminar shibata_100710
Model seminar shibata_100710
 
GANの基本
GANの基本GANの基本
GANの基本
 
機会学習ハッカソン:ランダムフォレスト
機会学習ハッカソン:ランダムフォレスト機会学習ハッカソン:ランダムフォレスト
機会学習ハッカソン:ランダムフォレスト
 

Mais de Satoshi Kato

Mais de Satoshi Kato (10)

How to generate PowerPoint slides Non-manually using R
How to generate PowerPoint slides Non-manually using RHow to generate PowerPoint slides Non-manually using R
How to generate PowerPoint slides Non-manually using R
 
Dimensionality reduction with t-SNE(Rtsne) and UMAP(uwot) using R packages.
Dimensionality reduction with t-SNE(Rtsne) and UMAP(uwot) using R packages. Dimensionality reduction with t-SNE(Rtsne) and UMAP(uwot) using R packages.
Dimensionality reduction with t-SNE(Rtsne) and UMAP(uwot) using R packages.
 
Exploratory data analysis using xgboost package in R
Exploratory data analysis using xgboost package in RExploratory data analysis using xgboost package in R
Exploratory data analysis using xgboost package in R
 
How to use in R model-agnostic data explanation with DALEX & iml
How to use in R model-agnostic data explanation with DALEX & imlHow to use in R model-agnostic data explanation with DALEX & iml
How to use in R model-agnostic data explanation with DALEX & iml
 
Introduction of inspectDF package
Introduction of inspectDF packageIntroduction of inspectDF package
Introduction of inspectDF package
 
Introduction of featuretweakR package
Introduction of featuretweakR packageIntroduction of featuretweakR package
Introduction of featuretweakR package
 
Genetic algorithm full scratch with R
Genetic algorithm full scratch with RGenetic algorithm full scratch with R
Genetic algorithm full scratch with R
 
Intoroduction & R implementation of "Interpretable predictions of tree-based ...
Intoroduction & R implementation of "Interpretable predictions of tree-based ...Intoroduction & R implementation of "Interpretable predictions of tree-based ...
Intoroduction & R implementation of "Interpretable predictions of tree-based ...
 
Multiple optimization and Non-dominated sorting with rPref package in R
Multiple optimization and Non-dominated sorting with rPref package in RMultiple optimization and Non-dominated sorting with rPref package in R
Multiple optimization and Non-dominated sorting with rPref package in R
 
Deep forest (preliminary ver.)
Deep forest  (preliminary ver.)Deep forest  (preliminary ver.)
Deep forest (preliminary ver.)
 

Imputation of Missing Values using Random Forest