本日は、前回の続き。機械学習、精度評価、システム化それに関わる技術についてプラスαの内容も含めもう少し詳しく説明していきます。
今回の学び
機械学習
機械学習の手法について解説します。大きく分けて3つあります。
- 教師あり学習⇨正解となるデータを元に機械学習を行う手法。分類(データがどのグループに属するかを分類する)と回帰(気温や湿度などの連続した数値データに対して予測する場合に使用)の2種類がある。
- 教師なし学習⇨複数のデータを元にコンピュタが自分でグループ分けをする。それに人間がラベリングする。正解を与えていない状態で似たデータを探すクラスタリング(データ群の中から似たものをグループ化するときに使用する)に利用される。
- 強化学習⇨教師あり学習も、教師なし学習も、過去のデータを元に学習を行う。しかし強化学習は過去データ無し。ある環境の中でコンピュータ自身がとった行動によって、学習します。目的の設定として、得られる報酬が最大になるような行動をとるように学習せます。
機械学習のアルゴリズム
機械学習でいうアルゴリズムとは、先ほど説明した手法(教師あり学習、教師なし学習、強化学習)それぞれの処理を行うための計算式の集まり。機械学習の手法や対象となるデータによってどんなアルゴリズムを選択するかで結果が変わってきます。
アンサンブル学習(複数のアルゴリズムを使い、導き出された複数の結果から多数決を取り、最終結果を決定する)という手法もあるそう。
アルゴリズムの選び方の参考になるものがあるそうです。
⇨scikit-learnのサイトにあるチートシート(図になっているので分かりやすい)
精度の高い結果を出すにはどんなアルゴリズムが最適か、計算を実行しないと分からないため、様々なアルゴリズムを試して比較する必要があるそうです🤔
実際に成果が得られるか検証する
実際に成果が得られるか検証する作業をPoC(ポックまたはピーオーシー)と言いう。日本語では概念実証。いきなり実際のプロジェクトを進めてしまうと、失敗へのリスクが高いため事前に検証します。
PoCでは実際に「学習データを用意、前処理を行い、学習する」という一連の処理を行う。そして結果の精度を評価します。
精度がPoCでの目標に達していない場合はデータの見直し、アルゴリズムの変更などの改善を行います。
PoCは試行回数を増やすほど良い成果が得られる可能性が高いですが、期間を決め、期間内に成果を得られるか判断するようにしないと無限に時間を使ってしまうことになるようです💦
精度評価
PoCの成否を求める指標となるのが精度(どのぐらい正確に予測できているのかを表す)。
PoCでは、精度の値をもとにプロジェクトがビジネス的に意味があるか(費用効果があるか)を判断する。
<精度の求め方>
1、準備
用意したデータを学習データ、テストデータに分割。
学習データで機械学習➡︎予測プログラムが作成される➡︎テストデータに対して結果を予測➡︎正解、不正解の数を出す
2、予測結果を混同行列にまとめる
混同行列(正解と予測の組み合わせがそれぞれ何件あったかをまとめた表)
「イヌとネコの画像からイヌを見つける」という場合で考えて見ましょう。
イヌを陽性 ネコを陰性
正解と予測が合っているもの(青)はTrue 異なっているものは(赤)False
精度の計算式ではTP、FP、FN、TNの略語を使う。

3、混合行列から評価指標を導き出す
以下の指標以外にも多々ありますが、よく使われるものを紹介します。
「正解率」 >>>全体に対して予測と正解が一致している割合 計算式 TP+TN / 全体
「適合率」 >>>陽性と予測したデータのうち、実際に陽性だったデータの割合 計算式 P / TP+FP
「再現率」 >>>正解が陽性のデータのうち、陽性と予測したデータの割合 計算式 TP / TP+FN
どの結果を求める場合どの指標を利用すればよいか、難しい😧‼️
初心者なので、今回はこういうものがあるんだ!という程度に留めておきます。
○適合率と再現率はトレードオフの関係
適合率と再現率はトレードオフ(一方を追求するともう一方を犠牲にしなければならない)の関係にあり、片方の値を高くするともう片方が低くなる。
※たくさん陽性を出す検査➡️再現率が高まり、適合率が低くなる。
※たくさん陰性を出す検査➡️適合率が高まり、再現率が低くなる。
↓↓↓そのため
○F値は適合率と再現率のバランスを表す
F値も評価指標の1つ。適合率、再現率、両方の値がバランスよくなることを目指す場合に使用。
計算式 2Precision × recall / precision + recall
どれを指標にするかは、プロジェクトの目的次第です!
システム化
目標とする精度が出る予測プログラムが作成できたら、ついにシステムに組み込んで運用です。
しかし機械学習ならではの注意点があります。
実際のシステムでは、常に正解が不明な未知のデータとのやりとりになります。
なので、運用中でも精度に問題があるとわかった場合は、学習プログラムや、前処理を見直す必要があります。
○モデルの継続的な更新
運用中に得た新たなデータと正解ラベルも、機械学習の追加データとして利用できる。
機械学習のシステムは構築して終わりではないため、継続的に再学習などを行い、予測精度を向上させていく必要があるようですね💪
精度の高い結果を出すために、様々なアルゴリズムを駆使する。予測した結果をもとに様々な検証を行っていく。。。
機械学習で数学の知識が必要だと言われる理由がわかりました🧐
コメント