複数の学習データから行う回帰分析
世の中,案外データは揃わないものである. 研究室にいた頃は「学習データが足りないのが悪いんや」とか言っていたが,そうそう都合よくデータは揃わないものである.
さて,いま,重回帰を行ないたいとしよう. ただし,ここからが重要だが,つぎはぎの系列データがいくつか存在しているだけという状況はよくありうるものだ.
そういう時に,どうしたら良いか? 答えは簡単で,新しいデータで更新してしまえばよい.
あまり解説されていないっぽいが,Rの回帰パッケージにはupdate()関数が備わっている.
update(更新を行ないたい回帰オブジェクト,式 省略可,更新するためのデータ)
例えば,ggplot2パッケージに付属しているダイヤモンドのデータで更新をしてみよう.
library(ggplot2) diamonds <- data(diamonds) train1 <- diamonds[1:10000,] train2 <- diamonds[10001:30000,] train3 <- diamonds[30001:53940,] model1 <- lm(price ~ x + y + z + carat,data=train1) summary(model1) #更新してみる.式は省略してよいらしい model2 <- update(model1,data=train2) summary(model2) #更新してみる.式は省略してよいらしい model3 <- update(model2, data=train3) summary(model3)
更新していくたびにR-squaeredが悪化していく...ま,こういうこともあるっしょってことで.
ところで,Rでは回帰式の書き方がちょっと特殊だ.統計学の記法らしいが,ぼくはよく知らない.
目的変数 ~ 説明変数
.を使って省略表記もできるらしい.この時は「説明変数は目的変数以外の全部列」と暗黙的に示しているらしい.
目的変数~.
今回は単純にデータから更新をかけただけだが,amsemble学習に発展させることもできる. ここを参考にしてみたのだが,残念ながら,パッケージの仕様が相当に変わっており,よくわからずじまいだった.