
SageMaker Clarifyバイアス分析をしてみた
SageMaker Clarifyとは
バイアス分析や瀬悦明可能性の評価を実行できる。モデルやデータの透明性を高め、モデルの予測がどのように行われているかを理解するのに役立つSDKツール。
やること
XGBoostでClarifyの結果を確認する。
※XGBoostの推論ができていない場合は下記を7まで実行する。8は終了時に実行する。
amegaeru.hatenablog.jp
実践!
1.Clarifyセットアップ
from sagemaker import Session
from sagemaker.clarify import SageMakerClarifyProcessor
sagemaker_session = Session()
clarify_processor = SageMakerClarifyProcessor(
role=role,
instance_count=1,
instance_type="ml.t3.medium",
sagemaker_session=sagemaker_session
)
print("SageMakerClarifyProcessor が正常に初期化されました。")

2.データバイアス分析
from sagemaker.clarify import DataConfig, BiasConfig, SageMakerClarifyProcessor
data_config = DataConfig(
s3_data_input_path=f"s3://{bucket}/{prefix}/train.csv",
s3_output_path=f"s3://{bucket}/clarify-output",
label="label",
headers=["label", "sepal length (cm)", "sepal width (cm)", "petal length (cm)", "petal width (cm)"],
dataset_type="text/csv"
)
bias_config = BiasConfig(
label_values_or_threshold=[1],
facet_name="sepal length (cm)",
facet_values_or_threshold=[5.5]
)
clarify_processor = SageMakerClarifyProcessor(
role=role,
instance_count=1,
instance_type="ml.t3.medium",
sagemaker_session=sagemaker_session
)
clarify_processor.run_pre_training_bias(
data_config=data_config,
data_bias_config=bias_config,
methods="all"
)


INFO:sagemaker-clarify-processing:Collected analyses: 配下のJSONを確認する。
{'version': '1.0', 'pre_training_bias_metrics': {'label': 'label', 'facets': {'sepal length (cm)': [
{'value_or_threshold': '(5.5,
7.7
]', 'metrics': [
{'name': 'CDDL', 'description': 'Conditional Demographic Disparity in Labels (CDDL)', 'value': None, 'error': 'Group variable is empty or not provided'
},
{'name': 'CI', 'description': 'Class Imbalance (CI)', 'value': -0.16666666666666666
},
{'name': 'DPL', 'description': 'Difference in Positive Proportions in Labels (DPL)', 'value': -0.20857142857142855
},
{'name': 'JS', 'description': 'Jensen-Shannon Divergence (JS)', 'value': 0.025149769513246163
},
{'name': 'KL', 'description': 'Kullback-Liebler Divergence (KL)', 'value': 0.0959978824434343
},
{'name': 'KS', 'description': 'Kolmogorov-Smirnov Distance (KS)', 'value': 0.20857142857142863
},
{'name': 'LP', 'description': 'L-p Norm (LP)', 'value': 0.29496454300924557
},
{'name': 'TVD', 'description': 'Total Variation Distance (TVD)', 'value': 0.20857142857142857
}
]
}
]
}, 'label_value_or_threshold': '1'
}
キー |
説明 |
確認ポイント |
"pre_training_bias_metrics" |
事前バイアス指標(学習前のデータにバイアスがあるか) |
各指標(DPL, JS, CI など)の値 |
"facet" |
バイアス分析対象の特徴量 |
sepal length (cm) など |
"label" |
目的変数(分類対象のラベル) |
label |
"value_or_threshold" |
バイアスの基準値 |
5.5 で分けたときの結果 |
"metrics" |
指標の一覧 |
DPL, JS, KL, TVD など |
感想
モデルのバイアス確認がどうやってもできなかった。まだまだだ。。。