DataSplitノード
DataSplitノードは、データセットを訓練セットとテストセットに分割します。これは、未知のデータでモデル性能を評価するための重要なステップです。
| プロパティ | 値 |
|---|---|
| タイプ | 処理ノード |
| 入力 | DataFrame(DataLoaderから) |
| 出力 | 分割インデックス(訓練/テスト) |
| ライブラリ | scikit-learn |
テスト分割比率
Section titled “テスト分割比率”テスト用に保持するデータの割合。
| 値 | 訓練 | テスト | 用途 |
|---|---|---|---|
| 0.1 | 90% | 10% | 大きなデータセット(10万行以上) |
| 0.2 | 80% | 20% | 標準(デフォルト) |
| 0.3 | 70% | 30% | 小さなデータセット、追加検証 |
| 0.4 | 60% | 40% | 非常に小さなデータセット |
| 0.5 | 50% | 50% | 最大の検証 |
スライダーで調整(10%-50%範囲、5%刻み)。
Random State
Section titled “Random State”再現性のためのシード。毎回同じ分割を得るには固定値(例:42)を設定。
- デフォルト: 42
- 範囲: 任意の整数
層化サンプリング
Section titled “層化サンプリング”訓練セットとテストセットの両方でクラス比率を維持するために層化分割を有効化。
層化を使用すべき場合:
- 不均衡な分類問題
- 稀なクラスがある場合
- クラス分布が重要な場合
設定:
- Stratify — オン/オフ切り替え
- Stratify Column — 層化に使用するターゲットカラム(有効時のみ表示)
例:データセットが90%のクラスAと10%のクラスBを持つ場合、層化により訓練セットとテストセットの両方でこの90/10の比率が維持されます。
- 接続されたDataLoaderからデータを読み込み
- random stateを使用してデータをシャッフル
- 訓練/テストインデックスに分割
- インデックスを作業ディレクトリの
split_indices.jsonに保存 - 下流のTrainerがこれらのインデックスを訓練に使用
from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test = train_test_split( X, y, test_size=0.2, random_state=42, stratify=y # 層化が有効な場合)| 方向 | ノードタイプ |
|---|---|
| 入力元 | DataLoader |
| 出力先 | Trainer |
必要なパイプライン構造:
DataLoader → DataSplit → Trainer → Evaluatorノードは以下を検証:
- DataLoaderに接続されている必要がある
- 層化が有効な場合、カラム名を指定する必要がある
- 分割比率は0.1から0.5の間である必要がある
DataSplitノードは分割インデックスを以下に保存:
~/mlops-work/split_indices.jsonこのファイルには以下が含まれます:
{ "train_indices": [0, 1, 3, 5, ...], "test_indices": [2, 4, 6, ...], "random_state": 42, "test_size": 0.2, "stratified": true, "stratify_column": "target"}Trainerノードはこのファイルを読み込んで同じ分割を使用します。
ベストプラクティス
Section titled “ベストプラクティス”常にDataSplitを使用
Section titled “常にDataSplitを使用”Trainerノードには組み込みのテスト分割がありますが、DataSplitの使用が推奨されます:
- 関心事の分離(分割と訓練)
- パイプラインで分割設定が可視化される
- 層化サンプリングが可能
- 再実行時の再現性
適切な分割比率を選択
Section titled “適切な分割比率を選択”| データセットサイズ | 推奨分割 |
|---|---|
| 1,000行未満 | 0.2-0.3 |
| 1,000-10,000 | 0.2 |
| 10,000-100,000 | 0.15-0.2 |
| 100,000以上 | 0.1-0.15 |
小さなデータセットでは信頼性のある評価のために大きなテストセットが必要です。
分類には層化を使用
Section titled “分類には層化を使用”特に以下の場合、分類タスクでは常に層化を有効に:
- 不均衡なクラス
- マルチクラス問題
- 小さなデータセット
よくある問題
Section titled “よくある問題”「層化カラムが見つかりません」
Section titled “「層化カラムが見つかりません」”カラム名は完全に一致する必要があります(大文字小文字を区別)。DataLoaderプレビューで正しいカラム名を確認してください。
「各クラスのサンプルが不足しています」
Section titled “「各クラスのサンプルが不足しています」”クラスのサンプルが非常に少ない場合、層化が失敗する可能性があります。オプション:
- 層化を無効化
- 稀なクラスを統合
- より多くのデータを収集
実行ごとに結果が異なる
Section titled “実行ごとに結果が異なる”再現可能な分割のために固定のrandom_state(例:42)を設定してください。
- DataLoader — 分割前にデータを読み込み
- Trainer — 分割されたデータで訓練