差分
このページの2つのバージョン間の差分を表示します。
両方とも前のリビジョン前のリビジョン次のリビジョン | 前のリビジョン | ||
mselab:2012:stat:week3:r2 [2012/12/18 10:29] – [層別後の解析] watalu | mselab:2012:stat:week3:r2 [不明な日付] (現在) – 外部編集 (不明な日付) 127.0.0.1 | ||
---|---|---|---|
行 1: | 行 1: | ||
===== 統計工学実験 第3週 ===== | ===== 統計工学実験 第3週 ===== | ||
+ | ==== 連絡 ==== | ||
+ | |||
+ | * [[mselab: | ||
==== 最終課題 ==== | ==== 最終課題 ==== | ||
行 8: | 行 11: | ||
* 提案した訪問ルールの契約達成率などを、検証用データ(tic.eval)に適用して検討せよ。 | * 提案した訪問ルールの契約達成率などを、検証用データ(tic.eval)に適用して検討せよ。 | ||
* 学習用データでモデルを学習し、検証用データで精度を検討する、という縛りの中で、最適な訪問ルールを定めよ。これがこの実験の最終成果物である。 | * 学習用データでモデルを学習し、検証用データで精度を検討する、という縛りの中で、最適な訪問ルールを定めよ。これがこの実験の最終成果物である。 | ||
+ | |||
+ | ==== 準備 ==== | ||
+ | |||
+ | 準備。 | ||
+ | |||
+ | < | ||
+ | Sys.setenv(" | ||
+ | install.packages(c(" | ||
+ | library(mvtnorm) | ||
+ | library(mvpart) | ||
+ | library(MASS) | ||
+ | </ | ||
+ | |||
+ | データがない人は、次のコードも実行する必要がある。 | ||
+ | |||
+ | < | ||
+ | tic.learn <- read.table(" | ||
+ | tic.eval <- read.table(" | ||
+ | tic.test <- read.table(" | ||
+ | tic.eval <- cbind(tic.eval, | ||
+ | colnames(tic.eval)[86] <- " | ||
+ | rm(tic.test) | ||
+ | </ | ||
+ | |||
+ | さらに先週のレポート課題と同様に、V1とV5のグループ化も済ませるとよいかもしれない。 | ||
+ | あるいは今週の課題で改めて、グループ化を見直してもよい。 | ||
==== クラスタリング ==== | ==== クラスタリング ==== | ||
行 526: | 行 555: | ||
|提出部数|レポートは各自1通ずつ。{{: | |提出部数|レポートは各自1通ずつ。{{: | ||
+ | |||
+ | ==== 実験当日の修正 ==== | ||
+ | |||
+ | 自分のMacだと問題が発生せず、実験室のPCだとRが落ちる不具合があります。メモリが少ないためかもしれません。Rが勝手に終了する場合には、kmeansのコードは次のように nstart を削除し、iter.max を追加する修正をお願いします。 | ||
+ | |||
+ | === k-means法による層別 (iter.max追加、nstart削除) === | ||
+ | |||
+ | k-means法は、数値変数でしか用いられないため、データは「tic.learn[, | ||
+ | < | ||
+ | tic.learn.kmeans <- kmeans(tic.learn[, | ||
+ | </ | ||
+ | |||
+ | k-means法の結果を適用するには、レコードごとに「centers」の座標とのユークリッド距離を算出し、一番小さくなる層にその変数を割り当てる。 | ||
+ | |||
+ | < | ||
+ | date() | ||
+ | tic.learn$cluster <- rep(0, dim(tic.learn)[1] ) | ||
+ | for( i in c(1: | ||
+ | tic.kmeans.dist <- rep(0, max(tic.learn.kmeans$cluster) ) | ||
+ | for( j in c(1: | ||
+ | tic.kmeans.dist[j] <- sum( (tic.learn[i, | ||
+ | } | ||
+ | tic.learn$cluster[i] <- sort.list(tic.kmeans.dist)[1] | ||
+ | } | ||
+ | date() | ||
+ | </ | ||
+ | |||
+ | 念のため、kmeansの結果と比較して、計算に誤りがないことを確認するためにクロス集計を行う。この結果が対角であれば、計算はあっている。 | ||
+ | |||
+ | < | ||
+ | table(tic.learn$cluster, | ||
+ | </ | ||
+ | |||
+ | centers=に指定する値は、いろいろ変えてみるといい。 |