So-net無料ブログ作成
検索選択

集合知プログラミング [データマイニング]


集合知プログラミング

集合知プログラミング

  • 作者: Toby Segaran
  • 出版社/メーカー: オライリージャパン
  • 発売日: 2008/07/25
  • メディア: 大型本



この本を読み始めた。Pythonと機械学習アルゴリズムの基礎を学ぶのに適している。この本のよいところはアルゴリズムの実装を学べるだけでなく、Facebook APIの使い方なんかも記載されており、具体的にWeb APIの利用法も体得することができることだろうと思う。まさに「集合知」的なパーツに溢れていて興味がつきない。

残念なのは誤記が多いところであるが、これは心配ない。ネット上に誤記の訂正について書かれたサイト(『集合知プログラミング』解体新書 http://sites.google.com/site/prgclctintelligence/)が存在している。いや、エライ人もいるもんだ。こういう人がいるから勉強意欲が続くというものである。

数式があまり登場しないので、数式がないとピンとこない人は以下の本を同時に読むといいだろう。どちらも優れている本ではあるが、日本語で読める「パターン認識と機械学習」の方がとっつきやすいと思う。"The Elements of Statistical Learning"の方は世界の有名どころが書いた本で、先進的な手法についてももれなく記述されている。持っていて損はないであろう。


パターン認識と機械学習 上 - ベイズ理論による統計的予測

パターン認識と機械学習 上 - ベイズ理論による統計的予測

  • 作者: C. M. ビショップ
  • 出版社/メーカー: シュプリンガー・ジャパン株式会社
  • 発売日: 2007/12/10
  • メディア: 単行本


パターン認識と機械学習 下 - ベイズ理論による統計的予測

パターン認識と機械学習 下 - ベイズ理論による統計的予測

  • 作者: C. M. ビショップ
  • 出版社/メーカー: シュプリンガー・ジャパン株式会社
  • 発売日: 2008/07/11
  • メディア: 単行本



The Elements of Statistical Learning: Data Mining, Inference, and Prediction (Springer Series in Statistics)

The Elements of Statistical Learning: Data Mining, Inference, and Prediction (Springer Series in Statistics)

  • 作者: Trevor Hastie
  • 出版社/メーカー: Springer-Verlag
  • 発売日: 2009/03
  • メディア: ハードカバー




nice!(0)  コメント(1)  トラックバック(1) 

nice! 0

コメント 1

R

library(MASS)
library(randomForest)
library(gbm)
library(sqldf)
library(kernlab)

#サンプルデータ表示
data()
DT <- airquality
learn.DT <- DT[1:100,]
test.DT <- DT[101:153,]

#[1] "Ozone" "Solar.R" "Wind" "Temp" "Month" "Day"

##重回帰
air.lm <- lm(Ozone~Solar.R+Wind+Temp, data=learn.DT)
summary(air.lm)

#forecast
air.fcst <- predict(air.lm, test.DT)
air.fcst.d<- data.frame(air.fcst)
air.fcst.d2<- data.frame(Ozone=test.DT$Ozone, Ozone_F=air.fcst.d$air.fcst)
air.fcst.d2$ERR <- abs(air.fcst.d2$Ozone - air.fcst.d2$Ozone_F)
air.fcst.d2$PE <- abs(air.fcst.d2$Ozone - air.fcst.d2$Ozone_F) / air.fcst.d2$Ozone

#評価
filter <- !is.na(air.fcst.d2$ERR)
evl <- subset(air.fcst.d2,filter)
MAPE <- sqldf("select AVG(ERR) AS MAE, AVG(PE) AS MAPE from evl")
#MAE MAPE
#1 14.83017 0.5444773

##リッジ回帰
air.ridge <- lm.ridge(Ozone~Solar.R+Wind+Temp, data=learn.DT)
summary(air.ridge)

#
#Solar.R Wind Temp
#-61.06592093 0.06255777 -2.89659241 1.56542897

##RF
air.lm <- lm(Ozone~., data=learn.DT)
summary(air.lm)

#forecast
set.seed(0)
air.rf<-randomForest(Ozone~. , data=learn.DT, ntree=5000, importance=TRUE, na.action="na.omit")
summary(air.rf) #rsq - 0.6778472

#forecast
air.fcst <- predict(air.rf, test.DT)
air.fcst.d<- data.frame(air.fcst)
air.fcst.d2<- data.frame(Ozone=test.DT$Ozone, Ozone_F=air.fcst.d$air.fcst)
air.fcst.d2$ERR <- abs(air.fcst.d2$Ozone - air.fcst.d2$Ozone_F)
air.fcst.d2$PE <- abs(air.fcst.d2$Ozone - air.fcst.d2$Ozone_F) / air.fcst.d2$Ozone

#評価
filter <- !is.na(air.fcst.d2$ERR)
evl <- subset(air.fcst.d2,filter)
MAPE <- sqldf("select AVG(ERR) AS MAE, AVG(PE) AS MAPE from evl")
#MAE MAPE
#1 14.83017 0.5444773

##GBM
filter = !is.na(learn.DT$Ozone)
learn.DT2 <- subset(learn.DT,filter)
air.gbm<-gbm(Ozone~Solar.R+Wind+Temp , data=learn.DT2, distribution="gaussian"
, n.trees=5000)
summary(air.gbm) #air.gbm$rsq - 0.6778472

#forecast
air.fcst <- predict(air.gbm, test.DT, n.trees=5000)
air.fcst.d<- data.frame(air.fcst)
air.fcst.d2<- data.frame(Ozone=test.DT$Ozone, Ozone_F=air.fcst.d$air.fcst)
air.fcst.d2$ERR <- abs(air.fcst.d2$Ozone - air.fcst.d2$Ozone_F)
air.fcst.d2$PE <- abs(air.fcst.d2$Ozone - air.fcst.d2$Ozone_F) / air.fcst.d2$Ozone

#評価
filter <- !is.na(air.fcst.d2$ERR)
evl <- subset(air.fcst.d2,filter)
MAPE <- sqldf("select AVG(ERR) AS MAE, AVG(PE) AS MAPE from evl")
MAPE
#MAE MAPE
#1 13.75497 0.39894

##SVR
air.ksvm<-ksvm(Ozone~. , data=learn.DT, kernel="vanilladot", type="eps-svr")
summary(air.ksvm) #rsq - 0.6778472

#forecast
air.fcst <- predict(air.ksvm, test.DT)
air.fcst.d<- data.frame(air.fcst)
air.fcst.d2<- data.frame(Ozone=test.DT$Ozone, Ozone_F=air.fcst.d$air.fcst)
air.fcst.d2$ERR <- abs(air.fcst.d2$Ozone - air.fcst.d2$Ozone_F)
air.fcst.d2$PE <- abs(air.fcst.d2$Ozone - air.fcst.d2$Ozone_F) / air.fcst.d2$Ozone

#評価
filter <- !is.na(air.fcst.d2$ERR)
evl <- subset(air.fcst.d2,filter)
MAPE <- sqldf("select AVG(ERR) AS MAE, AVG(PE) AS MAPE from evl")
MAPE
#MAE MAPE
#1 14.35573 0.4701667
by R (2012-07-01 18:01) 

コメントを書く

お名前:
URL:
コメント:
画像認証:
下の画像に表示されている文字を入力してください。

トラックバック 1

トラックバックの受付は締め切りました
メッセージを送る

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。

×

この広告は1年以上新しい記事の更新がないブログに表示されております。