|
|
# 機械学習の技法
|
|
|
|
|
|
機械学習モデルとそれが利用するデータを構築、使用、維持するプロセスは、多くの他の開発ワークフローとは非常に異なるプロセスです。このレッスンでは、そのプロセスを明らかにし、知っておくべき主要な技術を概説します。あなたは以下を達成します:
|
|
|
|
|
|
- 機械学習の基礎となるプロセスを高レベルで理解する。
|
|
|
- 「モデル」「予測」「訓練データ」などの基本概念を探求する。
|
|
|
|
|
|
## [事前講義クイズ](https://ff-quizzes.netlify.app/en/ml/)
|
|
|
|
|
|
[](https://youtu.be/4NGM0U2ZSHU "ML for beginners - Techniques of Machine Learning")
|
|
|
|
|
|
> 🎥 上の画像をクリックすると、このレッスンの解説動画をご覧いただけます。
|
|
|
|
|
|
## はじめに
|
|
|
|
|
|
機械学習(ML)プロセスを作成する技術は、大まかに次のいくつかのステップで構成されます:
|
|
|
|
|
|
1. <strong>問いを決める</strong>。多くのMLプロセスは、単純な条件プログラムやルールベースのエンジンでは答えられない問いを設定することから始まります。これらの問いは、多くの場合、データの集合に基づく予測に関するものです。
|
|
|
2. <strong>データ収集と準備</strong>。問いに答えるためにはデータが必要です。データの質や時には量が、最初の問いにどれだけ正確に答えられるかを決定します。データの可視化はこの段階の重要な側面です。この段階には、モデル構築のためにデータを訓練用とテスト用に分割することも含まれます。
|
|
|
3. <strong>訓練方法を選ぶ</strong>。問いとデータの性質に応じて、データを最もよく反映し、正確な予測を行うためにモデルを訓練する方法を選択します。これはMLプロセスで最も専門知識を要し、多くの実験を伴う部分です。
|
|
|
4. <strong>モデルを訓練する</strong>。訓練データを使って、様々なアルゴリズムでパターンを認識するモデルを訓練します。モデルは内部の重みを調整して、データの特定部分を優先し、よりよいモデルを作ります。
|
|
|
5. <strong>モデルを評価する</strong>。収集した中で今まで使っていなかったデータ(テストデータ)を使い、モデルの性能を評価します。
|
|
|
6. <strong>パラメータ調整</strong>。モデルの性能に基づいて、アルゴリズムの動作を制御する異なるパラメータや変数を使って再度プロセスを行います。
|
|
|
7. <strong>予測する</strong>。新しい入力を使ってモデルの精度をテストします。
|
|
|
|
|
|
## 問うべき問い
|
|
|
|
|
|
コンピュータはデータの中に隠れたパターンを発見するのが得意です。この利点は、条件付きルールエンジンで容易には答えられない領域の問いを持つ研究者にとって非常に有用です。例えば保険数理の課題であれば、データサイエンティストは喫煙者と非喫煙者の死亡率について手作業でルールを構築できるかもしれません。
|
|
|
|
|
|
しかし、多くの他の変数が関係してくると、過去の健康履歴に基づいて将来の死亡率を予測するにはMLモデルの方が効率的かもしれません。より楽しい例としては、与えられた場所の4月の天気予報を緯度、経度、気候変動、海との距離、ジェット気流のパターンなどのデータを基に予測することが挙げられます。
|
|
|
|
|
|
✅ この[スライドデッキ](https://www2.cisl.ucar.edu/sites/default/files/2021-10/0900%20June%2024%20Haupt_0.pdf)は天気モデルの歴史的観点から、気象解析におけるMLの利用を紹介しています。
|
|
|
|
|
|
## 構築前の準備タスク
|
|
|
|
|
|
モデル構築を始める前に、いくつか完了すべきタスクがあります。問いを検証し、モデルの予測に基づく仮説を形成するには、いくつかの要素を特定して設定する必要があります。
|
|
|
|
|
|
### データ
|
|
|
|
|
|
問いにある程度の確度で答えるためには、適切な種類の十分なデータが必要です。この時点で行うべきことは2つあります:
|
|
|
|
|
|
- <strong>データ収集</strong>。以前のレッスンで学んだデータ分析の公平性を念頭に置き、データの収集を行います。このデータの出所や、それに伴う偏りがないか注意深く把握し、それを記録してください。
|
|
|
- <strong>データ準備</strong>。データ準備にはいくつかのステップがあります。複数の異なるソースから来たデータをまとめて正規化する必要があるかもしれません。文字列を数値に変換してデータの質や量を改善する方法もあります([クラスタリング](../../5-Clustering/1-Visualize/README.md)での方法を参照)。元のデータを基に新たなデータを生成することもあります([分類](../../4-Classification/1-Introduction/README.md)での例)。データをクリーニングや編集することもあります([Webアプリ](../../3-Web-App/README.md)レッスンの前に行います)。訓練手法に応じて、データをランダム化・シャッフルする必要もあるかもしれません。
|
|
|
|
|
|
✅ データを収集・処理した後、その形状が目的の問いに対応できそうか確認しましょう。場合によっては、与えられた課題において十分に性能を発揮しないこともあります([クラスタリング](../../5-Clustering/1-Visualize/README.md)レッスンで確認します)。
|
|
|
|
|
|
### 特徴とターゲット
|
|
|
|
|
|
[特徴量](https://www.datasciencecentral.com/profiles/blogs/an-introduction-to-variable-and-feature-selection)はデータの測定可能な性質です。多くのデータセットでは、「日付」「サイズ」「色」などの列タイトルとして表現されます。特徴変数は通常、コード上で`X`で表され、モデル訓練の入力変数です。
|
|
|
|
|
|
ターゲットは予測したい対象です。コードでは通常`y`で表し、問いに対する答えを示します:12月にどの<strong>色</strong>のカボチャが最も安いか?サンフランシスコで不動産の<strong>価格</strong>が最も良い地区はどこか?ターゲットはラベル属性とも呼ばれます。
|
|
|
|
|
|
### 特徴変数の選択
|
|
|
|
|
|
🎓 <strong>特徴選択と特徴抽出</strong> モデルを構築するとき、どの変数を選ぶべきかどうやって決めますか?おそらく特徴選択や特徴抽出の過程を経て、最も性能の良いモデルに適した変数を選びます。ただし両者は同じではありません。「特徴抽出は元の特徴から新しい特徴を関数的に生成するもので、特徴選択は特徴の部分集合を返すものです。」([出典](https://wikipedia.org/wiki/Feature_selection))
|
|
|
|
|
|
### データの可視化
|
|
|
|
|
|
データサイエンティストのツールキットで重要な側面は、SeabornやMatPlotLibのような優れたライブラリを使ってデータを可視化する力です。データを視覚的に表現することで、活用できる隠れた相関を発見できるかもしれません。可視化はまた、バイアスや不均衡なデータの発見にも役立ちます([分類](../../4-Classification/2-Classifiers-1/README.md)で発見します)。
|
|
|
|
|
|
### データセットの分割
|
|
|
|
|
|
訓練の前に、データセットを異なるサイズの2つ以上の部分に分割し、それぞれが全体のデータをよく代表する必要があります。
|
|
|
|
|
|
- <strong>訓練用</strong>。モデルを訓練するために使うデータセットの部分です。元のデータセットの大部分を占めます。
|
|
|
- <strong>テスト用</strong>。独立したデータ群で、しばしば元データの中から集められ、構築したモデルの性能検証に使います。
|
|
|
- <strong>検証用</strong>。モデルのハイパーパラメータや構造を調整するために使う小さい独立したデータ群です。データのサイズや問いにより、この第三のセットは不要な場合もあります([時系列予測](../../7-TimeSeries/1-Introduction/README.md)で述べています)。
|
|
|
|
|
|
## モデル構築
|
|
|
|
|
|
訓練データを使って、様々なアルゴリズムでモデル、すなわちデータの統計的表現を<strong>訓練</strong>します。モデルの訓練とは、パターンを発見し検証し、受け入れたり却下したりすることによって、モデルをデータに適合させることです。
|
|
|
|
|
|
### 訓練方法の決定
|
|
|
|
|
|
問いとデータの性質に応じて、モデルの訓練方法を選びます。このコースで用いる[Scikit-learnのドキュメント](https://scikit-learn.org/stable/user_guide.html)を調べて、多様な方法を学びます。経験に応じて、複数の方法を試し最良のモデルを作るかもしれません。データサイエンティストは未知のデータをモデルに入力して精度やバイアスを検証し、最適な訓練方法を選択するプロセスを経るでしょう。
|
|
|
|
|
|
### モデルを訓練する
|
|
|
|
|
|
訓練データを使いモデルに「適合(fit)」させます。多くのMLライブラリでは`model.fit`というコードを使い、この時点で特徴変数(通常は`X`の配列)とターゲット変数(通常は`y`)をモデルに渡します。
|
|
|
|
|
|
### モデルの評価
|
|
|
|
|
|
訓練が終わると(大きなモデルでは多くの繰り返し、つまり「エポック」が必要)、モデルの性能をテストデータで評価できます。このデータはモデルが未解析の元のデータの一部で、モデルの質を測る各種メトリクスを表にして出力できます。
|
|
|
|
|
|
🎓 <strong>モデルの適合</strong>
|
|
|
|
|
|
機械学習の文脈では、モデル適合は未知のデータ分析に対するモデルの基礎関数の正確さを指します。
|
|
|
|
|
|
🎓 <strong>アンダーフィッティング</strong>と<strong>オーバーフィッティング</strong>はモデルの質を悪化させる一般的問題で、モデルがデータに適合しすぎても不足しても起こります。オーバーフィッティングは訓練データの細部やノイズまで学習しすぎたため、訓練データには非常に正確に予測するが未見のデータへの一般化能力が低い状態。アンダーフィッティングはモデルが訓練データも未知データも正確に分析できない状態です。
|
|
|
|
|
|

|
|
|
> インフォグラフィック by [Jen Looper](https://twitter.com/jenlooper)
|
|
|
|
|
|
## パラメータ調整
|
|
|
|
|
|
初回の訓練プロセスが終わったら、モデルの質を観察し、「ハイパーパラメータ」を調整して改善を検討します。詳しいプロセスは[ドキュメント](https://docs.microsoft.com/en-us/azure/machine-learning/how-to-tune-hyperparameters?WT.mc_id=academic-77952-leestott)を参照してください。
|
|
|
|
|
|
## 予測
|
|
|
|
|
|
この段階で全く新しいデータを使い、モデルの精度をテストできます。実運用のML環境では、モデルを本番で利用するためにユーザーの入力(ボタン押下など)を変数に設定し、推論や評価のためにモデルに送る処理が関わることもあります。
|
|
|
|
|
|
これらのレッスンでは、準備、構築、テスト、評価、予測といったデータサイエンティストの主要な作業を学び、さらに「フルスタック」MLエンジニアとなる旅を進めていきます。
|
|
|
|
|
|
---
|
|
|
|
|
|
## 🚀チャレンジ
|
|
|
|
|
|
ML実践者のステップを示すフローチャートを描いてみましょう。今、自分はその中のどこにいると思いますか?どの部分で困難を感じそうですか?どの部分は簡単そうに感じますか?
|
|
|
|
|
|
## [事後講義クイズ](https://ff-quizzes.netlify.app/en/ml/)
|
|
|
|
|
|
## 復習と自主学習
|
|
|
|
|
|
データサイエンティストの日常の仕事について語るインタビューをオンラインで探しましょう。こちらが[例](https://www.youtube.com/watch?v=Z3IjgbbCEfs)です。
|
|
|
|
|
|
## 課題
|
|
|
|
|
|
[データサイエンティストへのインタビュー](assignment.md)
|
|
|
|
|
|
---
|
|
|
|
|
|
<!-- CO-OP TRANSLATOR DISCLAIMER START -->
|
|
|
**免責事項**:
|
|
|
本書類はAI翻訳サービス [Co-op Translator](https://github.com/Azure/co-op-translator) を使用して翻訳されています。正確性を期していますが、自動翻訳には誤りや不正確な部分が含まれる可能性があることをご了承ください。原文のネイティブ言語版が権威ある情報源とみなされます。重要な情報については、専門の人間による翻訳を推奨します。本翻訳の利用に起因するいかなる誤解や誤訳に対しても責任を負いかねます。
|
|
|
<!-- CO-OP TRANSLATOR DISCLAIMER END --> |