差分
このページの2つのバージョン間の差分を表示します。
両方とも前のリビジョン前のリビジョン次のリビジョン | 前のリビジョン | ||
mselab:2012:stat:week3 [2012/10/30 09:40] – watalu | mselab:2012:stat:week3 [不明な日付] (現在) – 外部編集 (不明な日付) 127.0.0.1 | ||
---|---|---|---|
行 5: | 行 5: | ||
- 次に前回と同じ保険のデータを3種類の学習機械を用いて分析し、保険の営業方針を立案する。 | - 次に前回と同じ保険のデータを3種類の学習機械を用いて分析し、保険の営業方針を立案する。 | ||
- | === 練習課題 === | + | === 準備 === |
- | == タイタニック号 == | + | |
+ | < | ||
+ | Sys.setenv(" | ||
+ | install.packages(c(" | ||
+ | </ | ||
+ | |||
+ | これでエラーが出る場合には、[[https:// | ||
+ | |||
+ | < | ||
+ | library(mvpart) | ||
+ | library(MASS) | ||
+ | library(kernlab) | ||
+ | </ | ||
+ | |||
+ | 以上の3つのライブラリを、この課題では使う可能性がある。 | ||
+ | |||
+ | == 緊急パッチ == | ||
+ | |||
+ | mvpartのインストールについて。 | ||
+ | |||
+ | * まず{{: | ||
+ | * Rのメニューで〔パッケージ〕→〔ローカルにあるzipファイルからのパッケージのインストール〕を選ぶ。 | ||
+ | * 「Select files」という子ウィンドウが出てくるので、保存したmvpart_1.6-0.zipというファイルを指定して、〔開く(O)〕をクリックする。 | ||
+ | |||
+ | で対応して欲しい。同様のことを、{{: | ||
+ | |||
+ | データ読み込みはできても、CRANにも接続できないなんて。 | ||
+ | |||
+ | |||
+ | == データの読み込み == | ||
+ | |||
+ | < | ||
+ | tic.learn <- read.table(" | ||
+ | tic.eval <- read.table(" | ||
+ | tic.test <- read.table(" | ||
+ | tic.eval <- cbind(tic.eval, | ||
+ | colnames(tic.eval)[86] <- " | ||
+ | rm(tic.test) | ||
+ | </ | ||
+ | |||
+ | == 少し加工する == | ||
+ | |||
+ | 以下の6行は、実行しない方がいい場合もある。 | ||
+ | |||
+ | < | ||
+ | tic.learn$V1 <- as.factor(tic.learn$V1) | ||
+ | tic.learn$V5 <- as.factor(tic.learn$V5) | ||
+ | tic.learn$V86 <- as.factor(tic.learn$V86) | ||
+ | tic.eval$V1 <- as.factor(tic.eval$V1) | ||
+ | tic.eval$V5 <- as.factor(tic.eval$V5) | ||
+ | tic.eval$V86 <- as.factor(tic.eval$V86) | ||
+ | </ | ||
+ | |||
+ | 回帰分析とロジスティック回帰分析は、上の6行を実行しないtic.learnとtic.evalを用いるのがよい。 | ||
+ | 決定木では上の6行を実行した後のtic.learnとtic.evalを用いるのがよい。 | ||
+ | また決定木に関しては、実行した場合と実行しない場合とで結果を比較すると良いかもしれない。 | ||
+ | |||
+ | ==== 練習課題 | ||
+ | === タイタニック号 | ||
タイタニック号の乗客の生死のデータがある。Rで | タイタニック号の乗客の生死のデータがある。Rで | ||
行 41: | 行 99: | ||
|生存(Survived)|生存(Yes)=1, | |生存(Survived)|生存(Yes)=1, | ||
- | == 先週の課題 == | + | === 先週の課題と同等の課題 === |
先週の課題は、タイタニック号で、生存率が高くなる条件を求めよ、という問題と同等。 | 先週の課題は、タイタニック号で、生存率が高くなる条件を求めよ、という問題と同等。 | ||
行 109: | 行 167: | ||
</ | </ | ||
- | == 線形学習機械 == | + | === 線形学習機械 |
上のデータ(titanic.2)に対して | 上のデータ(titanic.2)に対して | ||
行 153: | 行 211: | ||
</ | </ | ||
- | = 線形学習機械のチューニング = | + | == 線形学習機械のチューニング |
AICを用いた説明変数の選択を行うのであれば、 | AICを用いた説明変数の選択を行うのであれば、 | ||
行 183: | 行 241: | ||
これはAICを変数増減法で最適化する関数であり、最終的に採用するモデルを出力してくれる便利な関数である。 | これはAICを変数増減法で最適化する関数であり、最終的に採用するモデルを出力してくれる便利な関数である。 | ||
- | = 関係するグラフ = | + | == 関係するグラフ |
< | < | ||
titanic.lm <- lm(Survived~., | titanic.lm <- lm(Survived~., | ||
行 191: | 行 249: | ||
</ | </ | ||
- | = 学習結果の解釈 = | + | == 学習結果の解釈 |
上の回帰分析から | 上の回帰分析から | ||
行 207: | 行 265: | ||
のが好条件となることが分かる。 | のが好条件となることが分かる。 | ||
- | == ロジスティック線形学習機械 == | + | === ロジスティック線形学習機械 |
生存確率をpとして | 生存確率をpとして | ||
行 263: | 行 321: | ||
と、種々の検定統計量が一緒に出力される。 | と、種々の検定統計量が一緒に出力される。 | ||
- | = ロジスティック学習機械のチューニング = | + | == ロジスティック学習機械のチューニング |
AICを用いた説明変数の選択を行うのであれば、 | AICを用いた説明変数の選択を行うのであれば、 | ||
行 297: | 行 355: | ||
これはAICを変数増減法で最適化する関数であり、最終的に採用するモデルを出力してくれる便利な関数である。 | これはAICを変数増減法で最適化する関数であり、最終的に採用するモデルを出力してくれる便利な関数である。 | ||
- | = 関係するグラフ = | + | == 関係するグラフ |
< | < | ||
行 306: | 行 364: | ||
</ | </ | ||
- | = 学習結果の解釈 = | + | == 学習結果の解釈 |
上の回帰分析から | 上の回帰分析から | ||
行 322: | 行 380: | ||
のが好条件となることが分かる。 | のが好条件となることが分かる。 | ||
- | == 決定木 == | + | === 決定木 |
決定木は生存確率pの高低を際立たせるような、データの分割を表現するモデルである。Rではrpartパッケージの中のrpart()、もしくはmvpartパッケージの中のmvpart()という関数を用いて | 決定木は生存確率pの高低を際立たせるような、データの分割を表現するモデルである。Rではrpartパッケージの中のrpart()、もしくはmvpartパッケージの中のmvpart()という関数を用いて | ||
行 485: | 行 543: | ||
- | = 関係するグラフ = | + | == 関係するグラフ |
< | < | ||
titanic.rpart <- rpart(Survived~., | titanic.rpart <- rpart(Survived~., | ||
行 492: | 行 550: | ||
</ | </ | ||
- | = 学習結果の解釈 = | + | == 学習結果の解釈 |
上の決定木の結果から、生存確率が高い条件は | 上の決定木の結果から、生存確率が高い条件は | ||
行 501: | 行 559: | ||
であったことが分かる。 | であったことが分かる。 | ||
- | == 課題 == | + | === 練習課題についての課題 === |
* 3つの分析手法を適用せよ。(時間内課題) | * 3つの分析手法を適用せよ。(時間内課題) | ||
行 507: | 行 565: | ||
* これら以外に、Rで2値判別を行う手法を探し、適用して、比較に加えてみよ。(課外課題) | * これら以外に、Rで2値判別を行う手法を探し、適用して、比較に加えてみよ。(課外課題) | ||
- | === 本課題 === | + | ==== 本課題 |
- | == TIC2000 == | + | === TIC2000 |
[[http:// | [[http:// | ||
行 522: | 行 580: | ||
* CoIL 2000では、訪問する800人を選べ、という課題になっていたが、この課題では訪問する人数も各自で決めて良い。 | * CoIL 2000では、訪問する800人を選べ、という課題になっていたが、この課題では訪問する人数も各自で決めて良い。 | ||
- | == 準備 == | ||
- | |||
- | < | ||
- | install.packages(c(" | ||
- | </ | ||
- | |||
- | これでエラーが出る場合には、[[https:// | ||
- | |||
- | < | ||
- | library(mvpart) | ||
- | library(MASS) | ||
- | library(kernlab) | ||
- | </ | ||
- | |||
- | 以上の3つのライブラリを、この課題では使う可能性がある。 | ||
- | |||
- | == データの読み込み == | ||
- | |||
- | < | ||
- | tic.leaan <- read.table(" | ||
- | tic.eval <- read.table(" | ||
- | tic.test <- read.table(" | ||
- | tic.eval <- cbind(tic.eval, | ||
- | colnames(tic.eval)[86] <- " | ||
- | rm(tic.test) | ||
- | </ | ||
- | |||
- | == 少し加工する == | ||
- | |||
- | 以下の6行は、実行しない方がいい場合もある。 | ||
- | |||
- | < | ||
- | tic.learn$V1 <- as.factor(tic.learn$V1) | ||
- | tic.learn$V5 <- as.factor(tic.learn$V5) | ||
- | tic.learn$V86 <- as.factor(tic.learn$V86) | ||
- | tic.eval$V1 <- as.factor(tic.eval$V1) | ||
- | tic.eval$V5 <- as.factor(tic.eval$V5) | ||
- | tic.eval$V86 <- as.factor(tic.eval$V86) | ||
- | </ | ||
- | |||
- | 決定木に関しては、実行した場合と実行しない場合とで結果を比較すると良いかもしれない。 | ||
- | == 考えたルールに基づく対象限定 == | + | === 考えたルールに基づく対象限定 |
各変数に閾値を設けてルールを生成したとする。 | 各変数に閾値を設けてルールを生成したとする。 | ||
行 605: | 行 622: | ||
で25.9%となる。 | で25.9%となる。 | ||
- | == モデルに基づく対象限定 == | + | === モデルに基づく対象限定 |
学習したモデルに基づいて、訪問対象を狭めるには、predict()という関数を用いて、訪問対象か否かというリストを作成する。 | 学習したモデルに基づいて、訪問対象を狭めるには、predict()という関数を用いて、訪問対象か否かというリストを作成する。 | ||
行 644: | 行 661: | ||
で38.275%となる。 | で38.275%となる。 | ||
- | == 想定される困難 == | + | === 想定される困難 |
次の1行を実行すると、かなり時間がかかってエラーになる。 | 次の1行を実行すると、かなり時間がかかってエラーになる。 |