ভূমিকা
এই নির্দেশিকাটি সাপোর্ট ভেক্টর মেশিন (SVMs) সম্পর্কে তিনটি গাইডের দ্বিতীয় অংশ। এই নির্দেশিকায়, আমরা জাল ব্যাঙ্ক নোট ব্যবহারের ক্ষেত্রে কাজ চালিয়ে যাব, বুঝতে পারব যে SVM প্যারামিটারগুলি ইতিমধ্যেই Scikit-learn দ্বারা সেট করা হচ্ছে, C এবং Gamma হাইপারপ্যারামিটারগুলি কী এবং ক্রস ভ্যালিডেশন এবং গ্রিড অনুসন্ধান ব্যবহার করে কীভাবে তাদের টিউন করা যায়।
এসভিএম গাইডের সম্পূর্ণ সিরিজে, এসভিএম হাইপারপ্যারামিটার ছাড়াও, আপনি সাধারণ এসভিএম সম্পর্কেও শিখবেন, একটি ধারণা কার্নেল কৌশল, এবং অন্যান্য ধরনের SVM অন্বেষণ করুন।
আপনি যদি সমস্ত নির্দেশিকা পড়তে চান, প্রথম নির্দেশিকাটি একবার দেখুন, অথবা দেখুন কোনটি আপনার সবচেয়ে বেশি আগ্রহী, নীচে প্রতিটি গাইডে কভার করা বিষয়গুলির সারণী রয়েছে:
- কেস ব্যবহার করুন: ব্যাংক নোট ভুলে যান
- SVM-এর পটভূমি
- সরল (লিনিয়ার) SVM মডেল
- ডেটাসেট সম্পর্কে
- ডেটাসেট আমদানি করা হচ্ছে
- ডেটাসেট অন্বেষণ
- Scikit-Learn এর সাথে SVM বাস্তবায়ন করা
- ট্রেন/পরীক্ষা সেটে ডেটা ভাগ করা
- মডেল প্রশিক্ষণ
- ভবিষ্যদ্বাণী করা
- মডেল মূল্যায়ন
- ফলাফল ব্যাখ্যা
2. SVM হাইপারপ্যারামিটার বোঝা
- সি হাইপারপ্যারামিটার
- গামা হাইপারপ্যারামিটার
3. Python's Scikit-Learn-এর সাথে অন্যান্য SVM ফ্লেভার প্রয়োগ করা (শীঘ্রই আসছে!)
- এসভিএমের সাধারণ ধারণা (একটি সংক্ষিপ্ত বিবরণ)
- কার্নেল (কৌশল) SVM
- Scikit-Learn-এর সাথে নন-লিনিয়ার কার্নেল SVM বাস্তবায়ন করা
- লাইব্রেরি আমদানি করা হচ্ছে
- ডেটাসেট আমদানি করা হচ্ছে
- বৈশিষ্ট্য (X) এবং লক্ষ্য (y) মধ্যে ডেটা ভাগ করা
- ট্রেন/পরীক্ষা সেটে ডেটা ভাগ করা
- অ্যালগরিদম প্রশিক্ষণ
- বহুপদী কার্নেল
- ভবিষ্যদ্বাণী করা
- অ্যালগরিদম মূল্যায়ন
- গাউসিয়ান কার্নেল
- ভবিষ্যদ্বাণী এবং মূল্যায়ন
- সিগময়েড কার্নেল
- ভবিষ্যদ্বাণী এবং মূল্যায়ন
- নন-লিনিয়ার কার্নেল পারফরম্যান্সের তুলনা
চলুন জেনে নিই কিভাবে ক্রস ভ্যালিডেশন বাস্তবায়ন করা যায় এবং হাইপারপ্যারামিটার টিউনিং করা যায়।
SVM হাইপারপ্যারামিটার
স্কিট-লার্ন এবং এর ডিফল্ট মান দ্বারা ইতিমধ্যে সেট করা সমস্ত মডেল প্যারামিটার দেখতে, আমরা ব্যবহার করতে পারি get_params()
পদ্ধতি:
svc.get_params()
এই পদ্ধতিটি প্রদর্শন করে:
{'C': 1.0, 'break_ties': False, 'cache_size': 200, 'class_weight': None, 'coef0': 0.0, 'decision_function_shape': 'ovr', 'degree': 3, 'gamma': 'scale', 'kernel': 'linear', 'max_iter': -1, 'probability': False, 'random_state': None, 'shrinking': True, 'tol': 0.001, 'verbose': False}
লক্ষ্য করুন যে ইতিমধ্যেই মোট 15টি হাইপারপ্যারামিটার সেট করা হয়েছে, এটি ঘটে কারণ SVM অ্যালগরিদমের অনেক বৈচিত্র রয়েছে৷ আমরা একটি লিনিয়ার ফাংশন পেতে লিনিয়ার কার্নেল ব্যবহার করেছি, তবে এমন কার্নেলও রয়েছে যা অন্যান্য ধরণের ফাংশন বর্ণনা করে এবং সেই কার্নেলগুলিকে বিভিন্ন উপায়ে প্যারামেট্রিজ করা হয়।
এই বৈচিত্রগুলি মডেলটিকে আরও নমনীয় এবং ডেটার বিভিন্ন আকারের মধ্যে একটি পৃথকীকরণ খুঁজে পাওয়ার জন্য উপযুক্ত করে তোলে। যদি আমরা আমাদের ক্লাসগুলিকে আলাদা করার জন্য একটি রেখা আঁকতে পারি, তাহলে ক রৈখিক কার্নেল একটি ভাল বিকল্প হবে, যদি আমরা একটি বক্ররেখা প্রয়োজন, তারপর একটি বহুপদী কার্নেল সেরা পছন্দ হতে পারে, যদি আমাদের ডেটার বৃত্তাকার আকার থাকে, তাহলে ক রেডিয়াল বেসিস ফাংশন or RBF একটি থ্রেশহোল্ডের উপরে এবং নীচে মান থাকলে কার্নেল ডেটার জন্য আরও ভালভাবে উপযুক্ত হবে, a সিগমায়েড কার্নেল ক্লাসগুলিকে আরও ভালভাবে আলাদা করতে পারে। আমরা আমাদের ডেটাতে যা অন্বেষণ করেছি তা থেকে মনে হচ্ছে যে একটি RBF বা একটি বহুপদী কার্নেল একটি লিনিয়ার কার্নেলের চেয়ে বেশি উপযুক্ত হবে।
এখন যেহেতু আমাদের ধারণা আছে যে 4 ধরনের বিভিন্ন কার্নেল ফাংশন আছে, আমরা প্যারামিটারে ফিরে যেতে পারি। যখন SVM অ্যালগরিদম ক্লাসগুলির মধ্যে একটি বিচ্ছেদ খুঁজে বের করার চেষ্টা করে, আমরা ইতিমধ্যেই বুঝতে পেরেছি যে এটি একটি শ্রেণিবিন্যাস আঁকে মার্জিন সমর্থন ভেক্টর এবং বিচ্ছেদ লাইন (বা বক্ররেখা) মধ্যে।
এই মার্জিনটি এক অর্থে বিচ্ছেদ রেখা এবং বিন্দুর মধ্যে একটি বাফারের মতো। মার্জিন আকার পরিবর্তিত হতে পারে, যখন মার্জিন হয় ক্ষুদ্রতর, বিন্দুগুলির জন্য কম জায়গা রয়েছে যা মার্জিনের বাইরে পড়ে, ক্লাসগুলির মধ্যে বিচ্ছেদকে আরও পরিষ্কার করে, তাই আরও নমুনা তৈরি করা হচ্ছে সঠিকভাবে শ্রেণীবদ্ধ, বিপরীতভাবে, যখন মার্জিন হয় বৃহত্তর, ক্লাসের মধ্যে বিচ্ছেদ কম স্পষ্ট, এবং আরও নমুনা হতে পারে ভুল শ্রেণীবদ্ধ. অন্য কথায়, একটি ছোট মার্জিন মানে আরও সঠিকভাবে শ্রেণীবদ্ধ নমুনা, এবং আরও একটি অনমনীয় ক্লাসিফায়ার, যখন একটি বড় মার্জিন, আরও ভুল শ্রেণীবদ্ধ নমুনাগুলিকে বোঝায়, তবে আরও বেশি নমনীয় শ্রেণিবিন্যাসকারী
যখন সেই মার্জিনগুলি বেছে নেওয়া হয়, তখন যে প্যারামিটারটি তাদের নির্ধারণ করে তা হল C
প্যারামিটার।
সি হাইপারপ্যারামিটার
সার্জারির C
পরামিতি মার্জিন আকারের বিপরীতভাবে সমানুপাতিক, এর মানে হল যে বৃহত্তর মুল্য C
, দ্য ক্ষুদ্রতর মার্জিন, এবং, বিপরীতভাবে, ক্ষুদ্রতর মুল্য C
, দ্য বৃহত্তর মার্জিন দ্য C
যে কোন কার্নেলের সাথে প্যারামিটার ব্যবহার করা যেতে পারে, এটি অ্যালগরিদমকে বলে যে প্রতিটি প্রশিক্ষণের নমুনাকে ভুল শ্রেণিবদ্ধ করা এড়াতে কতটা এড়াতে হবে, সেই কারণে, এটি নামেও পরিচিত নিয়মিতকরণ. আমাদের লিনিয়ার কার্নেল SVM ব্যবহার করেছে a C
1.0 এর, যা a বড় মান এবং দেয় একটি ছোট মার্জিন.
আমরা একটি সঙ্গে পরীক্ষা করতে পারেন ক্ষুদ্রতর 'C' এর মান এবং অনুশীলনে বুঝতে পারি a এর সাথে কী ঘটে বড় মার্জিন. এটি করার জন্য, আমরা একটি নতুন ক্লাসিফায়ার তৈরি করব, svc_c
, এবং শুধুমাত্র এর মান পরিবর্তন করুন C
থেকে 0.0001
. এর পুনরাবৃত্তি করা যাক fit
এবং predict
পদক্ষেপ:
svc_c = SVC(kernel='linear', C=0.0001)
svc_c.fit(X_train, y_train)
y_pred_c = svc_c.predict(X_test)
এখন আমরা পরীক্ষার ডেটার ফলাফল দেখতে পারি:
print(classification_report(y_test, y_pred_c)) cm_c = confusion_matrix(y_test, y_pred_c)
sns.heatmap(cm_c, annot=True, fmt='d').set_title('Confusion matrix of linear SVM with C=0.0001')
এই আউটপুট:
precision recall f1-score support 0 0.82 0.96 0.88 148 1 0.94 0.76 0.84 127 accuracy 0.87 275 macro avg 0.88 0.86 0.86 275
weighted avg 0.88 0.87 0.86 275
একটি ছোট ব্যবহার করে C
এবং একটি বৃহত্তর মার্জিন প্রাপ্ত করার ফলে, শ্রেণীবিভাগকারী আরও নমনীয় হয়ে উঠেছে এবং আরও শ্রেণীবিভাগের ভুলের সাথে। শ্রেণীবিভাগ রিপোর্টে, আমরা দেখতে পাচ্ছি যে f1-score
, পূর্বে উভয় শ্রেণীর জন্য 0.99, ক্লাস 0.88 এর জন্য 0 এবং ক্লাস 0.84 এর জন্য 1 এ নেমে এসেছে। বিভ্রান্তি ম্যাট্রিক্সে, মডেলটি 2 থেকে 6টি মিথ্যা ইতিবাচক এবং 2 থেকে 31টি মিথ্যা নেতিবাচক থেকে গেছে।
আমরা পুনরাবৃত্তি করতে পারেন predict
ট্রেন ডেটা ব্যবহার করার সময় এখনও ওভারফিট আছে কিনা তা পরীক্ষা করতে ধাপে ধাপে ফলাফল দেখুন:
y_pred_ct = svc_c.predict(X_train) cm_ct = confusion_matrix(y_train, y_pred_ct)
sns.heatmap(cm_ct, annot=True, fmt='d').set_title('Confusion matrix of linear SVM with C=0.0001 and train data') print(classification_report(y_train, y_pred_ct))
এর ফলে:
precision recall f1-score support 0 0.88 0.96 0.92 614 1 0.94 0.84 0.88 483 accuracy 0.90 1097 macro avg 0.91 0.90 0.90 1097
weighted avg 0.91 0.90 0.90 1097
একটি ছোট সঙ্গে ফলাফল দেখে C
এবং ট্রেনের ডেটা, আমরা দেখতে পাচ্ছি যে ওভারফিটের উন্নতি হয়েছে, কিন্তু একবার ট্রেনের ডেটার জন্য বেশিরভাগ মেট্রিক্স এখনও বেশি হয়ে গেলে, মনে হয় ওভারফিটের সমাধান করা হয়নি। সুতরাং, শুধু পরিবর্তন C
মডেলটিকে আরও নমনীয় করতে এবং এর সাধারণীকরণ উন্নত করতে পরামিতি যথেষ্ট ছিল না।
বিঃদ্রঃ: ডেটা থেকে অনেক দূরে থাকা, খুব বেশি স্থির হওয়া বা থাকার মধ্যে ভারসাম্য খোঁজার চেষ্টা করা উচ্চ পক্ষপাত অথবা এটি বিপরীত, একটি ফাংশন ডেটা বন্ধ করার জন্য উপযুক্ত, খুব নমনীয় হচ্ছে, বা থাকা উচ্চ বৈচিত্র্য সাধারণত হিসাবে উল্লেখ করা হয় পক্ষপাত বৈষম্য বাণিজ্য বন্ধ. সেই ভারসাম্য খুঁজে পাওয়া অ তুচ্ছ, কিন্তু যখন এটি অর্জন করা হয়, ডেটাতে মডেলটির কোন আন্ডারফিটিং বা ওভারফিটিং নেই। বৈচিত্র্য হ্রাস এবং অতিরিক্ত ফিটিং প্রতিরোধের উপায় হিসাবে, ডেটাকে আরও নিয়মিত এবং সরলীকৃত করার জন্য এটিকে বর্ণনা করে এমন একটি ফাংশন পাওয়ার সময় সমানভাবে সঙ্কুচিত করা যেতে পারে। যে প্যারামিটার কি C
যখন এটি SVM-এ ব্যবহার করা হয় তখন করে, সেই কারণে, এটিও বলা হয় এল 2 নিয়মিতকরণ or রিজ রিগ্রেশন.
এই মুহুর্তে, আমরা SVM-এর মার্জিন সম্পর্কে বুঝতে পেরেছি এবং কীভাবে তারা অ্যালগরিদমের সামগ্রিক ফলাফলকে প্রভাবিত করে, কিন্তু কীভাবে ক্লাসগুলিকে আলাদা করে সেই লাইন (বা বক্ররেখা) সম্পর্কে? এই লাইন হল সিদ্ধান্তের সীমানা. সুতরাং, আমরা ইতিমধ্যে জানি যে মার্জিনগুলি ভুলের প্রতি সিদ্ধান্তের সীমানার নমনীয়তার উপর প্রভাব ফেলে, আমরা এখন অন্য একটি প্যারামিটারের দিকে নজর দিতে পারি যা সিদ্ধান্তের সীমানাকেও প্রভাবিত করে।
সেরা-অভ্যাস, শিল্প-স্বীকৃত মান এবং অন্তর্ভুক্ত চিট শীট সহ গিট শেখার জন্য আমাদের হ্যান্ডস-অন, ব্যবহারিক গাইড দেখুন। গুগলিং গিট কমান্ড এবং আসলে বন্ধ করুন শেখা এটা!
বিঃদ্রঃ: সিদ্ধান্তের সীমানাকেও বলা যেতে পারে ক হাইপারপ্লেন. একটি হাইপারপ্লেন হল একটি জ্যামিতিক ধারণা যা একটি স্থান বিয়োগ এক (dims-1) এর মাত্রার সংখ্যা নির্দেশ করে। যদি স্থানটি 2-মাত্রিক হয়, যেমন x এবং y স্থানাঙ্ক সহ একটি সমতল, 1-মাত্রিক রেখা (বা বক্ররেখা) হল হাইপারপ্লেন। মেশিন লার্নিং প্রসঙ্গে, যেহেতু মডেলটিতে ব্যবহৃত কলামের সংখ্যা হল এর সমতল মাত্রা, আমরা যখন 4টি কলাম এবং একটি SVM ক্লাসিফায়ার নিয়ে কাজ করছি, তখন আমরা একটি 3-মাত্রিক হাইপারপ্লেন খুঁজে পাচ্ছি যা ক্লাসের মধ্যে আলাদা করে।
গামা হাইপারপ্যারামিটার
অসীম সিদ্ধান্তের সীমানা বেছে নেওয়া যেতে পারে, এই সীমানাগুলির মধ্যে কিছু ক্লাস আলাদা করবে এবং অন্যরা করবে না। একটি কার্যকর সিদ্ধান্তের সীমানা নির্বাচন করার সময় প্রতিটি শ্রেণীর প্রথম 10টি নিকটতম পয়েন্ট বিবেচনা করা উচিত? নাকি আরও পয়েন্ট বিবেচনা করা উচিত, যে পয়েন্টগুলি দূরে রয়েছে? এসভিএম-এ, পরিসরের সেই পছন্দটি অন্য হাইপারপ্যারামিটার দ্বারা সংজ্ঞায়িত করা হয়, gamma
.
মত C
, gamma
এর দূরত্বের সাথে কিছুটা বিপরীতভাবে সমানুপাতিক। দ্য ঊর্ধ্বতন এর মান, নিকটস্থ সিদ্ধান্ত সীমানা জন্য বিবেচনা করা হয় যে পয়েন্ট, এবং অধম দ্য gamma
, দ্য অধিকতর সিদ্ধান্তের সীমানা বেছে নেওয়ার জন্য পয়েন্টগুলিও বিবেচনা করা হয়।
গামার আরেকটি প্রভাব হল যে, এর মান যত বেশি হবে, সিদ্ধান্তের সীমানার পরিধি তার চারপাশের বিন্দুগুলির কাছে তত বেশি হবে, এটিকে আরও জ্যাগড এবং ওভারফিট করার প্রবণতা তৈরি করবে - এবং এর মান সবচেয়ে কম, সিদ্ধান্তের সীমানা মসৃণ এবং নিয়মিত হবে। পৃষ্ঠ পায়, এছাড়াও, কম ওভারফিট প্রবণ. এটি যেকোনো হাইপারপ্লেনের জন্য সত্য, কিন্তু উচ্চ মাত্রায় ডেটা আলাদা করার সময় এটি সহজে পর্যবেক্ষণ করা যেতে পারে। কিছু ডকুমেন্টেশনে, gamma
হিসাবেও উল্লেখ করা যেতে পারে sigma
.
আমাদের মডেলের ক্ষেত্রে, এর ডিফল্ট মান gamma
ছিল scale
. যেমন দেখা যায় স্কিট-লার্ন এসভিসি ডকুমেন্টেশন, এর মানে হল এর মান হল:
$$
গামা = (1/ পাঠ্য{n_features} * X.var())
$$
or
$$
গামা = (1/ পাঠ্য{number_of_features} * পাঠ্য{features_variance})
$$
আমাদের ক্ষেত্রে, আমাদের এর বৈচিত্র গণনা করতে হবে X_train
, এটিকে 4 দ্বারা গুণ করুন এবং ফলাফলটিকে 1 দ্বারা ভাগ করুন। আমরা নিম্নলিখিত কোড দিয়ে এটি করতে পারি:
number_of_features = X_train.shape[1] features_variance = X_train.values.var()
gamma = 1/(number_of_features * features_variance)
print('gamma:', gamma)
এই আউটপুট:
gamma: 0.013924748072859962
এর মান দেখার আরেকটি উপায় আছে gamma
, ক্লাসিফায়ার এর অবজেক্ট অ্যাক্সেস করে gamma
সঙ্গে পরামিতি ._gamma
:
svc._gamma
আমরা দেখতে পাচ্ছি যে gamma
আমাদের ক্লাসিফায়ারে ব্যবহৃত কম ছিল, তাই এটি আরও দূরের পয়েন্টগুলি বিবেচনা করে।
বিঃদ্রঃ: যেমন আমরা দেখলাম, C
এবং gamma
মডেলের কিছু সংজ্ঞার জন্য গুরুত্বপূর্ণ। আরেকটি হাইপারপ্যারামিটার, random_state
, প্রায়শই Scikit-এ ব্যবহৃত হয় মডেলের জন্য ডেটা শাফলিং বা এলোমেলো বীজের গ্যারান্টি দিতে শিখুন, তাই আমাদের সবসময় একই ফলাফল থাকে, কিন্তু এটি SVM-এর জন্য একটু ভিন্ন। বিশেষ করে, দ random_state
অন্য হাইপারপ্যারামিটার হলেই এর প্রভাব আছে, probability
, সত্য সেট করা হয়. কারণ এটি সম্ভাব্যতা অনুমান প্রাপ্ত করার জন্য ডেটা এলোমেলো করবে। যদি আমরা আমাদের ক্লাসের জন্য সম্ভাব্যতা অনুমান না চাই এবং সম্ভাব্যতা মিথ্যা সেট করা হয়, SVM এর random_state
মডেল ফলাফলের উপর প্যারামিটারের কোন প্রভাব নেই।
সি এবং গামার মতো হাইপারপ্যারামিটারের জন্য মানগুলি কীভাবে চয়ন করতে হয় তার কোনও নিয়ম নেই - এটি নির্ভর করবে বিভিন্ন হাইপারপ্যারামিটার মান নিয়ে পরীক্ষা করার জন্য কতক্ষণ এবং কী সংস্থান উপলব্ধ, ডেটাতে কী রূপান্তর করা যেতে পারে এবং কী ফলাফল প্রত্যাশিত। . হাইপারপ্যারামিটার মানগুলি অনুসন্ধান করার স্বাভাবিক উপায় হল প্রস্তাবিত মানগুলির প্রতিটি একত্রিত করা গ্রিড অনুসন্ধান একটি পদ্ধতির সাথে যা সেই হাইপারপ্যারামিটার মানগুলিকে প্রয়োগ করে এবং কল করা ডেটার বিভিন্ন অংশের জন্য মেট্রিক্স প্রাপ্ত করে ক্রস বৈধতা. স্কিট-লার্নে, এটি ইতিমধ্যেই হিসাবে প্রয়োগ করা হয়েছে GridSearchCV
(ক্রস ভ্যালিডেশন থেকে সিভি) পদ্ধতি।
ক্রস বৈধতা সহ একটি গ্রিড অনুসন্ধান চালানোর জন্য, আমাদের আমদানি করতে হবে GridSearchCV
, হাইপারপ্যারামিটারের মানগুলির সাথে একটি অভিধান সংজ্ঞায়িত করুন যা নিয়ে পরীক্ষা করা হবে, যেমন ধরন kernel
, জন্য পরিসীমা C
, এবং জন্য gamma
, এর একটি উদাহরণ তৈরি করুন SVC
, সংজ্ঞায়িত করুন score
অথবা মেট্রিক মূল্যায়নের জন্য ব্যবহার করা হবে (এখানে আমরা নির্ভুলতা এবং রিকল উভয়ের জন্য অপ্টিমাইজ করতে বেছে নেব, তাই আমরা ব্যবহার করব f1-score
), অনুসন্ধান চালানোর জন্য ডেটাতে কতগুলি বিভাগ তৈরি করা হবে cv
- ডিফল্ট 5, কিন্তু কমপক্ষে 10 ব্যবহার করা একটি ভাল অভ্যাস - এখানে, ফলাফল তুলনা করার সময় আমরা 5টি ডেটা ভাঁজ ব্যবহার করব এটিকে আরও পরিষ্কার করতে।
সার্জারির GridSearchCV
আছে fit
পদ্ধতি যা আমাদের ট্রেন ডেটা গ্রহণ করে এবং ক্রস বৈধতার জন্য ট্রেন এবং পরীক্ষা সেটে আরও বিভক্ত করে। আমরা সেট করতে পারি return_train_score
ফলাফলের তুলনা করতে এবং গ্যারান্টি দিতে হবে যে কোন অতিরিক্ত ফিট নেই।
ক্রস বৈধতা সহ গ্রিড অনুসন্ধানের জন্য এটি কোড:
from sklearn.model_selection import GridSearchCV parameters_dictionary = {'kernel':['linear', 'rbf'], 'C':[0.0001, 1, 10], 'gamma':[1, 10, 100]}
svc = SVC() grid_search = GridSearchCV(svc, parameters_dictionary, scoring = 'f1', return_train_score=True, cv = 5, verbose = 1) grid_search.fit(X_train, y_train)
এই কোড আউটপুট:
Fitting 5 folds for each of 18 candidates, totalling 90 fits
# and a clickable GridSeachCV object schema
হাইপারপ্যারামিটার অনুসন্ধান করার পরে, আমরা ব্যবহার করতে পারি best_estimator_
, best_params_
এবং best_score_
সেরা মডেল, পরামিতি মান এবং সর্বোচ্চ f1-স্কোর পেতে বৈশিষ্ট্য:
best_model = grid_search.best_estimator_
best_parameters = grid_search.best_params_
best_f1 = grid_search.best_score_ print('The best model was:', best_model)
print('The best parameter values were:', best_parameters)
print('The best f1-score was:', best_f1)
এর ফলে:
The best model was: SVC(C=1, gamma=1)
The best parameter values were: {'C': 1, 'gamma': 1, 'kernel': 'rbf'}
The best f1-score was: 0.9979166666666666
ডেটা দেখে আমাদের প্রাথমিক অনুমান নিশ্চিত করে, সেরা মডেলটিতে একটি রৈখিক কার্নেল নেই, তবে একটি ননলাইনার, RBF।
উপদেশ: আরও তদন্ত করার সময়, এটি আকর্ষণীয় যে আপনি গ্রিড অনুসন্ধানে আরও নন-লিনিয়ার কার্নেল অন্তর্ভুক্ত করেন।
উভয় C
এবং gamma
1 এর মান আছে, এবং f1-score
খুব বেশি, 0.99। যেহেতু মানটি বেশি, চলুন দেখে নেওয়া যাক কোন ওভারফিট ছিল কি না গড় পরীক্ষা এবং ট্রেনের স্কোর দেখে আমরা ফিরে এসেছি, cv_results_
বস্তু:
gs_mean_test_scores = grid_search.cv_results_['mean_test_score']
gs_mean_train_scores = grid_search.cv_results_['mean_train_score'] print("The mean test f1-scores were:", gs_mean_test_scores)
print("The mean train f1-scores were:", gs_mean_train_scores)
গড় স্কোর ছিল:
The mean test f1-scores were: [0.78017291 0. 0.78017291 0. 0.78017291 0. 0.98865407 0.99791667 0.98865407 0.76553515 0.98865407 0.040291 0.98656 0.99791667 0.98656 0.79182565 0.98656 0.09443985] The mean train f1-scores were: [0.78443424 0. 0.78443424 0. 0.78443424 0. 0.98762683 1. 0.98762683 1. 0.98762683 1. 0.98942923 1. 0.98942923 1. 0.98942923 1. ]
গড় স্কোর দেখে, আমরা দেখতে পাচ্ছি যে সর্বোচ্চ 0.99791667 দুবার দেখা যাচ্ছে, এবং উভয় ক্ষেত্রেই, ট্রেন ডেটাতে স্কোর ছিল 1। এটি নির্দেশ করে যে ওভারফিট টিকে আছে। এখান থেকে, ডেটা প্রস্তুতিতে ফিরে যাওয়া এবং ডেটা স্বাভাবিক করা, অন্য কিছু ডেটা ট্রান্সফরমেশন করা এবং ফিচার ইঞ্জিনিয়ারিংয়ের সাথে নতুন বৈশিষ্ট্যগুলি তৈরি করা বোধগম্য কিনা তা বোঝা আকর্ষণীয় হবে।
আমরা মডেল হাইপারপ্যারামিটারগুলি খুঁজে বের করার একটি কৌশল দেখেছি, এবং আমরা ইতিমধ্যে রৈখিক বিভাজ্যতা, সমর্থন ভেক্টর, সিদ্ধান্তের সীমানা, মার্জিনের সর্বাধিকীকরণ এবং কার্নেল কৌশল সম্পর্কে কিছু উল্লেখ করেছি। SVM হল একটি জটিল অ্যালগরিদম, যেখানে সাধারণত প্রচুর গাণিতিক ধারণা জড়িত থাকে এবং ছোট ছোট টুইকেবল অংশগুলিকে সামগ্রিকভাবে একত্রিত করার জন্য সামঞ্জস্য করতে হবে।
আসুন আমরা এখন পর্যন্ত যা দেখেছি তা একত্রিত করি, SVM-এর সমস্ত অংশগুলি কীভাবে কাজ করে তার একটি সংক্ষিপ্ত বিবরণ তৈরি করি এবং তারপরে তাদের ফলাফল সহ অন্যান্য কার্নেল বাস্তবায়নের দিকে নজর দিন।
উপসংহার
এই নিবন্ধে আমরা Scikit-Learn-এর SVM বাস্তবায়নের পিছনে ডিফল্ট পরামিতিগুলি সম্পর্কে বুঝতে পেরেছি। আমরা বুঝতে পেরেছি যে সি এবং গামা প্যারামিটারগুলি কী এবং কীভাবে তাদের প্রতিটি পরিবর্তন SVM মডেলকে প্রভাবিত করতে পারে।
আমরা সেরা C এবং গামা মানগুলি সন্ধান করার জন্য গ্রিড অনুসন্ধান সম্পর্কেও শিখেছি, এবং আমাদের ফলাফলগুলিকে আরও ভালভাবে সাধারণীকরণ করতে এবং গ্যারান্টি দিতে যে কোনও ধরণের ডেটা ফাঁস নেই।
গ্রিড অনুসন্ধান এবং ক্রস যাচাইকরণের সাথে একটি হাইপারপ্যারামিটার টিউনিং করা ডেটা বিজ্ঞানে একটি সাধারণ অভ্যাস, তাই আমি দৃঢ়ভাবে পরামর্শ দিচ্ছি যে আপনি কৌশলগুলি প্রয়োগ করুন, কোডটি চালান এবং হাইপারপ্যারামিটার মান এবং SVM পূর্বাভাসের পরিবর্তনগুলির মধ্যে লিঙ্কগুলি দেখুন৷
- এসইও চালিত বিষয়বস্তু এবং পিআর বিতরণ। আজই পরিবর্ধিত পান।
- প্লেটোব্লকচেন। Web3 মেটাভার্স ইন্টেলিজেন্স। জ্ঞান প্রসারিত. এখানে প্রবেশ করুন.
- অ্যাড্রিয়েন অ্যাশলির সাথে ভবিষ্যত মিন্টিং। এখানে প্রবেশ করুন.
- উত্স: https://stackabuse.com/understanding-svm-hyperparameters/
- : আছে
- : হয়
- 1
- 10
- 20
- 200
- 7
- 8
- 84
- 9
- a
- সম্পর্কে
- উপরে
- অ্যাক্সেস করা
- সঠিকতা
- অর্জন
- প্রকৃতপক্ষে
- স্থায়ী
- সতর্ক
- অ্যালগরিদম
- সব
- বরাবর
- ইতিমধ্যে
- এছাড়াও
- সর্বদা
- an
- এবং
- অন্য
- কোন
- রয়েছি
- কাছাকাছি
- প্রবন্ধ
- AS
- At
- সহজলভ্য
- পিছনে
- ভারসাম্য
- ব্যাংক
- ভিত্তি
- BE
- কারণ
- পরিণত
- হয়েছে
- পিছনে
- হচ্ছে
- নিচে
- সর্বোত্তম
- উত্তম
- মধ্যে
- সীমান্ত
- উভয়
- সীমানা
- বাফার
- কিন্তু
- by
- গণনা করা
- নামক
- CAN
- প্রার্থী
- কেস
- মামলা
- পরিবর্তন
- পরিবর্তন
- পরিবর্তন
- চেক
- পছন্দ
- বেছে নিন
- নির্বাচন
- বেছে
- মনোনীত
- শ্রেণী
- ক্লাস
- শ্রেণীবিন্যাস
- শ্রেণীবদ্ধ
- পরিষ্কার
- পরিষ্কার
- ঘনিষ্ঠ
- কাছাকাছি
- কোড
- কলাম
- মেশা
- মিশ্রন
- আসা
- আসছে
- সাধারণ
- তুলনা করা
- তুলনা
- সম্পূর্ণ
- জটিল
- ধারণা
- ধারণা
- উপসংহার
- বিশৃঙ্খলা
- বিবেচিত
- প্রসঙ্গ
- আবৃত
- সৃষ্টি
- ক্রস
- বাঁক
- উপাত্ত
- তথ্য ফাঁস
- ডেটা প্রস্তুতি
- তথ্য বিজ্ঞান
- রায়
- ডিফল্ট
- সংজ্ঞায়িত
- ডিগ্রী
- বর্ণনা করা
- নির্ধারণ করে
- বিভিন্ন
- মাত্রা
- প্রদর্শন
- দূরত্ব
- করছেন
- ডন
- আঁকা
- প্রতি
- সহজ
- কার্যকর
- পারেন
- প্রকৌশল
- যথেষ্ট
- অনুমান
- মূল্যায়নের
- প্রত্যাশিত
- পরীক্ষা
- অন্বেষণ করুণ
- অন্বেষণ করা
- f1
- পতন
- মিথ্যা
- বৈশিষ্ট্য
- বৈশিষ্ট্য
- আবিষ্কার
- আবিষ্কার
- প্রথম
- মানানসই
- স্থায়ী
- নমনীয়তা
- নমনীয়
- কেন্দ্রবিন্দু
- অনুসরণ
- জন্য
- ফর্ম
- থেকে
- ক্রিয়া
- ক্রিয়াকলাপ
- অধিকতর
- সাধারণ
- পেয়ে
- git
- দেয়
- Go
- ভাল
- গ্রিড
- জামিন
- কৌশল
- নির্দেশিকা
- হাত
- ঘটা
- এরকম
- আছে
- জমিদারি
- এখানে
- উচ্চ
- ঊর্ধ্বতন
- সর্বোচ্চ
- বাতাসে ভাসিতে থাকা
- কিভাবে
- কিভাবে
- এইচটিএমএল
- HTTPS দ্বারা
- হাইপারপ্যারামিটার টিউনিং
- i
- আইকন
- ধারণা
- প্রভাব
- প্রভাব
- বাস্তবায়ন
- বাস্তবায়ন
- বাস্তবায়িত
- বাস্তবায়ন
- প্রভাব
- আমদানি
- গুরুত্বপূর্ণ
- উন্নত করা
- উন্নতি
- in
- অন্যান্য
- অন্তর্ভুক্ত করা
- অন্তর্ভুক্ত
- সুদ্ধ
- ইঙ্গিত
- প্রারম্ভিক
- উদাহরণ
- মজাদার
- মধ্যে রয়েছে
- মধ্যে
- ভূমিকা
- জড়িত
- IT
- এর
- মাত্র
- রাখা
- জানা
- পরিচিত
- বৃহত্তর
- শিখতে
- জ্ঞানী
- শিক্ষা
- LG
- লাইব্রেরি
- মত
- লাইন
- লাইন
- লিঙ্ক
- সামান্য
- দীর্ঘ
- দেখুন
- খুঁজছি
- অনেক
- কম
- মেশিন
- মেশিন লার্নিং
- মেশিন
- ম্যাক্রো
- প্রণীত
- করা
- তৈরি করে
- মেকিং
- অনেক
- মার্জিন
- মার্জিন
- গাণিতিক
- জরায়ু
- মানে
- উল্লিখিত
- পদ্ধতি
- ছন্দোময়
- ছন্দোবিজ্ঞান
- হতে পারে
- ভুল
- মডেল
- মডেল
- অধিক
- সেতু
- প্রয়োজন
- নতুন
- নতুন বৈশিষ্ট
- নোট
- এখন
- সংখ্যা
- লক্ষ্য
- প্রাপ্ত
- উপগমন
- পায়
- of
- on
- ONE
- কেবল
- বিপরীত
- অপ্টিমিজ
- পছন্দ
- or
- অন্যান্য
- অন্যরা
- আমাদের
- বাহিরে
- সামগ্রিক
- স্থিতিমাপ
- পরামিতি
- অংশ
- বিশেষত
- যন্ত্রাংশ
- সম্পাদন করা
- জেদ
- Plato
- প্লেটো ডেটা ইন্টেলিজেন্স
- প্লেটোডাটা
- বিন্দু
- পয়েন্ট
- ব্যবহারিক
- অনুশীলন
- স্পষ্টতা
- ভবিষ্যতবাণী
- নিরোধক
- পূর্বে
- বৈশিষ্ট্য
- প্রস্তাবিত
- পাইথন
- এলোমেলো
- পরিসর
- আরবিএফ
- পড়া
- কারণ
- সংক্ষিপ্তবৃত্তি
- পায়
- হ্রাস
- উল্লেখ করা
- নিয়মিত
- পুনরাবৃত্তি
- রিপোর্ট
- Resources
- ফল
- ফলাফল
- রিং
- নিয়ম
- চালান
- দৌড়
- s
- একই
- স্কেল
- বিজ্ঞান
- scikit-শিখতে
- সুযোগ
- স্কোর
- স্কোরিং
- সার্চ
- দ্বিতীয়
- বীজ
- মনে হয়
- অনুভূতি
- আলাদা
- পৃথক
- ক্রম
- সেট
- সেট
- ছায়া
- আকার
- উচিত
- অদলবদল
- সহজ
- সরলীকৃত
- থেকে
- আয়তন
- ছোট
- ক্ষুদ্রতর
- বাধামুক্ত
- So
- যতদূর
- কিছু
- কিছু
- কিছুটা
- স্থান
- টুকরা
- মান
- ধাপ
- প্রারম্ভিক ব্যবহারের নির্দেশাবলী
- এখনো
- থামুন
- প্রবলভাবে
- এমন
- মামলা
- উপযুক্ত
- সমর্থন
- পৃষ্ঠতল
- করা SVG
- টেবিল
- গ্রহণ করা
- লক্ষ্য
- প্রযুক্তি
- বলে
- পরীক্ষা
- চেয়ে
- যে
- সার্জারির
- লাইন
- তাদের
- তাহাদিগকে
- সেখানে।
- তারা
- এই
- সেগুলো
- তিন
- গোবরাট
- দ্বারা
- থেকে
- একসঙ্গে
- অত্যধিক
- টপিক
- মোট
- প্রতি
- রেলগাড়ি
- প্রশিক্ষণ
- রুপান্তর
- রূপান্তরের
- রূপান্তর
- সত্য
- দ্বিগুণ
- ধরনের
- বোঝা
- বোধশক্তি
- বোঝা
- ব্যবহার
- ব্যবহার ক্ষেত্রে
- ব্যবহৃত
- ব্যবহার
- সাধারণত
- বৈধতা
- মূল্য
- মানগুলি
- ছিল
- উপায়..
- উপায়
- we
- ছিল
- কি
- যে
- যখন
- সমগ্র
- ইচ্ছা
- সঙ্গে
- ওঁন
- শব্দ
- হয়া যাই ?
- কাজ
- would
- X
- আপনি
- zephyrnet