2017-11-26

Rで回帰木分析 飲食点の売り上げを気温、花火大会の回数、CMの実施回数から分析する

Rで回帰木について実際に手を動かしてお勉強しますと。飲食点の売り上げを気温、花火大会の回数、CMの実施回数から分析します。


手を動かしながら学ぶ ビジネスに活かすデータマイニング
尾崎 隆
技術評論社
売り上げランキング: 141,877




回帰木とは


  • 前回までは、決定木を勉強してきた
  • 決定木は、カテゴリ別の目的変数から、分類ルールを作るというものだった
    • タイタニック号で、生存したかどうかという二値データ
    • 顧客が再来店したかどうかという二値データ
  • 一方で、目的変数が数値型になっているものを「回帰木」という


ここまでが本での解説。Wikipediaで「決定木」と調べると、このように書いてあった。

決定木には、他に2つの呼び名がある。
回帰木 (regression tree)
⇒分類に用いられるのではなく、実数値を取る関数の近似に用いられる。(例: 住宅の価格の見積り。患者の入院期間の見積り。)
分類木 (classification tree)
⇒y が分類変数の場合。例えば、性別(男あるいは女)、試合の結果(勝ち、負け)
おそらく、

  • 目的変数が数値データである場合は回帰木に
  • 目的変数がカテゴリカルデータである場合が分類木

と呼ばれているんだと思う。

回帰木を実践する 花火大会の売り上げに貢献する変数を特定する


  • 花火大会の売り上げデータをダウンロードし、インポートする
  • データセットは以下の通り
    • Revenue:うりあげ 
    • CM:CMの実施回数
    • Temp:気温
    • Firework:近隣の花火大会実施数


> d3 <- read.csv("C:/workspace/R/DM_sampledata/ch4_3_2.txt", sep="")
>   View(d3)
> head(d3)
   Revenue  CM Temp Firework
1 47.14347 141   31        2
2 36.92363 144   23        1
3 38.92102 155   32        0
4 40.46434 130   28        0
5 51.60783 161   37        0
6 32.87875 154   27        0

これで回帰木を作る。決定木を実行するには、rpart関数を用いる。目的変数が連続値であれば、自動的に回帰木として扱われる。同様に、目的変数がカテゴリ値ならば分類木として扱われる。

> d3.rp <- rpart(Revenue ~ ., d3)
> rpart.plot(d3.rp,uniform=T)
> plot(d3.rp, uniform=T,margin=2)
> text(d3.rp,uniform=T,use.n=T,all=F)


本来であればこういう図が出るはずなんだけど

なんか枝が少ないし、小さいしキモイ。見にくい。


なので、少しコードを変えてやってみる。

> install.packages("partykit")
> library(partykit)
> plot(as.party(d3.rp))


ほうほう、うまくいったのと、各nodeによって箱ひげ図で可視化されるので、かなり面白い。ちゃんと分散も可視化されるので、よいね。

  • その年の平均気温が27.5度未満だと、平均売上が一番低くなる
  • その年の平均気温が27.5度以上で、かつ近隣の花火大会の実施数が1回以上あるときの平均売り上げが一番高くなる


少なくとも回帰木でこういうことがわかるから、チェーン店だったら、どこに出店するかとかの意思決定をしやすいね。面白い。


手を動かしながら学ぶ ビジネスに活かすデータマイニング
尾崎 隆
技術評論社
売り上げランキング: 141,877


次はついにランダムフォレスト!



注目の投稿

 PythonのTweepyを利用して、Twitter APIを利用している。 その中で、ハマったポイントをメモしておく。 まず、Searchに関して。 Twitter検索は、クライアントアプリ側では、全期間の検索が可能になっている。 一方で、APIを利用する際は、過去1週間しか...