今週の課題

データ解析の手法は、ただ闇雲に用いただけで必要な知識がデータから抽出できるというものではない。様々な手法の、原理、仮定 (前提)、その手法が用いるモデルの構造とパラメータの意味を知り、それぞれの長所と短所を理解した上で 、解析するデータに適切な手法を用いるべきである。そのためには様々な手法を適用する前にまず、データそれ自体の理解が不可欠である。前回はこれを目的として、解析の第一段階としてのデータの理解に努めてもらった。

今週はリンク先の同志社大学の金 (じん) 先生が公開してくださっているコンテンツを参考に、判別分析と決定木 (樹木モデル、分類木とも) を用いて、今回のデータを解析して貰う。解析の目的は「定期預金を契約する人と契約しない人の間に、どのような差異があるか」を調べることである。

銀行の定期預金獲得テレマーケティングのデータの解析

まず下記のページを順に読み、手順や内容などを理解せよ。(いずれも同志社大学の金先生が公開されているもの)

そこに書かれている操作などを実行してみると、実行画面と同じ結果が大きく表示される。表示される数字の読み方なども上のリンク先を参考にせよ。

そしてこれらの手法を先週と同じデータに適用して、定期預金を契約する顧客と契約しない顧客の間にどのような差異があるか、データ解析せよ。必要に応じて

も参考にせよ。ここでデータ解析とは、

  • データの全体の概要の俯瞰 (前回の結果を用いてもよい)
  • データの構造を捉えるようなモデルの当てはめ (下記のようにできる)
  • モデルがデータによくあてはまっていることの確認と不確実性の評価 (表示できるグラフや、信頼区間などにより検討)
  • 当てはめたモデルの考察 (得たモデルからの目的に関する検討)

などを行うことを指している

実行するだけなら

install.packages(c("MASS", "rpart"), dependencies=TRUE)
library(MASS)
library(rpart)
lda(y~., data=bank)
qda(y~., data=bank)
rpart(y~., data=bank)

だけだが。。。? 上のコードでinstall.packages()がエラーになるときは、プロキシの設定が必要かもしれない。

なお、上のコードはデータを

bank <- read.table("/Users/Student/Downloads/bank/bank-full.csv", header=T, sep=";")

のように読み込んでいることを仮定している。

課題

データ解析に基づいて、セールスの方針を提案せよ。

追加メモ

関数の出力の保存と参照

各関数(コマンド、分析プログラム、分析ツール、分析手法)を実行した結果を、オブジェクトとして保存できる。

bank.lda <- lda(y~., data=bank)
bank.qda <- lda(y~., data=bank)
bank.rpart <- rpart(y~., data=bank)

結果を表示するには、単にオブジェクト名を入力するか、もしくはprint関数に表示してもらう。

bank.lda
print(bank.lda)

上の二行は同じ内容が表示されるので、どちらかでよい。

summary関数をかませると、追加の要約情報が表示されることがある。

summary(bank.lda)

これははずれ。上の三つの解析で必要な表示は、たとえば次のとおり。

print(bank.lda)
print(bank.qda)
print(bank.rpart)
summary(bank.rpart)
グラフ描画

plot関数がそれぞれの関数ごとに、結果を表すグラフを描いてくれる、ことがある。

plot(bank.lda)
plot(bank.qda)
plot(bank.rpart)

決定木に関するグラフは、plot関数のみでは完結しない。plot関数は樹形の絵を描いてくれるだけで、分割の情報をtext関数に補わせて初めて、決定木、という図を得る。

plot(bank.rpart)
text(bank.rpart)

文字が大きすぎるときは、グラフを描く前に文字の倍率を変えるように指示する。

par(cex=0.7)
plot(bank.rpart)
text(bank.rpart)
par(cex=1.0)

個人的には、グラフ描画が終わったら倍率を1.0に戻すようにしている。

またリンク先を参考に、plot関数にオプションを追加すると、見た目が変わる。

par(cex=0.7)
plot(bank.rpart,uniform=T,branch=0.6,margin=0.05)
text(bank.rpart)
par(cex=1.0)
rpart.plot:rpartのためのグラフ描画用のパッケージ

さらに次のパッケージとコマンドを使うと、もっと綺麗な図を描いてくれる。

install.packages(c("rpart.plot"), dependencies=TRUE)
library(rpart.plot)
prp(bank.rpart, type=2, extra=2)

typeとextraはいくつか選べるようである。

tree:もうひとつの決定木分析のためのパッケージ

ところでリンク先には、treeという関数も紹介されている。これを利用するには、同名のパッケージのインストールと読み込みが必要となる。

install.packages(c("tree"), dependencies=TRUE)
library(tree)
tree(y~., data=bank)
bank.tree <- tree(y~., data=bank)
plot(bank.tree)
text(bank.tree)