loss
説明
は、L = loss(thresholder,Tbl)fairnessThresholder オブジェクト thresholder と table データ Tbl を使用して分類損失 (thresholder.LossFun で指定) を計算します。
は、L = loss(thresholder,X,attribute,Y)fairnessThresholder オブジェクト thresholder、行列データ X、attribute で指定されたセンシティブ属性、および真のクラス ラベル Y を使用して分類損失 (thresholder.LossFun で指定) を計算します。
例
バイナリ分類用の木アンサンブルに学習させ、センシティブ属性の各グループについての差異の影響を計算します。非参照グループの差異の影響の値を小さくするために、観測値を分類するスコアのしきい値を調整します。
データ census1994 を読み込みます。これには、データ セット adultdata とテスト データ セット adulttest が含まれています。このデータ セットは、個人の年収が $50,000 を超えるかどうかを予測するために使用できる、米国国勢調査局の人口統計情報から構成されています。adultdata の最初の数行をプレビューします。
load census1994
head(adultdata) age workClass fnlwgt education education_num marital_status occupation relationship race sex capital_gain capital_loss hours_per_week native_country salary
___ ________________ __________ _________ _____________ _____________________ _________________ _____________ _____ ______ ____________ ____________ ______________ ______________ ______
39 State-gov 77516 Bachelors 13 Never-married Adm-clerical Not-in-family White Male 2174 0 40 United-States <=50K
50 Self-emp-not-inc 83311 Bachelors 13 Married-civ-spouse Exec-managerial Husband White Male 0 0 13 United-States <=50K
38 Private 2.1565e+05 HS-grad 9 Divorced Handlers-cleaners Not-in-family White Male 0 0 40 United-States <=50K
53 Private 2.3472e+05 11th 7 Married-civ-spouse Handlers-cleaners Husband Black Male 0 0 40 United-States <=50K
28 Private 3.3841e+05 Bachelors 13 Married-civ-spouse Prof-specialty Wife Black Female 0 0 40 Cuba <=50K
37 Private 2.8458e+05 Masters 14 Married-civ-spouse Exec-managerial Wife White Female 0 0 40 United-States <=50K
49 Private 1.6019e+05 9th 5 Married-spouse-absent Other-service Not-in-family Black Female 0 0 16 Jamaica <=50K
52 Self-emp-not-inc 2.0964e+05 HS-grad 9 Married-civ-spouse Exec-managerial Husband White Male 0 0 45 United-States >50K
各行には、成人 1 人の人口統計情報が格納されています。age、marital_status、relationship、race、sex などのセンシティブ属性の情報が含まれます。3 列目の flnwgt に観測値の重みが格納されており、最後の列 salary は個人の年収が $50,000 以下 (<=50K) か $50,000 を超える (>50K) かを示します。
欠損値を含む観測値を削除します。
adultdata = rmmissing(adultdata); adulttest = rmmissing(adulttest);
adultdata を学習セットと検証セットに分割します。観測値の 60% を学習セット trainingData に使用し、観測値の 40% を検証セット validationData に使用します。
rng("default") % For reproducibility c = cvpartition(adultdata.salary,"Holdout",0.4); trainingIdx = training(c); validationIdx = test(c); trainingData = adultdata(trainingIdx,:); validationData = adultdata(validationIdx,:);
学習データ セット trainingData を使用して木のブースティング アンサンブルに学習させます。table adultdata 内の変数名を使用して、応答変数、予測子変数、および観測値の重みを指定します。ランダム アンダーサンプリング ブースティングをアンサンブル集約法として使用します。
predictors = ["capital_gain","capital_loss","education", ... "education_num","hours_per_week","occupation","workClass"]; Mdl = fitcensemble(trainingData,"salary", ... PredictorNames=predictors, ... Weights="fnlwgt",Method="RUSBoost");
テスト データ セット adulttest 内の観測値について、給与の値を予測し、分類誤差を計算します。
labels = predict(Mdl,adulttest); L = loss(Mdl,adulttest)
L = 0.2080
テスト セットの観測値の約 80% について、給与の分類がモデルで正確に予測されています。
テスト セットのモデル予測を使用して、センシティブ属性 sex についての公平性メトリクスを計算します。特に、sex の各グループについての差異の影響を調べます。fairnessMetrics のオブジェクト関数 report と plot を使用して結果を表示します。
metricsResults = fairnessMetrics(adulttest,"salary", ... SensitiveAttributeNames="sex",Predictions=labels, ... ModelNames="Ensemble",Weights="fnlwgt"); metricsResults.PositiveClass
ans = categorical
>50K
metricsResults.ReferenceGroup
ans = 'Male'
report(metricsResults,BiasMetrics="DisparateImpact")ans=2×4 table
ModelNames SensitiveAttributeNames Groups DisparateImpact
__________ _______________________ ______ _______________
Ensemble sex Female 0.73792
Ensemble sex Male 1
plot(metricsResults,"DisparateImpact")
差異の影響の値は、非参照グループ (Female) について、そのグループの陽性クラスの値 (>50K) をもつ予測の比率を参照グループ (Male) の陽性クラスの値をもつ予測の比率で除算したものです。差異の影響の値は 1 に近くなるのが理想的です。
非参照グループの差異の影響の値が改善するか試すために、関数 fairnessThresholder を使用してモデル予測を調整できます。この関数は、検証データを使用して、公平性の範囲を満たしながら精度が最大になる最適なスコアのしきい値を探します。最適なしきい値を下回る臨界領域の観測値については、参照グループと非参照グループで公平性の制約が保たれるように関数でラベルが変更されます。既定では、この関数は非参照グループの差異の影響の値が範囲 [0.8,1.25] になるスコアのしきい値を見つけようとします。
fairnessMdl = fairnessThresholder(Mdl,validationData,"sex","salary")
fairnessMdl =
fairnessThresholder with properties:
Learner: [1×1 classreg.learning.classif.CompactClassificationEnsemble]
SensitiveAttribute: 'sex'
ReferenceGroups: Male
ResponseName: 'salary'
PositiveClass: >50K
ScoreThreshold: 1.6749
BiasMetric: 'DisparateImpact'
BiasMetricValue: 0.9702
BiasMetricRange: [0.8000 1.2500]
ValidationLoss: 0.2017
fairnessMdl は fairnessThresholder モデル オブジェクトです。アンサンブル モデル Mdl の関数 predict が返すスコアは事後確率ではないことに注意してください。スコアの範囲は であり、各観測値の最大スコアは 0 より大きくなります。最大スコアが新しいスコアのしきい値 (fairnessMdl.ScoreThreshold) より小さい観測値について、fairnessMdl オブジェクトの関数 predict で予測が調整されます。非参照グループの観測値の場合、関数はその観測値を陽性クラスに予測します。参照グループの観測値の場合、関数はその観測値を陰性クラスに予測します。これらの調整の結果として予測ラベルが常に変わるとは限りません。
新しいスコアのしきい値を使用してテスト セットの予測を調整し、分類誤差を計算します。
fairnessLabels = predict(fairnessMdl,adulttest); fairnessLoss = loss(fairnessMdl,adulttest)
fairnessLoss = 0.2064
新しい分類誤差は元の分類誤差と同程度です。
Mdl を使用して計算した元の予測と fairnessMdl を使用して計算した調整後の予測の 2 セットのテストの予測で、それらの差異の影響の値を比較します。
newMetricsResults = fairnessMetrics(adulttest,"salary", ... SensitiveAttributeNames="sex",Predictions=[labels,fairnessLabels], ... ModelNames=["Original","Adjusted"],Weights="fnlwgt"); newMetricsResults.PositiveClass
ans = categorical
>50K
newMetricsResults.ReferenceGroup
ans = 'Male'
report(newMetricsResults,BiasMetrics="DisparateImpact")ans=2×5 table
Metrics SensitiveAttributeNames Groups Original Adjusted
_______________ _______________________ ______ ________ ________
DisparateImpact sex Female 0.73792 1.0048
DisparateImpact sex Male 1 1
plot(newMetricsResults,"di")
調整後の予測を使用した場合の方が、非参照グループ (Female) の差異の影響の値が 1 に近くなっています。
入力引数
公平性の分類モデル。fairnessThresholder オブジェクトとして指定します。オブジェクトの ScoreThreshold プロパティは空であってはなりません。
データ セット。table として指定します。Tbl の各行は 1 つの観測値に対応し、各列は 1 つの変数に対応します。fairnessThresholder オブジェクトの作成に table を使用する場合は、関数 loss を使用するときに table を使用する必要があります。必要なすべての予測子変数、センシティブ属性、および応答変数を table に含める必要があります。追加の変数も table に含めることができます。文字ベクトルの cell 配列ではない cell 配列と複数列の変数は使用できません。
データ型: table
クラス ラベル。数値列ベクトル、logical 列ベクトル、文字配列、string 配列、文字ベクトルの cell 配列、または categorical 列ベクトルとして指定します。
Yが文字配列の場合、配列の各行がクラス ラベルに対応していなければなりません。Yのデータ型はthresholderの作成に使用される応答変数のデータ型と同じでなければなりません。thresholder.Learnerが分類モデル オブジェクトの場合、Yの各クラスはthresholder.Learner.ClassNamesのクラスのサブセットでなければなりません。
データ型: single | double | logical | char | string | cell | categorical
出力引数
分類損失。数値スカラーとして返されます。関数 loss は、thresholder の作成時に使用される LossFun の値で指定された分類損失を計算します。thresholder.ScoreThreshold の値を使用して調整されたデータ セットの予測が関数で使用されます。詳細については、棄却オプションベース分類を参照してください。
バージョン履歴
R2023a で導入
MATLAB Command
You clicked a link that corresponds to this MATLAB command:
Run the command by entering it in the MATLAB Command Window. Web browsers do not support MATLAB commands.
Web サイトの選択
Web サイトを選択すると、翻訳されたコンテンツにアクセスし、地域のイベントやサービスを確認できます。現在の位置情報に基づき、次のサイトの選択を推奨します:
また、以下のリストから Web サイトを選択することもできます。
最適なサイトパフォーマンスの取得方法
中国のサイト (中国語または英語) を選択することで、最適なサイトパフォーマンスが得られます。その他の国の MathWorks のサイトは、お客様の地域からのアクセスが最適化されていません。
南北アメリカ
- América Latina (Español)
- Canada (English)
- United States (English)
ヨーロッパ
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)