差分

このページの2つのバージョン間の差分を表示します。

この比較画面へのリンク

両方とも前のリビジョン前のリビジョン
次のリビジョン
前のリビジョン
mselab:2016:stat:week2 [2016/11/29 09:31] watalumselab:2016:stat:week2 [2016/11/29 11:57] (現在) watalu
行 3: 行 3:
 今週の{{:mselab:2013:stat:week3:note-statistics-3-20131029.pdf|配付資料}}。グラフと表のみによるデータ解析と比較的単純な学習機械によるデータ解析に続いて、今回は次の2つの課題に取り組んでもらう。 今週の{{:mselab:2013:stat:week3:note-statistics-3-20131029.pdf|配付資料}}。グラフと表のみによるデータ解析と比較的単純な学習機械によるデータ解析に続いて、今回は次の2つの課題に取り組んでもらう。
  
-  - 先週は「学習機械の当てはめ」によるデータの分析、今週は「学習機械による予測結果」を評価してどれを用いるかを検討+PPDACの5つの要素のうち、Pが変わって、Dにデータが追加されて、Aも変更になる。 
 + 
 +  - P(roblem)は「V86の契約の有無と他の変数との関係の分析」から「V86の契約の有無の他の変数からの予測モデルの構築」に変わる 
 +    - 先週は「学習機械の当てはめ」によるデータの分析、今週は「学習機械による予測結果」を評価してどれを用いるかを検討
     - 各学習機械には様々な「パラメータ」があり、それを変えることで学習結果も予測精度も変わる     - 各学習機械には様々な「パラメータ」があり、それを変えることで学習結果も予測精度も変わる
     - 線形判別分析(lda)、二次判別分析(qda)、決定木(rpart)だけでなく、より柔軟な学習機械も用いる候補に含める     - 線形判別分析(lda)、二次判別分析(qda)、決定木(rpart)だけでなく、より柔軟な学習機械も用いる候補に含める
 +  - D(ata)に先週に解析してもらったtic.learnに加えて、tic.evalを追加する
 +    - tic.learnは学習用、tic.evalは検証用
 +  - A(nalysis)に「予測精度の評価」が加わる
 +    - 前回は学習しただけ、今回は学習したモデルを予測に用いる(仮想的な現場投入)
 +    - tic.learnで学習したモデルを、tic.evalの予測に用いて、予測精度を評価する
 +  - C(onclusion)は「どのモデルが予測精度が良いか」とその考察
   - キャンペーンの提案書の作成   - キャンペーンの提案書の作成
     - 一番上手に予測できた「制御パラメータを調整済み」の学習機械に基づいて、予測精度を自慢しつつ、効率が良いと思われるキャンペーンを提案する提案書を起草せよ。     - 一番上手に予測できた「制御パラメータを調整済み」の学習機械に基づいて、予測精度を自慢しつつ、効率が良いと思われるキャンペーンを提案する提案書を起草せよ。
 +
 +1回目と2回目とで、各手法に対する印象が少し異なってくると嬉しい。
  
 === 学習と予測 === === 学習と予測 ===
行 116: 行 127:
 <code> <code>
 par(mfrow=c(2,1)) par(mfrow=c(2,1))
-hist(v86.lm[tic.learn$V86==0],+hist(v86.lm[tic.eval$V86==0],
      main="V86=0",      main="V86=0",
      xlab="Predicted Value")      xlab="Predicted Value")
-hist(v86.lm[tic.learn$V86==1],+hist(v86.lm[tic.eval$V86==1],
      main="V86=1",      main="V86=1",
      xlab="Predicted Value")      xlab="Predicted Value")
行 128: 行 139:
 予測誤差の定義は「予測値-正解」である。 予測誤差の定義は「予測値-正解」である。
 <code> <code>
-plot(tic.eval$V86, v86.lm-tic.eval$V86,+plot(tic.eval$V86, tic.eval$V86-v86.lm,
      xlab="V86",      xlab="V86",
      ylab="Prediction Error")      ylab="Prediction Error")
行 136: 行 147:
  
 <code> <code>
-plot((v86.lm-tic.eval$V86)~as.factor(tic.eval$V86),+plot((tic.eval$V86-v86.lm)~as.factor(tic.eval$V86),
      xlab="V86",      xlab="V86",
      ylab="Prediction Error")      ylab="Prediction Error")
行 145: 行 156:
  
 <code> <code>
-t.test((v86.lm-tic.eval$V86)[tic.eval$V86==0], +t.test((tic.eval$V86-v86.lm)[tic.eval$V86==0], 
-       (v86.lm-tic.eval$V86)[tic.eval$V86==1],+       (tic.eval$V86-v86.lm)[tic.eval$V86==1],
        var.equal=F)        var.equal=F)
 </code> </code>
行 258: 行 269:
 tic.rpart <- rpart(V86~.,data=tic.learn.2) tic.rpart <- rpart(V86~.,data=tic.learn.2)
 v86.rpart <- predict(tic.rpart,newdata=tic.eval,type="class") v86.rpart <- predict(tic.rpart,newdata=tic.eval,type="class")
-table(v86.rpart$class, tic.eval$V86)+table(v86.rpart, tic.eval$V86
 +</code> 
 + 
 +rpartの制御はたとえば 
 +<code> 
 +tic.rpart <- rpart(V86~.,data=tic.learn.2, control=rpart.control(cp=0.00001, minsplit=5))
 </code> </code>
 +のように指定する。
  
 誤判別率(誤った予測をした割合)などを算出しつつ、各学習機械の制御パラメータを調整してみよ。 誤判別率(誤った予測をした割合)などを算出しつつ、各学習機械の制御パラメータを調整してみよ。