モデルに与えるデータ
Coddyの「機械学習入門」コースのレッスン 2/19。
機械学習において、データはモデルのトレーニングと開発において極めて重要な役割を果たします。モデルにデータを入力する場合、通常はデータセット(pandasではDataFrame)と呼ばれる構造化された形式で整理されます。
データセットは主に2つの部分で構成されています:
- 特徴量 (Features) - データの一連の集合を表す複数の列
- ターゲット変数 (Target variable) - モデルが予測または推定することを目指す出力、または値を表します。
例えば、こちらに天気 (Weather)のテーブルがあります。
| id | degrees (C) | humidity (%) | wind (KM/H) | is_rain |
| 1 | 23 | 5 | 14 | True |
| 2 | 30 | 10 | 17 | False |
| 3 | 15 | 3 | 12 | False |
| 4 | 20 | 12 | 5 | False |
| 5 | 26 | 57 | 23 | True |
雨が降るかどうかを知りたいと仮定すると、特徴量は degrees、humidity、wind であり、ターゲット変数は is_rain です。
特徴量は <strong>X</strong> と表記され、ターゲットは <strong>y</strong> と表記されます。
ターゲット変数 (<strong>y</strong>) は、数値、ブール値、文字列など、あらゆるタイプのデータを保持できます。
トレーニングプロセス中、モデルは特徴量を入力として使用し、ターゲット変数を正解(グラウンドトゥルース)または正しい出力として使用します。
ターゲット変数がなければ、モデルは自身の予測が正しいかどうかを知る術がありません。
データセットの構造には、多くの異なるバリエーションがあります:
- 多数の特徴量、単一のターゲット変数
- 単一の特徴量、単一のターゲット変数
- 多数の特徴量、多数のターゲット変数
- 少数の特徴量、単一または複数のターゲット変数
- ターゲット変数なし
- 時系列データ
- など
教師あり学習 (Supervised learning) は、入力と出力のペアを持つデータセットを扱い、アルゴリズムが入力から対応するターゲット変数へのマッピングを学習します。
教師なし学習 (Unsupervised learning) はターゲット変数を含みません。代わりに、ラベル付きの例なしで入力データ内のパターンや構造を探索します。
ターゲット変数が他の列から独立していることを確認することが極めて重要です。依存関係があるとデータ漏洩(データリーク)につながり、トレーニング中に誤って高いパフォーマンスを示してしまう可能性があるからです。真に予測的なモデルは、ターゲットに直接関連していない特徴量から学習しなければならず、それによってモデルの予測の完全性と汎用性が保たれます。
独立したターゲット変数は、データセット内の他の列から直接計算したり導き出したりすることはできません。それがまさに予測しようとしているものだからです。
このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。
このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。
このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。
チャレンジ
簡単galactic_zoo_no_target.csvという名前のCSVファイルが与えられます。このデータセットには目的変数が含まれていません。
このチャレンジでは、独自の目的変数を作成します。次の式から導出されるComplexityIndexという名前の列を作成してください:WaterCoverage * HabitatDiversity / PlanetMass。その後、WaterCoverage、HabitatDiversity、およびPlanetMass列はComplexityIndexによって表されるようになったため、これらを削除してください。
チャレンジに合格するために、何も出力しないでください。内部でdf変数を確認します。
自分で試してみよう
# pandas は pd として既にインポートされています
df = pd.read_csv("galactic_zoo_no_target.csv")
# 以下にコードを記述してください機械学習入門のすべてのレッスン
自分で練習してみよう: Pythonオンラインコンパイラ