アンダーサンプリング手法
メニューを表示するにはスワイプしてください
大規模なデータセットでクラスの不均衡がある場合、多くの場合、一方のクラス(多数派クラス)がもう一方のクラス(少数派クラス)を大きく上回る状況に直面します。この不均衡により、モデルが少数派クラスに関する有意義なパターンを学習しにくくなり、予測性能が低下することがあります。アンダーサンプリングは、この問題に対処するために、多数派クラスのサンプル数を減らし、データセットのバランスを取る手法です。
アンダーサンプリングは、データセットが大きすぎて実用的な処理が困難な場合や、多数派クラスが支配的でモデルが少数派クラスを無視してしまう場合に検討されます。ただし、アンダーサンプリングは非常に大規模なデータセットで、多数派クラスのサンプルを一部失っても重要な情報を損なわない場合に最も適しています。すでにデータセットが小さい場合や、多数派クラスに希少だが重要な例が含まれている場合には、あまり適していません。
123456789101112131415161718192021222324import pandas as pd # Create a sample imbalanced dataset data = { "feature": range(20), "class": ["majority"] * 16 + ["minority"] * 4 } df = pd.DataFrame(data) # Count the number of samples in each class class_counts = df["class"].value_counts() minority_count = class_counts["minority"] # Randomly sample from the majority class to match the minority class count majority_sample = df[df["class"] == "majority"].sample(n=minority_count, random_state=42) minority_sample = df[df["class"] == "minority"] # Combine samples to get a balanced dataset balanced_df = pd.concat([majority_sample, minority_sample]) print("Original class distribution:") print(df["class"].value_counts()) print("\nBalanced class distribution after undersampling:") print(balanced_df["class"].value_counts())
すべて明確でしたか?
フィードバックありがとうございます!
セクション 2. 章 5
AIに質問する
AIに質問する
何でも質問するか、提案された質問の1つを試してチャットを始めてください
セクション 2. 章 5