【Draft版公開】Machine Learning Yearning 7～8章 by stanford大学Andrew Ng教授

現在、AIや機械学習界隈で最も有名なスタンフォード大学のAndrew Ng教授が、「Machine Learning Yearning」という書籍を執筆中です。2018年4月に、そのドラフト版（1-19章）が公開されました。
この投稿では、いち早く本書籍を翻訳しました。

http://www.mlyearning.org/
![図1.png](https://qiita-image-store.s3.amazonaws.com/0/188414/741778bb-9523-9feb-736b-6bd5aedc42e6.png)

この本は、機械学習プロジェクトの構築方法を提供します。また、機械学習アルゴリズムを教えるのではなく、機械学習アルゴリズムが機能する方法に焦点を当てています。

本投稿は、7章、8章の翻訳になります。少しづつ翻訳していきます。

##### **1～5章の翻訳**
[【Draft版公開】Machine Learning Yearning 1～5章 by stanford大学Andrew Ng教授](https://qiita.com/Ishio/items/2096b8806a20c8ca52be)

##### **6章の翻訳**
[【Draft版公開】Machine Learning Yearning 6章 by stanford大学Andrew Ng教授](https://qiita.com/Ishio/items/8ddf5f01a33bb049a907)

##### **9-10章の翻訳**
[【Draft版公開】Machine Learning Yearning 9～10章 by stanford大学Andrew Ng教授](https://qiita.com/Ishio/items/f074a6609ae034762150)

##### **11-12章の翻訳**
[【Draft版公開】Machine Learning Yearning 11～12章 by stanford大学Andrew Ng教授]
(https://qiita.com/Ishio/items/35c756e073a1f2f1d244)

本書籍は、とても読みやすく、かつ各章短めに記載されています。

## **7. How large do the dev/test sets need to be?（開発/テストセットはどれくらいの量が求められるか？）**
開発セットは、あなたが試しているアルゴリズムの精度の差異を検出するに十分な大きさでなくてはなりません。たとえば、分類器Aの正解率（accuracy）が90%で、分類器Bの正解率が90.1%であるとき、開発セット100サンプルでこの0.1%の差異を検出することはできないでしょう。
私がこれまで出会った機械学習の問題の経験上、100サンプルの開発セットは小さいです。開発セットのサイズは1,000～10,000くらいまでが一般的です。10,000サンプルあれば、0.1%の改善が検出される可能性は高くなります。
成熟した重要なアプリケーション（EX:広告、WEB検索、商品レコメンデーション）に関しては、企業の利益に直接的な影響を与えるため、0.01%の改善に非常に高いモチベーションをもって取り組んでいるチームを見てきました。これらのケースでは、さらに小さな改善を達成するために、10,000サンプルよりさらに多くのサンプルが利用される可能性があります。

テストセットのサイズについてはどう考えますか？これは、システム全体のパフォーマンスに高い信頼性を与える十分な大きさでなければなりません。1つの一般的なヒューリスティックな解は、あなたが保持するデータの30%をテストデータとして利用することです。これは、適度なサンプル数が存在する場合、つまり100~10,000サンプルの例であればうまくいくと考えます。しかし、現代は「数十億」を超えるサンプルを用いて機械学習の問題に取り組むビッグデータの時代です。開発/テストセットに割り当てられる"絶対数"は増加していますが、開発/テストセットに割り当てられるデータの"割合"は縮小しています。というのも、あなたのアルゴリズムの性能評価に必要な量を超えて、開発/テストセットを用意する必要はありません。

※補足
理論的には、アルゴリズムの変更によって開発セットに統計的に有意な差異が生じたかどうかをテストすることもできます。 実際には、ほとんどのチームは（学術研究論文を発表しない限り）これを気にする必要はなく、アルゴリズムの漸進的な学習過程の測定に対する統計的有意性のテストの有用性はわかりません。

## **8. Establish a single-number evaluation metric for your team to optimize（チーム内でアルゴリズムを最適化するための単一評価尺度を導入する）**
分類問題における正解率（accuracy）は、単一の評価尺度の例です。あなたの分類器を開発セット（もしくはテストセット）上で実行し、そしてどの分類器が正確に分類できるかの一つの数値を取得します。もし分類器Aが97%、分類器Bが90%の正解率である場合、私たちは分類器Aに対して、より有用性を見出すでしょう。
対照的に、適合率（Precision）と再現率（Recall）の2つの指標が存在することは、単一の評価尺度ではなくなります。2つの尺度を加えて、分類器を評価するために2つの数値が存在します。複数の評価尺度を持つと、アルゴリズムの比較が難しくなります。あなたのアルゴリズムのパフォーマンスの結果が次に示すような結果だとしましょう。

|分類器  |適合率（Precision）  |再現率（Recall）  |
|---|---|---|
|A  |95%  |90%  |
|B  |98%  |85%  |

ここでは、どちらかの分類器が明らかに優れているわけではないので、すぐには分類器を選ぶことができないでしょう。
開発期間中、チームはアルゴリズムのアーキテクチャ、モデルのパラメータ、特徴量の選択など、様々なアイデアに挑戦するでしょう。
正解率のような単一の評価尺度を持つことで、この評価尺度のパフォーマンスに従って、あなたの全てのモデル並び替えることができ、何が最も効果的であるかを迅速に判断することができるでしょう。
適合率と再現率の両方を本当に気にしているのであれば、一つの標準的な方法を使用して、これらを一つの単一な数値に結合することを推奨します。たとえば、正解率と再現率の平均値をとって、一つの数値に変換できます。もしくは、平均値の計算よりもより修正された方法である「F値」は、単純に平均値を取得するよりも、さらに効果的です。

|分類器  |適合率（Precision）  |再現率（Recall）  |**F値（F Score）**|
|---|---|---|---|
|A  |95%  |90%  |**92.4%**|
|B  |98%  |85%  |**91.0%**|

単一の評価尺度を持つことで、多くの分類器の中からより良いものを選択している場合に、あなたの意思決定をより迅速化する手助けをします。それは、全ての人の中に、明確なパフォーマンスの優先順位を提供し、したがって明確な進歩の方向性を見出せます。
最後の例として、今あなたは、米国、中国、インド、その他の4つの重要なマーケットで、猫の分類器の正解率を個別にトラッキングしているものとしましょう。これにより4つの指標が得られます。これらの4つの指標の平均もしくは加重平均を取ることで、一つの評価尺度となります。平均や加重平均を取ることは、複数の尺度を1つに結合する最も一般的な方法の1つです。