What-If টুল এবং Vertex AI-এর সাহায্যে একটি আর্থিক ML মডেল তৈরি করা

1. ওভারভিউ

এই ল্যাবে, আপনি আর্থিক ডেটার উপর প্রশিক্ষিত একটি XGBoost মডেল বিশ্লেষণ করতে What-if টুল ব্যবহার করবেন। মডেলটি বিশ্লেষণ করার পরে আপনি এটিকে ক্লাউডের নতুন ভার্টেক্স এআইতে স্থাপন করবেন।

আপনি কি শিখুন

আপনি কিভাবে শিখবেন:

  • একটি হোস্ট করা নোটবুকে একটি পাবলিক মর্টগেজ ডেটাসেটে একটি XGBoost মডেলকে প্রশিক্ষণ দিন৷
  • What-if টুল ব্যবহার করে মডেলটি বিশ্লেষণ করুন
  • Vertex AI-তে XGBoost মডেলটি স্থাপন করুন

Google ক্লাউডে এই ল্যাবটি চালানোর জন্য মোট খরচ প্রায় $1

2. ভার্টেক্স এআই-এর ভূমিকা

এই ল্যাবটি Google ক্লাউডে উপলব্ধ নতুন AI পণ্য অফার ব্যবহার করে। Vertex AI Google ক্লাউড জুড়ে ML অফারগুলিকে একটি নিরবচ্ছিন্ন বিকাশের অভিজ্ঞতায় সংহত করে৷ পূর্বে, অটোএমএল এবং কাস্টম মডেলগুলির সাথে প্রশিক্ষিত মডেলগুলি পৃথক পরিষেবার মাধ্যমে অ্যাক্সেসযোগ্য ছিল। নতুন অফারটি অন্যান্য নতুন পণ্যের সাথে একটি একক API-এ উভয়কে একত্রিত করে। আপনি বিদ্যমান প্রকল্পগুলিকে Vertex AI-তে স্থানান্তর করতে পারেন। আপনার কোন প্রতিক্রিয়া থাকলে, অনুগ্রহ করে সমর্থন পৃষ্ঠাটি দেখুন।

Vertex AI এন্ড-টু-এন্ড ML ওয়ার্কফ্লো সমর্থন করার জন্য বিভিন্ন পণ্য অন্তর্ভুক্ত করে। এই ল্যাবটি নীচে হাইলাইট করা পণ্যগুলিতে ফোকাস করবে: পূর্বাভাস এবং নোটবুক।

ভার্টেক্স পণ্য ওভারভিউ

3. একটি দ্রুত XGBoost প্রাইমার

XGBoost হল একটি মেশিন লার্নিং ফ্রেমওয়ার্ক যা ভবিষ্যদ্বাণীমূলক মডেল তৈরি করতে ডিসিশন ট্রি এবং গ্রেডিয়েন্ট বুস্টিং ব্যবহার করে। এটি একটি গাছের বিভিন্ন লিফ নোডের সাথে সম্পর্কিত স্কোরের উপর ভিত্তি করে একাধিক সিদ্ধান্ত গাছকে একত্রিত করে কাজ করে।

নীচের চিত্রটি একটি সাধারণ সিদ্ধান্ত গাছের মডেলের একটি ভিজ্যুয়ালাইজেশন যা আবহাওয়ার পূর্বাভাসের উপর ভিত্তি করে একটি স্পোর্টস গেম খেলা উচিত কিনা তা মূল্যায়ন করে:

গাছের মডেলের উদাহরণ

কেন আমরা এই মডেলের জন্য XGBoost ব্যবহার করছি? যদিও প্রথাগত নিউরাল নেটওয়ার্কগুলিকে চিত্র এবং পাঠ্যের মতো অসংগঠিত ডেটাতে সর্বোত্তম কার্য সম্পাদন করতে দেখানো হয়েছে, সিদ্ধান্ত গাছগুলি প্রায়শই এই কোডল্যাবে আমরা যে মর্টগেজ ডেটাসেট ব্যবহার করব তার মতো কাঠামোগত ডেটাতে অত্যন্ত ভাল কার্য সম্পাদন করে।

4. আপনার পরিবেশ সেটআপ করুন

এই কোডল্যাব চালানোর জন্য আপনার একটি Google ক্লাউড প্ল্যাটফর্ম প্রকল্পের প্রয়োজন হবে যাতে বিলিং সক্ষম থাকে৷ একটি প্রকল্প তৈরি করতে, এখানে নির্দেশাবলী অনুসরণ করুন।

ধাপ 1: Compute Engine API সক্ষম করুন

কম্পিউট ইঞ্জিনে নেভিগেট করুন এবং সক্ষম নির্বাচন করুন যদি এটি ইতিমধ্যে সক্ষম না থাকে। আপনার নোটবুক উদাহরণ তৈরি করতে আপনার এটির প্রয়োজন হবে৷

ধাপ 2: Vertex AI API সক্ষম করুন

আপনার ক্লাউড কনসোলের ভার্টেক্স বিভাগে নেভিগেট করুন এবং Vertex AI API সক্ষম করুন ক্লিক করুন।

ভার্টেক্স ড্যাশবোর্ড

ধাপ 3: একটি নোটবুক উদাহরণ তৈরি করুন

আপনার ক্লাউড কনসোলের ভার্টেক্স বিভাগ থেকে, নোটবুকগুলিতে ক্লিক করুন:

নোটবুক নির্বাচন করুন

সেখান থেকে নতুন ইনস্ট্যান্স নির্বাচন করুন। তারপর GPU ছাড়া টেনসরফ্লো এন্টারপ্রাইজ 2.3 ইনস্ট্যান্স টাইপ নির্বাচন করুন:

TFE উদাহরণ

ডিফল্ট বিকল্পগুলি ব্যবহার করুন এবং তারপরে তৈরি করুন ক্লিক করুন। একবার উদাহরণ তৈরি হয়ে গেলে, JupyterLab খুলুন নির্বাচন করুন।

ধাপ 4: XGBoost ইনস্টল করুন

একবার আপনার JupyterLab ইনস্ট্যান্স খুলে গেলে, আপনাকে XGBoost প্যাকেজ যোগ করতে হবে।

এটি করতে, লঞ্চার থেকে টার্মিনাল নির্বাচন করুন:

তারপর ভার্টেক্স এআই দ্বারা সমর্থিত XGBoost এর সর্বশেষ সংস্করণ ইনস্টল করতে নিম্নলিখিতটি চালান:

pip3 install xgboost==1.2

এটি সম্পূর্ণ হওয়ার পরে, লঞ্চার থেকে একটি পাইথন 3 নোটবুক ইনস্ট্যান্স খুলুন। আপনি আপনার নোটবুকে শুরু করার জন্য প্রস্তুত!

ধাপ 5: পাইথন প্যাকেজ আমদানি করুন

আপনার নোটবুকের প্রথম ঘরে, নিম্নলিখিত আমদানি যোগ করুন এবং সেলটি চালান। আপনি উপরের মেনুতে ডান তীর বোতাম টিপে বা কমান্ড-এন্টার টিপে এটি চালাতে পারেন:

import pandas as pd
import xgboost as xgb
import numpy as np
import collections
import witwidget

from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score, confusion_matrix
from sklearn.utils import shuffle
from witwidget.notebook.visualization import WitWidget, WitConfigBuilder

5. ডেটা ডাউনলোড এবং প্রক্রিয়া করুন

আমরা একটি XGBoost মডেল প্রশিক্ষণের জন্য ffiec.gov থেকে একটি বন্ধকী ডেটাসেট ব্যবহার করব৷ আমরা মূল ডেটাসেটে কিছু প্রিপ্রসেসিং করেছি এবং মডেলটি প্রশিক্ষণের জন্য আপনার ব্যবহার করার জন্য একটি ছোট সংস্করণ তৈরি করেছি। মডেলটি ভবিষ্যদ্বাণী করবে যে একটি নির্দিষ্ট বন্ধকী আবেদন অনুমোদিত হবে কি না

ধাপ 1: প্রি-প্রসেসড ডেটাসেট ডাউনলোড করুন

আমরা আপনার জন্য Google ক্লাউড স্টোরেজে ডেটাসেটের একটি সংস্করণ উপলব্ধ করেছি৷ আপনি আপনার Jupyter নোটবুকে নিম্নলিখিত gsutil কমান্ডটি চালিয়ে এটি ডাউনলোড করতে পারেন:

!gsutil cp 'gs://mortgage_dataset_files/mortgage-small.csv' .

ধাপ 2: পান্ডাদের সাথে ডেটাসেট পড়ুন

আমাদের পান্ডাস ডেটাফ্রেম তৈরি করার আগে আমরা প্রতিটি কলামের ডেটা টাইপের একটি dict তৈরি করব যাতে পান্ডাস আমাদের ডেটাসেট সঠিকভাবে পড়তে পারে:

COLUMN_NAMES = collections.OrderedDict({
 'as_of_year': np.int16,
 'agency_code': 'category',
 'loan_type': 'category',
 'property_type': 'category',
 'loan_purpose': 'category',
 'occupancy': np.int8,
 'loan_amt_thousands': np.float64,
 'preapproval': 'category',
 'county_code': np.float64,
 'applicant_income_thousands': np.float64,
 'purchaser_type': 'category',
 'hoepa_status': 'category',
 'lien_status': 'category',
 'population': np.float64,
 'ffiec_median_fam_income': np.float64,
 'tract_to_msa_income_pct': np.float64,
 'num_owner_occupied_units': np.float64,
 'num_1_to_4_family_units': np.float64,
 'approved': np.int8
})

পরবর্তীতে আমরা একটি DataFrame তৈরি করব, এটিকে আমরা উপরে উল্লেখিত ডেটা প্রকারগুলি পাস করব। আসল ডেটাসেট নির্দিষ্ট উপায়ে অর্ডার করা হলে আমাদের ডেটা এলোমেলো করা গুরুত্বপূর্ণ। আমরা এটি করার জন্য shuffle নামে একটি sklearn ইউটিলিটি ব্যবহার করি, যা আমরা প্রথম ঘরে আমদানি করেছি:

data = pd.read_csv(
 'mortgage-small.csv',
 index_col=False,
 dtype=COLUMN_NAMES
)
data = data.dropna()
data = shuffle(data, random_state=2)
data.head()

data.head() পান্ডাসে আমাদের ডেটাসেটের প্রথম পাঁচটি সারি প্রিভিউ করতে দেয়। উপরের সেলটি চালানোর পরে আপনার এরকম কিছু দেখতে হবে:

বন্ধকী ডেটাসেটের পূর্বরূপ

এই বৈশিষ্ট্যগুলি আমরা আমাদের মডেল প্রশিক্ষণের জন্য ব্যবহার করব৷ আপনি যদি শেষ পর্যন্ত স্ক্রোল করেন, আপনি শেষ কলামটি approved দেখতে পাবেন, যা আমরা ভবিষ্যদ্বাণী করছি। 1 এর মান নির্দেশ করে যে একটি নির্দিষ্ট আবেদন অনুমোদিত হয়েছিল এবং 0 নির্দেশ করে যে এটি অস্বীকার করা হয়েছিল।

ডেটাসেটে অনুমোদিত/অস্বীকৃত মানগুলির বিতরণ দেখতে এবং লেবেলগুলির একটি নমপি অ্যারে তৈরি করতে, নিম্নলিখিতগুলি চালান:

# Class labels - 0: denied, 1: approved
print(data['approved'].value_counts())

labels = data['approved'].values
data = data.drop(columns=['approved'])

ডেটাসেটের প্রায় 66% অনুমোদিত অ্যাপ্লিকেশন রয়েছে।

ধাপ 3: শ্রেণীগত মানগুলির জন্য ডামি কলাম তৈরি করা

এই ডেটাসেটে শ্রেণীবদ্ধ এবং সংখ্যাসূচক মানের মিশ্রণ রয়েছে, কিন্তু XGBoost-এর জন্য সমস্ত বৈশিষ্ট্য সংখ্যাসূচক হওয়া প্রয়োজন। এক-হট এনকোডিং ব্যবহার করে শ্রেণীগত মান উপস্থাপন করার পরিবর্তে, আমাদের XGBoost মডেলের জন্য আমরা Pandas get_dummies ফাংশনের সুবিধা নেব।

get_dummies একাধিক সম্ভাব্য মান সহ একটি কলাম নেয় এবং এটিকে শুধুমাত্র 0s এবং 1s সহ প্রতিটি কলামের একটি সিরিজে রূপান্তর করে। উদাহরণস্বরূপ, যদি আমাদের কাছে "নীল" এবং "লাল" এর সম্ভাব্য মান সহ একটি কলাম "রঙ" থাকে, তাহলে get_dummies এটিকে 2 টি কলামে রূপান্তরিত করবে যা "color_blue" এবং "color_red" নামক বুলিয়ান 0 এবং 1 মান সহ।

আমাদের শ্রেণীবদ্ধ বৈশিষ্ট্যগুলির জন্য ডামি কলাম তৈরি করতে, নিম্নলিখিত কোডটি চালান:

dummy_columns = list(data.dtypes[data.dtypes == 'category'].index)
data = pd.get_dummies(data, columns=dummy_columns)

data.head()

আপনি যখন এই সময় ডেটার পূর্বরূপ দেখবেন, তখন আপনি একক বৈশিষ্ট্য দেখতে পাবেন (যেমন নীচের চিত্রের purchaser_type ) একাধিক কলামে বিভক্ত:

পান্ডা ডামি কলাম

ধাপ 4: ট্রেন এবং পরীক্ষা সেটে ডেটা বিভক্ত করা

মেশিন লার্নিং এর একটি গুরুত্বপূর্ণ ধারণা হল ট্রেন/টেস্ট স্প্লিট। আমরা আমাদের বেশিরভাগ ডেটা নেব এবং আমাদের মডেলকে প্রশিক্ষণ দেওয়ার জন্য এটি ব্যবহার করব, এবং আমরা আমাদের মডেলের ডেটার উপর পরীক্ষা করার জন্য বাকিগুলি আলাদা করে রাখব যা আগে কখনও দেখা যায়নি৷

আপনার নোটবুকে নিম্নলিখিত কোড যোগ করুন, যা আমাদের ডেটা বিভক্ত করতে স্কিট-লার্ন ফাংশন train_test_split ব্যবহার করে:

x,y = data.values,labels
x_train,x_test,y_train,y_test = train_test_split(x,y)

এখন আপনি আপনার মডেল তৈরি এবং প্রশিক্ষণের জন্য প্রস্তুত!

6. একটি XGBoost মডেল তৈরি করুন, প্রশিক্ষণ দিন এবং মূল্যায়ন করুন

ধাপ 1: XGBoost মডেলটিকে সংজ্ঞায়িত করুন এবং প্রশিক্ষণ দিন

XGBoost এ একটি মডেল তৈরি করা সহজ। আমরা মডেল তৈরি করতে XGBClassifier ক্লাস ব্যবহার করব, এবং আমাদের নির্দিষ্ট শ্রেণীবিভাগের কাজের জন্য সঠিক objective প্যারামিটারটি পাস করতে হবে। এই ক্ষেত্রে আমরা reg:logistic ব্যবহার করি যেহেতু আমরা একটি বাইনারি শ্রেণীবিভাগের সমস্যা পেয়েছি এবং আমরা চাই মডেলটি একটি একক মান (0,1): 0 এর পরিসরে আউটপুট করুক যা অনুমোদিত নয় এবং 1 অনুমোদিত নয়।

নিম্নলিখিত কোড একটি XGBoost মডেল তৈরি করবে:

model = xgb.XGBClassifier(
    objective='reg:logistic'
)

আপনি fit() পদ্ধতিতে কল করে এবং প্রশিক্ষণের ডেটা এবং লেবেলগুলি পাস করে কোডের একটি লাইন দিয়ে মডেলটিকে প্রশিক্ষণ দিতে পারেন।

model.fit(x_train, y_train)

ধাপ 2: আপনার মডেলের নির্ভুলতা মূল্যায়ন করুন

আমরা এখন predict() ফাংশন দিয়ে আমাদের পরীক্ষার ডেটাতে ভবিষ্যদ্বাণী তৈরি করতে আমাদের প্রশিক্ষিত মডেল ব্যবহার করতে পারি।

তারপরে আমরা Scikit-learn-এর accuracy_score() ফাংশনটি আমাদের পরীক্ষার ডেটাতে কীভাবে পারফর্ম করে তার উপর ভিত্তি করে আমাদের মডেলের নির্ভুলতা গণনা করব। আমরা আমাদের পরীক্ষার সেটে প্রতিটি উদাহরণের জন্য মডেলের পূর্বাভাসিত মানগুলির সাথে গ্রাউন্ড ট্রুথ মানগুলিকে পাস করব:

y_pred = model.predict(x_test)
acc = accuracy_score(y_test, y_pred.round())
print(acc, '\n')

আপনি 87% এর কাছাকাছি নির্ভুলতা দেখতে পাবেন, কিন্তু মেশিন লার্নিংয়ে সবসময় এলোমেলোতার একটি উপাদান থাকে বলে আপনার ক্ষেত্রে কিছুটা তারতম্য হবে।

ধাপ 3: আপনার মডেল সংরক্ষণ করুন

মডেল স্থাপন করার জন্য, একটি স্থানীয় ফাইলে সংরক্ষণ করতে নিম্নলিখিত কোডটি চালান:

model.save_model('model.bst')

7. আপনার মডেল ব্যাখ্যা করতে What-if টুল ব্যবহার করুন

ধাপ 1: কি-ইফ টুল ভিজ্যুয়ালাইজেশন তৈরি করুন

What-if টুলটিকে আপনার স্থানীয় মডেলের সাথে সংযুক্ত করতে, আপনাকে সেই উদাহরণগুলির জন্য গ্রাউন্ড ট্রুথ মান সহ আপনার পরীক্ষার উদাহরণগুলির একটি উপসেট পাস করতে হবে। আসুন তাদের গ্রাউন্ড ট্রুথ লেবেল সহ আমাদের 500 টি পরীক্ষার উদাহরণগুলির একটি Numpy অ্যারে তৈরি করি:

num_wit_examples = 500
test_examples = np.hstack((x_test[:num_wit_examples],y_test[:num_wit_examples].reshape(-1,1)))

What-if টুলটি ইনস্ট্যান্ট করা একটি WitConfigBuilder অবজেক্ট তৈরি করা এবং আমরা যে মডেলটি বিশ্লেষণ করতে চাই সেটি পাস করার মতোই সহজ।

যেহেতু What-if টুলটি আমাদের মডেলের প্রতিটি ক্লাসের জন্য স্কোরের একটি তালিকা আশা করে (এই ক্ষেত্রে 2), আমরা What-if টুলের সাথে XGBoost এর predict_proba পদ্ধতি ব্যবহার করব:

config_builder = (WitConfigBuilder(test_examples.tolist(), data.columns.tolist() + ['mortgage_status'])
  .set_custom_predict_fn(model.predict_proba)
  .set_target_feature('mortgage_status')
  .set_label_vocab(['denied', 'approved']))
WitWidget(config_builder, height=800)

মনে রাখবেন ভিজ্যুয়ালাইজেশন লোড হতে এক মিনিট সময় লাগবে। যখন এটি লোড হয়, আপনি নিম্নলিখিত দেখতে হবে:

কি-ইফ টুল প্রাথমিক ভিউ

y-অক্ষ আমাদেরকে মডেলের ভবিষ্যদ্বাণী দেখায়, 1 হল উচ্চ আত্মবিশ্বাসের approved ভবিষ্যদ্বাণী, এবং 0 হল একটি উচ্চ আত্মবিশ্বাস denied ভবিষ্যদ্বাণী৷ x-অক্ষ হল সমস্ত লোড করা ডেটা পয়েন্টের স্প্রেড।

ধাপ 2: পৃথক ডেটা পয়েন্ট অন্বেষণ করুন

What-if টুলের ডিফল্ট ভিউ হল ডেটাপয়েন্ট এডিটর ট্যাব। এখানে আপনি যেকোন পৃথক ডেটা পয়েন্টে ক্লিক করতে পারেন এর বৈশিষ্ট্যগুলি দেখতে, বৈশিষ্ট্যের মানগুলি পরিবর্তন করতে এবং সেই পরিবর্তনটি কীভাবে একটি পৃথক ডেটা পয়েন্টে মডেলের পূর্বাভাসকে প্রভাবিত করে তা দেখতে পারেন৷

নীচের উদাহরণে আমরা .5 থ্রেশহোল্ডের কাছাকাছি একটি ডেটা পয়েন্ট বেছে নিয়েছি। এই নির্দিষ্ট ডেটা পয়েন্টের সাথে যুক্ত বন্ধকী আবেদনটি CFPB থেকে উদ্ভূত হয়েছে। আমরা সেই বৈশিষ্ট্যটিকে 0 এ পরিবর্তন করেছি এবং agency_code_Department of Housing and Urban Development (HUD) এর মান 1 এ পরিবর্তন করেছি যদি এই ঋণের পরিবর্তে HUD থেকে উদ্ভূত হয় তাহলে মডেলের ভবিষ্যদ্বাণীর কী হবে:

আমরা কী-ইফ টুলের নীচের বাম অংশে দেখতে পাচ্ছি, এই বৈশিষ্ট্যটি পরিবর্তন করার ফলে মডেলটির approved ভবিষ্যদ্বাণী উল্লেখযোগ্যভাবে 32% কমে গেছে। এটি নির্দেশ করতে পারে যে এজেন্সি থেকে ঋণের উৎপত্তি মডেলটির আউটপুটে একটি শক্তিশালী প্রভাব রয়েছে, কিন্তু নিশ্চিত হওয়ার জন্য আমাদের আরও বিশ্লেষণ করতে হবে।

UI-এর নীচের বাম অংশে, আমরা প্রতিটি ডেটা পয়েন্টের জন্য গ্রাউন্ড ট্রুথ মানও দেখতে পারি এবং মডেলের ভবিষ্যদ্বাণীর সাথে তুলনা করতে পারি:

ধাপ 3: কাউন্টারফ্যাকচুয়াল বিশ্লেষণ

এরপর, যেকোনো ডেটাপয়েন্টে ক্লিক করুন এবং নিকটতম কাউন্টারফ্যাকচুয়াল ডেটাপয়েন্ট স্লাইডারটি ডানদিকে সরান:

এটি নির্বাচন করা আপনাকে ডেটা পয়েন্ট দেখাবে যেটির বৈশিষ্ট্য মানগুলি আপনার নির্বাচিত আসলটির সাথে সবচেয়ে বেশি মিল রয়েছে, কিন্তু বিপরীত পূর্বাভাস। তারপরে দুটি ডেটা পয়েন্টের পার্থক্য কোথায় তা দেখতে আপনি বৈশিষ্ট্যের মানগুলির মাধ্যমে স্ক্রোল করতে পারেন (পার্থক্যগুলি সবুজ এবং গাঢ় রঙে হাইলাইট করা হয়েছে)।

ধাপ 4: আংশিক নির্ভরতা প্লট দেখুন

প্রতিটি বৈশিষ্ট্য সামগ্রিকভাবে মডেলের ভবিষ্যদ্বাণীগুলিকে কীভাবে প্রভাবিত করে তা দেখতে, আংশিক নির্ভরতা প্লট বাক্সটি চেক করুন এবং নিশ্চিত করুন যে বিশ্বব্যাপী আংশিক নির্ভরতা প্লট নির্বাচন করা হয়েছে:

এখানে আমরা দেখতে পাচ্ছি যে HUD থেকে উদ্ভূত ঋণগুলি অস্বীকার করার সম্ভাবনা কিছুটা বেশি। গ্রাফটি এই আকৃতি কারণ এজেন্সি কোড একটি বুলিয়ান বৈশিষ্ট্য, তাই মান শুধুমাত্র 0 বা 1 হতে পারে।

applicant_income_thousands একটি সংখ্যাগত বৈশিষ্ট্য, এবং আংশিক নির্ভরতার প্লটে আমরা দেখতে পাচ্ছি যে উচ্চতর আয় একটি আবেদন অনুমোদিত হওয়ার সম্ভাবনাকে কিছুটা বাড়িয়ে দেয়, কিন্তু শুধুমাত্র প্রায় $200k পর্যন্ত। $200k পরে, এই বৈশিষ্ট্যটি মডেলের পূর্বাভাসকে প্রভাবিত করে না।

ধাপ 5: সামগ্রিক কর্মক্ষমতা এবং ন্যায্যতা অন্বেষণ করুন

এরপরে, পারফরমেন্স এবং ফেয়ারনেস ট্যাবে যান। এটি প্রদত্ত ডেটাসেটে মডেলের ফলাফলের সামগ্রিক কর্মক্ষমতা পরিসংখ্যান দেখায়, যার মধ্যে কনফিউশন ম্যাট্রিক্স, পিআর কার্ভ এবং ROC বক্ররেখা রয়েছে।

একটি বিভ্রান্তি ম্যাট্রিক্স দেখতে গ্রাউন্ড ট্রুথ বৈশিষ্ট্য হিসাবে mortgage_status নির্বাচন করুন:

এই বিভ্রান্তি ম্যাট্রিক্স মোটের শতাংশ হিসাবে আমাদের মডেলের সঠিক এবং ভুল ভবিষ্যদ্বাণী দেখায়। আপনি যদি প্রকৃত হ্যাঁ / পূর্বাভাসিত হ্যাঁ এবং প্রকৃত না / পূর্বাভাসিত কোন স্কোয়ার যোগ করেন তবে এটি আপনার মডেলের মতো একই নির্ভুলতা যুক্ত করা উচিত (এই ক্ষেত্রে প্রায় 87%, যদিও আপনার মডেলটি সামান্য পরিবর্তিত হতে পারে কারণ এখানে এলোমেলোতার একটি উপাদান রয়েছে এমএল মডেল প্রশিক্ষণ)।

এছাড়াও আপনি থ্রেশহোল্ড স্লাইডারের সাথে পরীক্ষা করতে পারেন, ঋণের জন্য approved ভবিষ্যদ্বাণী করার সিদ্ধান্ত নেওয়ার আগে মডেলটিকে ইতিবাচক শ্রেণিবিন্যাসের স্কোর বাড়াতে এবং কমাতে হবে এবং এটি কীভাবে সঠিকতা, মিথ্যা ইতিবাচক এবং মিথ্যা নেতিবাচক পরিবর্তন করে তা দেখুন। এই ক্ষেত্রে, নির্ভুলতা .55 -এর থ্রেশহোল্ডের কাছাকাছি সর্বোচ্চ।

এরপর, ড্রপডাউন দ্বারা বাম স্লাইসে , loan_purpose_Home_purchase নির্বাচন করুন:

আপনি এখন আপনার ডেটার দুটি উপসেটের কার্যকারিতা দেখতে পাবেন: "0" স্লাইসটি দেখায় কখন ঋণটি বাড়ি কেনার জন্য নয় এবং "1" স্লাইসটি যখন লোনটি একটি বাড়ি কেনার জন্য হয়। পারফরম্যান্সের পার্থক্যের জন্য দুটি স্লাইসের মধ্যে সঠিকতা, মিথ্যা পজিটিভ এবং মিথ্যা নেতিবাচক হার দেখুন।

আপনি যদি বিভ্রান্তির ম্যাট্রিক্সগুলি দেখার জন্য সারিগুলি প্রসারিত করেন তবে আপনি দেখতে পাবেন যে মডেলটি বাড়ি কেনার জন্য ~70% ঋণ আবেদনের জন্য "অনুমোদিত" এবং শুধুমাত্র 46% ঋণের জন্য ভবিষ্যদ্বাণী করে যা বাড়ি কেনার জন্য নয় (সঠিক শতাংশগুলি পরিবর্তিত হবে আপনার মডেল):

আপনি যদি বাম দিকের রেডিও বোতামগুলি থেকে জনসংখ্যাগত সমতা নির্বাচন করেন, তাহলে দুটি থ্রেশহোল্ড সামঞ্জস্য করা হবে যাতে মডেলটি উভয় স্লাইসে একই শতাংশ আবেদনকারীদের জন্য approved পূর্বাভাস দেয়। এটি প্রতিটি স্লাইসের জন্য সঠিকতা, মিথ্যা ইতিবাচক এবং মিথ্যা নেতিবাচককে কী করে?

ধাপ 6: বৈশিষ্ট্য বিতরণ অন্বেষণ করুন

অবশেষে, কী-ইফ টুলের বৈশিষ্ট্য ট্যাবে নেভিগেট করুন। এটি আপনাকে আপনার ডেটাসেটের প্রতিটি বৈশিষ্ট্যের জন্য মানগুলির বিতরণ দেখায়:

আপনার ডেটাসেট ভারসাম্যপূর্ণ কিনা তা নিশ্চিত করতে আপনি এই ট্যাবটি ব্যবহার করতে পারেন। উদাহরণস্বরূপ, দেখে মনে হচ্ছে ডেটাসেটে খুব কম লোন ফার্ম সার্ভিস এজেন্সি থেকে এসেছে। মডেলের নির্ভুলতা উন্নত করতে, ডেটা উপলব্ধ থাকলে আমরা সেই সংস্থা থেকে আরও ঋণ যোগ করার কথা বিবেচনা করতে পারি।

আমরা এখানে মাত্র কয়েকটি কী-ইফ টুল এক্সপ্লোরেশন ধারণা বর্ণনা করেছি। টুলের সাথে খেলা চালিয়ে যেতে নির্দ্বিধায়, অন্বেষণ করার জন্য আরও অনেক এলাকা আছে!

8. Vertex AI-তে মডেল স্থাপন করুন

আমরা আমাদের মডেলটি স্থানীয়ভাবে কাজ করতে পেরেছি, তবে এটি ভাল হবে যদি আমরা যে কোনও জায়গা থেকে এটির উপর ভবিষ্যদ্বাণী করতে পারি (শুধু এই নোটবুক নয়!) এই ধাপে আমরা এটিকে ক্লাউডে স্থাপন করব।

ধাপ 1: আমাদের মডেলের জন্য একটি ক্লাউড স্টোরেজ বালতি তৈরি করুন

আসুন প্রথমে কিছু এনভায়রনমেন্ট ভেরিয়েবল সংজ্ঞায়িত করি যা আমরা কোডল্যাবের বাকি অংশ জুড়ে ব্যবহার করব। আপনার Google ক্লাউড প্রকল্পের নাম, আপনি যে ক্লাউড স্টোরেজ বাকেটটি তৈরি করতে চান তার নাম (বৈশ্বিকভাবে অনন্য হতে হবে) এবং আপনার মডেলের প্রথম সংস্করণের সংস্করণের নাম দিয়ে নীচের মানগুলি পূরণ করুন:

# Update the variables below to your own Google Cloud project ID and GCS bucket name. You can leave the model name we've specified below:
GCP_PROJECT = 'your-gcp-project'
MODEL_BUCKET = 'gs://storage_bucket_name'
MODEL_NAME = 'xgb_mortgage'

এখন আমরা আমাদের XGBoost মডেল ফাইল সংরক্ষণ করার জন্য একটি স্টোরেজ বালতি তৈরি করতে প্রস্তুত। আমরা যখন স্থাপন করব তখন আমরা এই ফাইলটিতে Vertex AI নির্দেশ করব।

একটি আঞ্চলিক স্টোরেজ বালতি তৈরি করতে আপনার নোটবুকের মধ্যে থেকে এই gsutil কমান্ডটি চালান:

!gsutil mb -l us-central1 $MODEL_BUCKET

ধাপ 2: মডেল ফাইলটি ক্লাউড স্টোরেজে কপি করুন

এর পরে, আমরা আমাদের XGBoost সংরক্ষিত মডেল ফাইলটি ক্লাউড স্টোরেজে কপি করব। নিম্নলিখিত gsutil কমান্ড চালান:

!gsutil cp ./model.bst $MODEL_BUCKET

ফাইলটি কপি করা হয়েছে তা নিশ্চিত করতে আপনার ক্লাউড কনসোলের স্টোরেজ ব্রাউজারে যান:

ধাপ 3: মডেল তৈরি করুন এবং একটি শেষ পয়েন্টে স্থাপন করুন

আমরা ক্লাউডে মডেল স্থাপন করতে প্রায় প্রস্তুত! Vertex AI-তে একটি মডেল একাধিক শেষ পয়েন্ট ধারণ করতে পারে। আমরা প্রথমে একটি মডেল তৈরি করব, তারপর আমরা সেই মডেলের মধ্যে একটি এন্ডপয়েন্ট তৈরি করব এবং এটি স্থাপন করব।

প্রথমে, আপনার মডেল তৈরি করতে gcloud CLI ব্যবহার করুন:

!gcloud beta ai models upload \
--display-name=$MODEL_NAME \
--artifact-uri=$MODEL_BUCKET \
--container-image-uri=us-docker.pkg.dev/cloud-aiplatform/prediction/xgboost-cpu.1-2:latest \
--region=us-central1

artifact-uri প্যারামিটারটি স্টোরেজ অবস্থানের দিকে নির্দেশ করবে যেখানে আপনি আপনার XGBoost মডেলটি সংরক্ষণ করেছেন। container-image-uri প্যারামিটার ভার্টেক্স এআইকে বলে যে পরিবেশনের জন্য কোন পূর্ব-নির্মিত কন্টেইনার ব্যবহার করতে হবে। এই কমান্ডটি সম্পূর্ণ হয়ে গেলে, আপনার নতুন মডেলের আইডি পেতে আপনার Vertex কনসোলের মডেল বিভাগে নেভিগেট করুন। আপনি এটি এখানে খুঁজে পেতে পারেন:

কনসোল থেকে মডেল আইডি পান

সেই আইডিটি অনুলিপি করুন এবং এটি একটি ভেরিয়েবলে সংরক্ষণ করুন:

MODEL_ID = "your_model_id"

এখন এই মডেলের মধ্যে একটি শেষ পয়েন্ট তৈরি করার সময়। আমরা এই gcloud কমান্ড দিয়ে এটি করতে পারি:

!gcloud beta ai endpoints create \
--display-name=xgb_mortgage_v1 \
--region=us-central1

এটি সম্পূর্ণ হলে, আপনি আমাদের নোটবুক আউটপুটে লগ ইন করা আপনার শেষ পয়েন্টের অবস্থান দেখতে পাবেন। লাইনটি সন্ধান করুন যা বলে যে শেষ পয়েন্টটি এমন একটি পাথ দিয়ে তৈরি করা হয়েছে যা নীচের মত দেখাচ্ছে: projects/project_ID/locations/us-central1/endpoints/endpoint_ID. তারপরে উপরে তৈরি করা আপনার শেষ পয়েন্টের আইডিগুলির সাথে নীচের মানগুলি প্রতিস্থাপন করুন:

ENDPOINT_ID = "your_endpoint_id"

আপনার এন্ডপয়েন্ট স্থাপন করতে, নিচের gcloud কমান্ডটি চালান:

!gcloud beta ai endpoints deploy-model $ENDPOINT_ID \
--region=us-central1 \
--model=$MODEL_ID \
--display-name=xgb_mortgage_v1 \
--machine-type=n1-standard-2 \
--traffic-split=0=100

শেষ পয়েন্ট স্থাপন সম্পূর্ণ হতে ~5-10 মিনিট সময় লাগবে। আপনার এন্ডপয়েন্ট স্থাপন করার সময়, আপনার কনসোলের মডেল বিভাগে যান। আপনার মডেলে ক্লিক করুন এবং আপনি আপনার এন্ডপিয়ন্ট স্থাপন করা দেখতে পাবেন:

ডিপ্লয় সফলভাবে সম্পন্ন হলে আপনি একটি সবুজ চেক চিহ্ন দেখতে পাবেন যেখানে লোডিং স্পিনার আছে।

ধাপ 4: স্থাপন করা মডেল পরীক্ষা করুন

আপনার নিয়োজিত মডেল কাজ করছে তা নিশ্চিত করতে, একটি ভবিষ্যদ্বাণী করতে gcloud ব্যবহার করে পরীক্ষা করুন। প্রথমে, আমাদের পরীক্ষা সেট থেকে একটি উদাহরণ সহ একটি JSON ফাইল সংরক্ষণ করুন:

%%writefile predictions.json
{
  "instances": [
    [2016.0, 1.0, 346.0, 27.0, 211.0, 4530.0, 86700.0, 132.13, 1289.0, 1408.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 1.0, 0.0]
  ]
}

এই gcloud কমান্ড চালানোর মাধ্যমে আপনার মডেল পরীক্ষা করুন:

!gcloud beta ai endpoints predict $ENDPOINT_ID \
--json-request=predictions.json \
--region=us-central1

আপনার আউটপুটে আপনার মডেলের ভবিষ্যদ্বাণী দেখতে হবে। এই বিশেষ উদাহরণটি অনুমোদিত হয়েছে, তাই আপনি 1 এর কাছাকাছি একটি মান দেখতে পাবেন।

9. পরিচ্ছন্নতা

আপনি যদি এই নোটবুকটি ব্যবহার চালিয়ে যেতে চান তবে এটি ব্যবহার না করার সময় এটি বন্ধ করার পরামর্শ দেওয়া হয়। আপনার ক্লাউড কনসোলের নোটবুক UI থেকে, নোটবুকটি নির্বাচন করুন এবং তারপরে থামুন নির্বাচন করুন:

আপনি যদি এই ল্যাবে আপনার তৈরি করা সমস্ত সংস্থান মুছে ফেলতে চান তবে নোটবুকের উদাহরণটি বন্ধ করার পরিবর্তে কেবল মুছুন৷

আপনার মোতায়েন করা এন্ডপয়েন্ট মুছতে, আপনার Vertex কনসোলের এন্ডপয়েন্ট বিভাগে নেভিগেট করুন এবং মুছুন আইকনে ক্লিক করুন:

আপনার ক্লাউড কনসোলে নেভিগেশন মেনু ব্যবহার করে স্টোরেজ বাকেট মুছে ফেলতে, স্টোরেজ ব্রাউজ করুন, আপনার বালতি নির্বাচন করুন এবং মুছুন ক্লিক করুন: