This page was translated by the Cloud Translation API.
Switch to English

পান্ডাস DataFrame ফর্সা সূচক কেস স্টাডি করতে

এই কার্যকলাপ, আপনি একটি পান্ডাস DataFrame সঙ্গে ফর্সা সূচক কীভাবে ব্যবহার করবেন তা শিখবেন।

কেস স্টাডি সংক্ষিপ্ত বিবরণ

এই ক্ষেত্রে গবেষণায় আমরা প্রয়োগ করা হবে TensorFlow মডেল বিশ্লেষণ এবং ফর্সা সূচক একটি পান্ডাস DataFrame, যেখানে প্রতিটি সারির স্থল সত্য লেবেল, বিভিন্ন বৈশিষ্ট্য রয়েছে, এবং একটি মডেল ভবিষ্যদ্বাণী হিসাবে সংরক্ষিত ডেটা নির্ণয় করা। আমরা কিভাবে এই ওয়ার্কফ্লোটি সম্ভাব্য সততা উদ্বেগ, গঠন এবং মডেল প্রশিক্ষণের ব্যবহৃত ফ্রেমওয়ার্ক এক স্বাধীন স্পট ব্যবহার করা যেতে পারে দেখাবে। এই ক্ষেত্রে গবেষণায় হিসাবে, আমরা কোনো মেশিন লার্নিং কাঠামো (যেমন TensorFlow, Jax, ইত্যাদি) একবার তারা একটি পান্ডাস DataFrame রূপান্তরিত হয় থেকে ফলাফল বিশ্লেষণ করতে পারে।

এই ব্যায়াম জন্য, আমরা লিভারেজ হবে ডীপ নিউরাল নেটওয়ার্ক (DNN) মডেল যে উন্নত ছিল Tensorflow জাফরি সঙ্গে নীতিশাস্ত্র জন্য আকৃতি সীমাবদ্ধতাসমূহ ক্ষেত্রে ল স্কুল প্রবেশিকা কাউন্সিল (LSAC) থেকে ল স্কুল প্রবেশিকা ডেটা সেটটি ব্যবহার গবেষণা। এই ক্লাসিফায়ার প্রচেষ্টা ভবিষ্যদ্বাণী করা হোক বা না হোক একজন ছাত্র বার, তাদের ল স্কুল ভর্তি পরীক্ষা (LSAT) স্কোর এবং স্নাতক জিপিএ উপর ভিত্তি করে পাস হবে। এই ক্লাসিফায়ার প্রচেষ্টা ভবিষ্যদ্বাণী করা হোক বা না হোক একজন ছাত্র তাদের LSAT স্কোর এবং স্নাতক জিপিএ এর উপর ভিত্তি করে, বার পাস হবে।

LSAC ডেটা সেটটি

এই কেস স্টাডি মধ্যে ব্যবহার ডেটা সেটটি মূলত 'নামক একটি অধ্যয়নের জন্য সংগ্রহ করা হয়েছিল LSAC জাতীয় অনুদৈর্ঘ্য বার পেজেস স্টাডি। LSAC গবেষণা প্রতিবেদন সিরিজ 'লিন্ডা Wightman দ্বারা 1998 সালে ডেটা সেটটি বর্তমানে হোস্ট করা হয় এখানে

  • dnn_bar_pass_prediction: DNN মডেল থেকে LSAT ভবিষ্যদ্বাণী।
  • লিঙ্গ: ছাত্র লিঙ্গ দেখুন।
  • LSAT: LSAT স্কোর ছাত্র পেয়েছেন।
  • 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 কি বৈশিষ্ট্যটি আপনাকে তদন্ত করতে আগ্রহী হন নির্দিষ্ট করার একটি ঐচ্ছিক slicing প্যারামিটার। মধ্যে এই কেস স্টাডি 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)। টেস্ট (UN) সততা 50 বছর: মেশিন লার্নিং জন্য পাঠ। https://arxiv.org/abs/1811.10104

উপাঙ্গ

নীচের সহায়তা করতে কয়েক ফাংশন পান্ডাস 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 দেখুন