二値予測をしてみよう
前の演習では、glm() 関数を使って寄付者の行動に対するロジスティック回帰モデルを作成しました。R の多くの Machine Learning 手法と同様に、将来の行動を予測するために、作成したモデルオブジェクトに predict() 関数を適用できます。デフォルトでは、predict() は type = "response" を指定しない限り、予測を「対数オッズ」で出力します。これを指定することで、対数オッズが「確率」に変換されます。
ロジスティック回帰モデルは結果の「確率」を推定するため、どの閾値で行動に移すかは皆さんが決める必要があります。慎重すぎることと攻めすぎることのバランスが重要です。たとえば、寄付確率が99%以上の人だけに依頼すると、推定確率は低くても実際には寄付してくれる多くの人を逃してしまうかもしれません。特に本データのように寄付が比較的まれな、強く不均衡な結果では、このバランスはとても重要です。
データセット donors とモデル donation_model は用意されています。
この演習はコースの一部です
Rで学ぶSupervised Learning:分類
演習の手順
predict()関数を使って、各人の寄付確率を推定してください。確率を得るにはtype引数を指定します。予測結果は新しい列donation_probに代入します。- 平均的な人が寄付する実際の確率を求めるために、
donorsデータフレームの該当する列をmean()に渡してください。 - 予測した寄付確率が平均より大きい場合に寄付すると予測するよう、
ifelse()を使ってください。結果は新しい列donation_predに代入します。 mean()関数を使ってモデルの精度を計算してください。
実践的なインタラクティブ演習
このサンプルコードを完成させて、この演習に挑戦してみましょう。
# Estimate the donation probability
donors$donation_prob <- predict(___, type = "___")
# Find the donation probability of the average prospect
mean(___)
# Predict a donation if probability of donation is greater than average (0.0504)
donors$donation_pred <- ifelse(___ > 0.0504, ___, ___)
# Calculate the model's accuracy
mean(___ == ___)