این صفحه به‌وسیله ‏Cloud Translation API‏ ترجمه شده است.
Switch to English

پانداها DataFrame به انصاف شاخص مطالعه موردی

در این قسمت، شما باید یاد بگیرند که چگونه به استفاده از شاخص انصاف با DataFrame پاندا.

مورد بررسی اجمالی مطالعه

در این مطالعه مورد ما اعمال خواهد شد TensorFlow تجزیه و تحلیل مدل و شاخص عدالت برای ارزیابی داده های ذخیره شده به عنوان یک پاندا DataFrame، که در آن هر ردیف شامل زمین برچسب حقیقت، ویژگی های مختلف، و یک پیش بینی مدل. ما نشان خواهد داد که چگونه این گردش کار استفاده می شود به نقطه نگرانی انصاف بالقوه، مستقل از چارچوب استفاده شده برای ساخت و آموزش مدل. همانطور که در این مطالعه مورد، ما می توانید نتایج از هر چارچوب یادگیری ماشین (به عنوان مثال TensorFlow، JAX، و غیره) یک بار آنها را به یک DataFrame پانداها تبدیل تجزیه و تحلیل.

برای این تمرین، ما را به مدل شبکه عصبی عمیق (DNN) که در توسعه داده شد اهرم محدودیت شکل اخلاق با Tensorflow شبکه مورد مطالعه با استفاده از دانشکده حقوق پذیرش مجموعه داده از شورای پذیرش دانشکده حقوق (LSAC). این تلاش طبقه بندی برای پیش بینی اینکه آیا یا نه دانش آموز نوار، بر اساس پذیرش دانشکده حقوق تست (آخر) نمره خود را و در مقطع کارشناسی معدل منتقل می کند. این تلاش طبقه بندی برای پیش بینی اینکه آیا یا نه دانش آموز نوار عبور، بر اساس نمره آخر خود و در مقطع کارشناسی معدل.

LSAC مجموعه داده

مجموعه داده مورد استفاده در این مطالعه مورد در اصل برای مطالعه به نام "جمع آوری شد LSAC ملی طولی نوار پاساژ مطالعه. LSAC گزارش تحقیقات سری توسط لیندا وایتمن در سال 1998. مجموعه داده ها در حال حاضر به میزبانی اینجا .

  • dnn_bar_pass_prediction: پیش بینی آخر از مدل DNN.
  • جنسیت: جنسیت دانش آموز.
  • آخر: آخر نمره دریافت شده توسط دانش آموز.
  • pass_bar: زمین برچسب حقیقت نشان می دهد یا نه دانش آموز در نهایت به تصویب نوار.
  • مسابقه: مسابقه دانش آموز.
  • ugpa: یک مقطع کارشناسی معدل دانش آموز است.
 !pip install -q -U \
  tensorflow-model-analysis==0.22.2 \
  tensorflow-data-validation==0.22.1 \
  tfx-bsl==0.22.1 \
  pyarrow==0.16.0

 
ERROR: tensorflow-serving-api 2.2.0 has requirement tensorflow~=2.2.0, but you'll have tensorflow 2.3.0 which is incompatible.
ERROR: tensorflow-transform 0.22.0 has requirement tensorflow!=2.0.*,<2.3,>=1.15, but you'll have tensorflow 2.3.0 which is incompatible.
WARNING: You are using pip version 20.1.1; however, version 20.2 is available.
You should consider upgrading via the '/tmpfs/src/tf_docs_env/bin/python -m pip install --upgrade pip' command.

واردات بسته های مورد نیاز:

 import os
import tempfile
import pandas as pd
import six.moves.urllib as urllib

import tensorflow_model_analysis as tfma
from google.protobuf import text_format

 

دانلود داده ها و استخراج مجموعه داده اولیه است.

 # Download the LSAT dataset and setup the required filepaths.
_DATA_ROOT = tempfile.mkdtemp(prefix='lsat-data')
_DATA_PATH = 'https://storage.googleapis.com/lawschool_dataset/bar_pass_prediction.csv'
_DATA_FILEPATH = os.path.join(_DATA_ROOT, 'bar_pass_prediction.csv')

data = urllib.request.urlopen(_DATA_PATH)

_LSAT_DF = pd.read_csv(data)

# To simpliy the case study, we will only use the columns that will be used for
# our model.
_COLUMN_NAMES = [
  'dnn_bar_pass_prediction',
  'gender',
  'lsat',
  'pass_bar',
  'race1',
  'ugpa',
]

_LSAT_DF.dropna()
_LSAT_DF['gender'] = _LSAT_DF['gender'].astype(str)
_LSAT_DF['race1'] = _LSAT_DF['race1'].astype(str)
_LSAT_DF = _LSAT_DF[_COLUMN_NAMES]

_LSAT_DF.head()
 

پیکربندی شاخص عدالت است.

چندین پارامتر که شما نیاز به حساب در هنگام استفاده از شاخص انصاف با DataFrame وجود دارد

  • DataFrame ورودی شما باید یک ستون پیش بینی و ستون برچسب از مدل خود را داشته باشد. به طور پیش فرض انصاف شاخص خواهد برای یک ستون پیش بینی به نام نگاه prediction و یک ستون برچسب به نام label در DataFrame خود را.

    • اگر هر کدام از این ارزش ها یافت نشد یک KeyError مطرح خواهد شد.
  • علاوه بر این به DataFrame، شما همچنین نیاز به شامل eval_config است که باید از معیارهای محاسبه شامل، برش برای محاسبه معیارهای در، و نام ستون برای مثال برچسب و پیش بینی.

    • metrics_specs خواهد معیارهای محاسبه تنظیم شده است. FairnessIndicators متریک مورد نیاز خواهد بود برای ارائه معیارهای عدالت و شما می توانید یک لیست از معیارهای اختیاری اضافی را ببینید در اینجا .

    • slicing_specs یک پارامتر اختیاری برش را مشخص چه ویژگی شما علاقه مند به بررسی هستیم. در این مطالعه مورد race1 استفاده می شود، با این حال شما همچنین می توانید این مقدار را به یکی دیگر از ویژگی (برای مثال جنسیتی در زمینه این DataFrame) تنظیم شده است. اگر slicing_specs ارائه نشده است تمام ویژگی های موجود خواهد شد.

    • اگر DataFrame خود را شامل یک برچسب و یا پیش بینی ستون است که متفاوت از پیش فرض prediction و یا label ، شما می توانید پیکربندی label_key و prediction_key به یک مقدار جدید.

  • اگر output_path مشخص نشده است یک دایرکتوری موقت ایجاد خواهد شد.

 # Specify Fairness Indicators in eval_config.
eval_config = text_format.Parse("""
  model_specs {
    prediction_key: 'dnn_bar_pass_prediction',
    label_key: 'pass_bar'
  }
  metrics_specs {
    metrics {class_name: "AUC"}
    metrics {
      class_name: "FairnessIndicators"
      config: '{"thresholds": [0.50, 0.90]}'
    }
  }
  slicing_specs {
    feature_keys: 'race1'
  }
  slicing_specs {}
  """, tfma.EvalConfig())

# Run TensorFlow Model Analysis.
eval_result = tfma.analyze_raw_data(
  data=_LSAT_DF,
  eval_config=eval_config,
  output_path=_DATA_ROOT)
 
WARNING:apache_beam.runners.interactive.interactive_environment:Dependencies required for Interactive Beam PCollection visualization are not available, please use: `pip install apache-beam[interactive]` to install necessary dependencies to enable all data visualization features.

Warning:apache_beam.io.tfrecordio:Couldn't find python-snappy so the implementation of _TFRecordUtil._masked_crc32c is not as fast as it could be.

Warning:tensorflow:From /tmpfs/src/tf_docs_env/lib/python3.6/site-packages/tensorflow_model_analysis/writers/metrics_plots_and_validations_writer.py:68: tf_record_iterator (from tensorflow.python.lib.io.tf_record) is deprecated and will be removed in a future version.
Instructions for updating:
Use eager execution and: 
`tf.data.TFRecordDataset(path)`

Warning:tensorflow:From /tmpfs/src/tf_docs_env/lib/python3.6/site-packages/tensorflow_model_analysis/writers/metrics_plots_and_validations_writer.py:68: tf_record_iterator (from tensorflow.python.lib.io.tf_record) is deprecated and will be removed in a future version.
Instructions for updating:
Use eager execution and: 
`tf.data.TFRecordDataset(path)`

کاوش عملکرد مدل با شاخص عدالت است.

پس از اجرای شاخص انصاف، ما می توانیم معیارهای مختلف است که ما انتخاب شده را به تجزیه و تحلیل عملکرد مدل های ما تجسم. در این مطالعه مورد ما شامل شاخص عدالت و خودسرانه برداشت AUC.

هنگامی که ما برای اولین بار در AUC کلی برای هر تکه مسابقه نگاه ما می توانیم یک اختلاف اندکی در عملکرد مدل، اما هیچ چیز است که مسلما هشدار دهنده را مشاهده کنید.

  • آسیا: 0.58
  • سیاه و سفید: 0.58
  • اسپانیایی: 0.58
  • دیگر: 0.64
  • سفید: 0.6

با این حال، هنگامی که ما در اشتباه نرخ منفی تقسیم نژاد نگاه کنید، مدل ما دوباره اشتباه احتمال یک کاربر از عبور از نوار در نرخ های مختلف و این بار پیش بینی، این کار را با یک مقدار زیادی.

  • آسیا: 0.01
  • سیاه و سفید: 0.05
  • اسپانیایی: 0.02
  • دیگر: 0.01
  • سفید: 0.01

برجسته ترین این تفاوت بین دانش آموزان سیاه و سفید است در مورد 380٪، به این معنی که مدل ما تقریبا 4X بیشتر احتمال دارد به اشتباه پیش بینی است که یک دانش آموز سیاه و سفید نوار عبور نمی کند، از یک دانش آموز whilte. اگر قرار بود برای ادامه این تلاش ها، یک پزشک می تواند این نتایج به عنوان یک سیگنال که آنها باید زمان بیشتری را صرف تضمین این که مدل خود را به خوبی برای مردم از زمینه های استفاده کنید.

 # Render Fairness Indicators.
tfma.addons.fairness.view.widget_view.render_fairness_indicator(eval_result)
 
FairnessIndicatorViewer(slicingMetrics=[{'sliceValue': 'white', 'slice': 'race1:white', 'metrics': {'fairness_…

نتیجه

در این مطالعه مورد ما یک مجموعه داده را به یک DataFrame پانداها وارداتی که ما پس از آن با شاخص عدالت قرار گرفت. درک نتایج از مدل خود و اساسی داده است یک گام مهم در تضمین مدل خود را می کند تعصب مضر را منعکس نمی کند. در زمینه این مطالعه مورد ما مجموعه داده LSAC بررسی و چگونه پیش بینی از این داده ها را می توان با یک مسابقه دانش آموزان تأثیر داشته است. مفهوم "چه ناعادلانه است و چه چیزی عادلانه در رشته های متعدد برای بیش از 50 سال، از جمله در آموزش و پرورش، استخدام، و یادگیری ماشین معرفی شده است." 1 انصاف شاخص یک ابزار به نگرانی انصاف کمک به کاهش در دستگاه شما مدل یادگیری است.

برای کسب اطلاعات بیشتر در مورد استفاده از شاخص ها و منابع انصاف به یادگیری نگرانی انصاف در مورد بیشتر اینجا .


  1. هاچینسون، ب.، میچل، م. (2018). 50 سال از آزمون (سازمان ملل متحد) انصاف: درس هایی برای یادگیری ماشین. https://arxiv.org/abs/1811.10104

ضمیمه

در زیر چند توابع به کمک مدل ML به پانداها DataFrame هستند تبدیل کنید.

 # TensorFlow Estimator to Pandas DataFrame:

# _X_VALUE =  # X value of binary estimator.
# _Y_VALUE =  # Y value of binary estimator.
# _GROUND_TRUTH_LABEL =  # Ground truth value of binary estimator.

def _get_predicted_probabilities(estimator, input_df, get_input_fn):
  predictions = estimator.predict(
      input_fn=get_input_fn(input_df=input_df, num_epochs=1))
  return [prediction['probabilities'][1] for prediction in predictions]

def _get_input_fn_law(input_df, num_epochs, batch_size=None):
  return tf.compat.v1.estimator.inputs.pandas_input_fn(
      x=input_df[[_X_VALUE, _Y_VALUE]],
      y=input_df[_GROUND_TRUTH_LABEL],
      num_epochs=num_epochs,
      batch_size=batch_size or len(input_df),
      shuffle=False)

def estimator_to_dataframe(estimator, input_df, num_keypoints=20):
  x = np.linspace(min(input_df[_X_VALUE]), max(input_df[_X_VALUE]), num_keypoints)
  y = np.linspace(min(input_df[_Y_VALUE]), max(input_df[_Y_VALUE]), num_keypoints)

  x_grid, y_grid = np.meshgrid(x, y)

  positions = np.vstack([x_grid.ravel(), y_grid.ravel()])
  plot_df = pd.DataFrame(positions.T, columns=[_X_VALUE, _Y_VALUE])
  plot_df[_GROUND_TRUTH_LABEL] = np.ones(len(plot_df))
  predictions = _get_predicted_probabilities(
      estimator=estimator, input_df=plot_df, get_input_fn=_get_input_fn_law)
  return pd.DataFrame(
      data=np.array(np.reshape(predictions, x_grid.shape)).flatten())
 
نمایش بر روی TensorFlow.org