現場で学んだ機械学習(ランダムフォレストと精度評価(AUC))

みなさん。こんにちは。DX推進開発部のluckystar_021008です。

 

今回は私が現場で学んだモデルの機械学習に関してまとめさせていただきました。

お時間のある方は、是非ご一読ください。

 

 

1.事前準備

まず、機械学習をする前に必要な材料を集める所から行われています。

大きく必要なものは2点です。

  ・説明変数

  ・目的変数

以前まとめさせていただいたブログで簡単に記載させていただいていますが軽くおさらいしていきましょう。

blog.css-net.co.jp

 

1-1.説明変数

機械がモデルを学習した結果を解釈するのに必要です。

このモデルは「○○な人が利用しやすい」、「○○を購入経験がある」等のモデルを学習した結果から、機械的に判断できる材料になるものです。

 

例えば、「ゲームは男性が購入しやすい」や「ゲームは3~40代が購入しやすい」等のモデルを説明するときに利用する変数になっています。

1-2.目的変数

例えば、ゲーム購入させるモデルを作成するとした場合は、目的地はゲームを購入してもらうことになります。

そのため、目的変数としては、対象者の中からゲームを購入した人/購入していない人で区別をつけておく目印みたいなものです。

 

2.機械学習

上記の準備が整ったら、次からは機械学習を実施してどういう結果が得られるのか見ていきましょう。

 

2-1.データの絞り込み

必須なものではありませんが、機械学習はデータの量や変数の量によって処理時間が大きく異なってきます。膨大な量を対処しようとした場合学習結果を出すまでにも時間がかかってしまいます。

そのため、アンダーサンプリングを行い、データの量を予め絞ってから学習をさせることも時には必要となってきます。

 

データ量の多くないときは、絞り込みはせず、次の処理に進めていった方が良いと思われます。

なぜなら、データ量が少なすぎた場合は、正しい学習が行えずに結果として精度が悪くなる恐れがあるからです。

 

2-2.学習法

今回はランダムフォレストでの紹介をさせていただきます。

上記の絞り込んだ状態で、ランダムフォレストで処理を実施します。

ランダムフォレストでは対象データの中からランダムに学習を行っていき解釈していきます。

図1.ランダムフォレスト

図のようなデータがあった時に、「1.赤線」、「2.青線」、「3.黄線」「4.緑線」と取得するデータ数や項目数をランダムに取得し、モデルを学習させて解釈していくという流れになっていきます。

 

2-3.学習結果の精度

ランダムフォレストで学習は実施したが、その結果が信頼できるものかどうかを確認する必要があります。そこで、結果の精度をAUC(Area Under the Curve)で表現しています。

AUCとは、以下の図のようなカーブの下側を結果として取得しています。値は[0]~[1]の間で表すことができ、[1]に近いほど精度としては良いものと言えます。

 

図2-1.良い精度評価


           

図2-2.悪い精度評価

図の青い曲線の下側と通っている部分がAUCの幅になります。

そこの面積が広い(図2-1)ほど、結果としては良いモデルになります。

逆に面積が狭かった場合(図2-2)は、結果としてあまり良い学習結果は得られていないという事になりますので、定義の見直しやモデルの作成自体を見直す必要が出てきます。

注)私が手で書いた図になりますので、形が変なのはご了承ください。実際はきれいな曲線で結果が描かれます。

 

  真陽性:学習時データを用いて、正しいものを正しいと判定

  偽陽性:学習時データを用いて、正しいと判断したものが誤りと判定

 

3.最後に

いかがでしたか?

 

今回は、モデルの機械学習部分に関して、自分が学んできたことを紹介させていただきました。

少しでもみなさんがイメージ出来ていたら幸いです。     

 

閲覧いただきありがとうございました。