আপেল গাছগুলি দুর্দান্ত ফল এবং কৃমি মেসের কিছু মিশ্রণ তৈরি করে। তবুও হাই-এন্ড মুদি দোকানে আপেল 100% নিখুঁত ফল প্রদর্শন করে। বাগান এবং মুদিখানার মধ্যে, কেউ খারাপ আপেলগুলি অপসারণ করতে বা উদ্ধারযোগ্য আপেলগুলিতে সামান্য মোম ছুঁড়তে উল্লেখযোগ্য সময় ব্যয় করে। একজন এমএল প্রকৌশলী হিসাবে, আপনি খারাপ উদাহরণগুলি ফেলে দিতে এবং উদ্ধারযোগ্যগুলি পরিষ্কার করতে আপনার প্রচুর সময় ব্যয় করবেন। এমনকি কয়েকটি "খারাপ আপেল" একটি বড় ডেটা সেট নষ্ট করতে পারে।
বৈশিষ্ট্য মান স্কেলিং
স্কেলিং মানে ফ্লোটিং-পয়েন্ট বৈশিষ্ট্য মানগুলিকে তাদের প্রাকৃতিক পরিসর থেকে (উদাহরণস্বরূপ, 100 থেকে 900) একটি আদর্শ পরিসরে রূপান্তর করা (উদাহরণস্বরূপ, 0 থেকে 1 বা -1 থেকে +1)। যদি একটি বৈশিষ্ট্য সেট শুধুমাত্র একটি একক বৈশিষ্ট্য নিয়ে গঠিত, তাহলে স্কেলিং সামান্য থেকে কোন ব্যবহারিক সুবিধা প্রদান করে। যাইহোক, যদি একটি বৈশিষ্ট্য সেট একাধিক বৈশিষ্ট্য নিয়ে গঠিত, তাহলে বৈশিষ্ট্য স্কেলিং নিম্নলিখিত সুবিধা প্রদান করে:
- গ্রেডিয়েন্ট ডিসেন্টকে আরও দ্রুত একত্রিত হতে সাহায্য করে।
- "NaN ফাঁদ" এড়াতে সাহায্য করে, যেখানে মডেলের একটি সংখ্যা NaN হয়ে যায় (উদাহরণস্বরূপ, প্রশিক্ষণের সময় যখন একটি মান ফ্লোটিং-পয়েন্ট নির্ভুলতা সীমা ছাড়িয়ে যায়), এবং - গণিত ক্রিয়াকলাপের কারণে - মডেলের অন্য প্রতিটি সংখ্যাও শেষ পর্যন্ত একটি NaN হয়ে যায়।
- মডেলটিকে প্রতিটি বৈশিষ্ট্যের জন্য উপযুক্ত ওজন শিখতে সাহায্য করে। বৈশিষ্ট্য স্কেলিং ছাড়া, মডেলটি একটি বিস্তৃত পরিসরের বৈশিষ্ট্যগুলিতে খুব বেশি মনোযোগ দেবে।
আপনাকে প্রতিটি ফ্লোটিং-পয়েন্ট বৈশিষ্ট্য ঠিক একই স্কেল দিতে হবে না। ভয়ঙ্কর কিছু ঘটবে না যদি বৈশিষ্ট্য A-কে -1 থেকে +1 এ স্কেল করা হয় এবং বৈশিষ্ট্য B -3 থেকে +3 এ স্কেল করা হয়। যাইহোক, ফিচার B 5000 থেকে 100000 স্কেল করা হলে আপনার মডেল খারাপভাবে প্রতিক্রিয়া দেখাবে।
চরম বহিরাগত হ্যান্ডলিং
নিম্নলিখিত প্লটটি ক্যালিফোর্নিয়া হাউজিং ডেটা সেট থেকে roomsPerPerson
নামে একটি বৈশিষ্ট্য উপস্থাপন করে। একটি এলাকার জন্য কক্ষের মোট সংখ্যাকে সেই এলাকার জনসংখ্যা দ্বারা ভাগ করে roomsPerPerson
এর মান গণনা করা হয়েছিল। প্লটটি দেখায় যে ক্যালিফোর্নিয়ার বিশাল সংখ্যাগরিষ্ঠ এলাকায় জনপ্রতি এক বা দুটি কক্ষ রয়েছে। কিন্তু এক্স-অক্ষ বরাবর কটাক্ষপাত করুন.
চিত্র 4. একটি verrrry lonnnnnnng লেজ।
কীভাবে আমরা সেই চরম বহিরাগতদের প্রভাব কমাতে পারি? ঠিক আছে, একটি উপায় প্রতিটি মানের লগ নিতে হবে:
চিত্র 5. লগারিদমিক স্কেলিং এখনও একটি লেজ ছেড়ে যায়।
লগ স্কেলিং একটি সামান্য ভাল কাজ করে, কিন্তু এখনও বাইরের মানগুলির একটি উল্লেখযোগ্য লেজ আছে। এর এখনও অন্য পদ্ধতি বাছাই করা যাক. আমরা যদি roomsPerPerson
এর সর্বোচ্চ মানকে নির্বিচারে "ক্যাপ" বা "ক্লিপ" করি, তাহলে 4.0 বলুন?
চিত্র 6. ক্লিপিং বৈশিষ্ট্য মান 4.0 এ
বৈশিষ্ট্য মান 4.0 এ ক্লিপ করার অর্থ এই নয় যে আমরা 4.0-এর চেয়ে বড় সমস্ত মান উপেক্ষা করি। বরং, এর মানে হল যে সমস্ত মান 4.0-এর থেকে বড় ছিল এখন 4.0 হয়ে গেছে। এটি 4.0 এ মজার পাহাড় ব্যাখ্যা করে। সেই পাহাড় সত্ত্বেও, স্কেল করা বৈশিষ্ট্য সেটটি এখন মূল ডেটার চেয়ে বেশি কার্যকর।
বিনিং
নিম্নলিখিত প্লটটি ক্যালিফোর্নিয়ার বিভিন্ন অক্ষাংশে বাড়ির আপেক্ষিক প্রসার দেখায়। ক্লাস্টারিংটি লক্ষ্য করুন—লস এঞ্জেলেস প্রায় 34 অক্ষাংশে এবং সান ফ্রান্সিসকো প্রায় 38 অক্ষাংশে।
চিত্র 7. অক্ষাংশ প্রতি ঘর.
ডেটা সেটে, latitude
হল একটি ভাসমান-বিন্দু মান। যাইহোক, আমাদের মডেলে একটি ভাসমান-বিন্দু বৈশিষ্ট্য হিসাবে latitude
প্রতিনিধিত্ব করার কোন মানে হয় না। কারণ অক্ষাংশ এবং আবাসন মানগুলির মধ্যে কোন রৈখিক সম্পর্ক বিদ্যমান নেই। উদাহরণস্বরূপ, অক্ষাংশ 35-এর বাড়িগুলি 34 অক্ষাংশের বাড়ির তুলনায় \(\frac{35}{34}\) বেশি ব্যয়বহুল (বা কম ব্যয়বহুল) নয়৷ এবং তবুও, পৃথক অক্ষাংশগুলি সম্ভবত বাড়ির মানগুলির একটি সুন্দর ভবিষ্যদ্বাণীকারী৷
অক্ষাংশকে একটি সহায়ক ভবিষ্যদ্বাণী করতে, আসুন অক্ষাংশগুলিকে নিম্নলিখিত চিত্র দ্বারা প্রস্তাবিত "বিন"-এ ভাগ করি:
চিত্র 8. বিনিং মান।
একটি ফ্লোটিং-পয়েন্ট বৈশিষ্ট্যের পরিবর্তে, আমাদের এখন 11টি স্বতন্ত্র বুলিয়ান বৈশিষ্ট্য রয়েছে ( LatitudeBin1
, LatitudeBin2
, ..., LatitudeBin11
)। 11টি পৃথক বৈশিষ্ট্য থাকা কিছুটা অপ্রাসঙ্গিক, তাই আসুন তাদের একটি একক 11-উপাদান ভেক্টরে একত্রিত করি। এটি করা আমাদেরকে নিম্নরূপ অক্ষাংশ 37.4 প্রতিনিধিত্ব করতে সক্ষম করবে:
[0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0]
বিনিংয়ের জন্য ধন্যবাদ, আমাদের মডেল এখন প্রতিটি অক্ষাংশের জন্য সম্পূর্ণ ভিন্ন ওজন শিখতে পারে।
স্ক্রাবিং
এখন অবধি, আমরা ধরে নিয়েছি যে প্রশিক্ষণ এবং পরীক্ষার জন্য ব্যবহৃত সমস্ত ডেটা বিশ্বস্ত ছিল৷ বাস্তব জীবনে, ডেটা সেটের অনেক উদাহরণ নিম্নলিখিত এক বা একাধিক কারণে অবিশ্বস্ত হয়:
- বাদ দেওয়া মান। উদাহরণস্বরূপ, একজন ব্যক্তি বাড়ির বয়সের জন্য একটি মান লিখতে ভুলে গেছেন।
- নকল উদাহরণ. উদাহরণস্বরূপ, একটি সার্ভার ভুলবশত একই লগ দুইবার আপলোড করেছে।
- খারাপ লেবেল। উদাহরণস্বরূপ, একজন ব্যক্তি একটি ওক গাছের ছবিকে ম্যাপেল হিসাবে ভুল লেবেল করেছেন।
- খারাপ বৈশিষ্ট্য মান. উদাহরণস্বরূপ, কেউ একটি অতিরিক্ত অঙ্কে টাইপ করেছে, বা একটি থার্মোমিটার রোদে ফেলে রাখা হয়েছে।
একবার সনাক্ত করা গেলে, আপনি সাধারণত ডেটা সেট থেকে খারাপ উদাহরণগুলিকে সরিয়ে দিয়ে "ঠিক" করেন৷ বাদ দেওয়া মান বা সদৃশ উদাহরণ সনাক্ত করতে, আপনি একটি সাধারণ প্রোগ্রাম লিখতে পারেন। খারাপ বৈশিষ্ট্যের মান বা লেবেল সনাক্ত করা আরও জটিল হতে পারে।
খারাপ পৃথক উদাহরণ শনাক্ত করার পাশাপাশি, আপনাকে অবশ্যই সমষ্টিগতভাবে খারাপ ডেটা সনাক্ত করতে হবে। হিস্টোগ্রামগুলি সামগ্রিকভাবে আপনার ডেটা কল্পনা করার জন্য একটি দুর্দান্ত প্রক্রিয়া। এছাড়াও, নিম্নলিখিতগুলির মতো পরিসংখ্যান পাওয়া সাহায্য করতে পারে:
- সর্বোচ্চ এবং সর্বনিম্ন
- গড় এবং মধ্যমা
- আদর্শ চ্যুতি
বিচ্ছিন্ন বৈশিষ্ট্যগুলির জন্য সর্বাধিক সাধারণ মানগুলির তালিকা তৈরি করার কথা বিবেচনা করুন। উদাহরণ স্বরূপ, country:uk
এর সাথে উদাহরণের সংখ্যাটি আপনার প্রত্যাশার সাথে মেলে। language:jp
সত্যিই আপনার ডেটা সেটের সবচেয়ে সাধারণ ভাষা হওয়া উচিত?
আপনার ডেটা জানুন
এই নিয়ম অনুসরণ করুন:
- মনে রাখবেন আপনার ডেটা কেমন হওয়া উচিত বলে মনে করেন।
- যাচাই করুন যে ডেটা এই প্রত্যাশাগুলি পূরণ করে (অথবা আপনি ব্যাখ্যা করতে পারেন কেন এটি হয় না)।
- প্রশিক্ষণের ডেটা অন্যান্য উত্সের (উদাহরণস্বরূপ, ড্যাশবোর্ড) সাথে একমত কিনা তা দুবার পরীক্ষা করুন।
আপনি যে কোনও মিশন-সমালোচনামূলক কোডের সাথে আচরণ করবেন এমন সমস্ত যত্ন সহ আপনার ডেটা ব্যবহার করুন। ভাল ML ভাল ডেটার উপর নির্ভর করে।
অতিরিক্ত তথ্য
মেশিন লার্নিং এর নিয়ম , এমএল ফেজ II: ফিচার ইঞ্জিনিয়ারিং