複数の学習データから行う回帰分析

世の中,案外データは揃わないものである. 研究室にいた頃は「学習データが足りないのが悪いんや」とか言っていたが,そうそう都合よくデータは揃わないものである.

さて,いま,重回帰を行ないたいとしよう. ただし,ここからが重要だが,つぎはぎの系列データがいくつか存在しているだけという状況はよくありうるものだ.

そういう時に,どうしたら良いか? 答えは簡単で,新しいデータで更新してしまえばよい.

あまり解説されていないっぽいが,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学習に発展させることもできる. ここを参考にしてみたのだが,残念ながら,パッケージの仕様が相当に変わっており,よくわからずじまいだった.