これまでの2日間を通じて機械学習実装の基本を学んできました。
今回は機械学習実装の学習最終日です。
「モデルの評価」に関する学習記録を付けていきます。
機械学習のモデルを作った後はきちんとした評価をおこなわなければいけません。
モデルの評価をきちんとおこない、目的や用途に合わせたサービスができるように性能を上げていきましょう。
目次
機械学習実装の全体的な流れと事前準備のおさらい
はじめに機械学習の実装と全体的な流れを把握して、事前準備に何が必要なのか確認しましょう。
機械学習を実装するための全体像は4つのステップに分かれています。
4つのステップは以下の通りです。
事前準備
前処理
モデルの学習
モデルの評価(今回はココ)
前回の日記で、1日目に「事前準備」と「前処理」、2日目に「モデルの学習」に関して学習してきました。
今回は、「モデルの評価」について学んでいきます。
機械学習は作ったモデルの性能もきちんと評価しなければいけません。
評価によって、性能を向上させていくことができるからです。
評価方法
モデルの評価には「交差検証」をおこなうことが一般的です。
そして交差検証には主に2つの方法があります。
ホールド・アウト法
k-分割交差検証
それぞれの方法を詳しく見ていきましょう。
交差検証
まずは、細かい方法を見る前に交差検証について解説します。
交差検証はデータを分割して評価することです。
機械学習のモデルを評価する場合には、未知のデータに対する予測の精度を確認します。
この場合、学習したデータとは異なるデータを入力してモデル評価をするのが基本です。
性能の評価に用いるデータは「テストデータ」と呼ばれます。
学習データとテストデータ、訓練データと評価データを分けて評価する事が、先ほども言いました「交差検証」です。
それでは、「ホールド・アウト法」と「k-分割交差検証」を詳しく解説していきましょう。
ホールド・アウト法
ホールド・アウト法は、データを入力する前にあらかじめ訓練データとテストデータを分割しておくことです。
訓練データで性能を向上させたのちに、テストデータによって性能を評価することで、機械学習の性能を確認できます。
k-分割交差検証
k-分割交差検証は、訓練データとテストデータの分割を複数回おこなって、それぞれで学習と評価をおこなう方法です。
k-分割交差検証は全データをk個に分割します。
例えば、5つに分割する場合は、5分割交差検証と呼びます。
分割したデータを5回ホールド・アウト法による検証をおこなって、その平均をモデルの性能とする評価方法です。
k-分割交差検証は、評価を何度もくり返すことになります。
そのため、テスト結果は平均化されていくので、データの偏りが無くなるメリットがあります。
k-分割交差検証はホールド・アウト法よりも信頼できる評価ができると言えます。
評価指標
モデルの性能を評価する際には、どのような指標を用いれば良いのか確認しておきましょう。
モデルの予測した値には、合計で4つの組み合わせを考えることが可能です。
つまり、モデルが予測した値である陽性と陰性、実際の値である陽性と陰性。
この組み合わせを表にしたものを混同行列(confusion matrix)と呼びます。
混同行列(confusion matrix)
実際の値が陽性+予測値が陽性=真陽性(True Positive:TP)。陽性を予測して、実際に陽性。
実際の値が陽性+予測値が陰性=偽陰性(False Negative:FN)。陰性を予測したが、実際は陽性。
実際の値が陰性+予測値が陽性=偽陽性(False Positive:FP)。陽性を予測したが、実際は陰性。
実際の値が陰性+予測値が陰性=真陰性(True Negative:TN)。陰性を予測して、実際も陰性。
そして、モデルを評価する代表的な指標には以下の4つがあります。
正答率(正解率)(Accuracy)
適合率(Precision)
再現率(Recall)
F値(F-measure,F-score)
これらの指標について詳しく以下で解説していきます。
正答率(正解率)(Accuracy)
正答率(正解率)(Accuracy)は、予測結果と答えがどのくらい一致しているのかを計測する指標です。
実際には、試験の正答率などを表す場合に使用される指標です。
正答率(正解率)(Accuracy)を測る計算式は以下の通りです。
正答率(正解率)(Accuracy)
=予測と正解が一致している数÷全体の数(母数)=(TP+TN)÷(TP+TN+FP+FN)
適合率(Precision)
適合率(Precision)は、陽性と予測した中で、実際にはどれだけの陽性があったのかを測る指標です。
実際には、病院での誤診を低く抑えたい場合によく用いられる指標です。
適合率(Precision)を測る計算式は以下の通りです。
適合率(Precision)=実際に陽性だった数÷陽性と予測した数=TP÷(TP+FP)
再現率(Recall)
再現率(Recall)は、実際に陽性だった中で、どれだけの陽性を予測できていたかを測る指標です。
実際には、病院などで「確実に発病している人を見つけ出したい」などのように、なるべく漏れを防ぎたい場合に使用されます。
再現率(Recall)の計算式は以下の通りです。
再現率(Recall)=陽性と予測できた数÷実際に陽性だった数=TP÷(TP+FN)
F値(F-measure,F-score)
基本的に、適合率(Precision)と再現率(Recall)はトレードオフの関係にあります。
適合率(Precision)と再現率(Recall)のバランスを取るために考えられた指標がF値(F-measure,F-score)です。
F値(F-measure,F-score)の計算式は以下の通りです。
F値(F-measure,F-score)
=2×適合率(Precision)×再現率(Recall)÷(適合率(Precision)+再現率(Recall)
過学習
ディープラーニングには、訓練データに適合し良すぎてしまう状態になってしまうことがあります。
訓練データに適合しすぎて、検証データに対する精度が低くなってしまった状態を「過学習」と呼びます。
その逆で、モデルの予測性能が十分に上がっていない状態を見学習と呼びます。
過学習状態になってしまうと学習データにのみ最適化されて、実際に新規データに対しては、精度が低くなり汎用化されません。
過学習を防ぐための手法には、「正則化」があります。
正則化によって、モデルのパラメータが過度に学習をしないように制限をかけられます。
ただし、正則化もやりすぎてしまうと未学習を引き起こすことがあるので注意が必要です。
正則化には2つのタイプがあり、それぞれ「Lasso回帰(L1正則化)」「Ridge回帰(L2正則化)」があります。
Lasso回帰(L1正則化)
Lasso回帰(L1正則化)とは、自動的に特徴選択をおこなって、重要ではないと判断された特徴量を自動的にモデルから消す効果があります。
Lasso回帰はL1正則化とも呼びます。
Ridge回帰(L2正則化)
Ridge回帰(L2正則化)とは、パラメータの大きさに応じてゼロに近づけることで、汎化された滑らかなモデルを得る効果を持っています。
Ridge回帰はL2正則化とも呼ばれます。
機械学習実装のテスト結果
ここまでで、機械学習の実装に関する学習は終了です。
次回からは、ついに今流行中の「ディープラーニング」の学習に移ります。
ディープラーニングは、最新の技術であり今なお成長中です。
そのため、学ぶことも多いですが、がんばっていきたいと思います。
機械学習実装のテスト結果に関してはこちらの記事を参考にしてください。
これまでのG検定の学習はこちらの日記を参考にしてください。