লাভ:
- ডোমেন জ্ঞানের সাথে অর্থপূর্ণ ডেরিভেটিভ বৈশিষ্ট্যগুলি তৈরি করার ক্ষমতা এবং উপযুক্ত পদ্ধতিগুলির সাথে শ্রেণীগত বিভাগগুলিকে এনকোড করার ক্ষমতা (এক-হট, লেবেল, লক্ষ্য)
- মডেলের ধরন (প্রমিতকরণ, স্বাভাবিককরণ) অনুসারে সংখ্যাসূচক ভেরিয়েবল স্কেল করার ক্ষমতা এবং অপ্রয়োজনীয় বা অসম্পূর্ণ স্কেলিং এড়াতে
- প্রশিক্ষণ/পরীক্ষা বিভাজনের পরে এবং শুধুমাত্র প্রশিক্ষণ থেকে সমস্ত রূপান্তর শেখার দ্বারা বৈশিষ্ট্য ফুটো এড়াতে ক্ষমতা
মেশিন লার্নিংয়ে একটি পুরানো কথা আছে: "প্রয়োগিত মেশিন লার্নিং মূলত বৈশিষ্ট্য ইঞ্জিনিয়ারিং।" কারণ একটি মডেলের সাফল্য প্রায়শই আপনি কোন অ্যালগরিদম বেছে নেন তার পরিবর্তে মডেলটিতে আপনি কী ইনপুট দেন তা থেকে আসে। ফিচার ইঞ্জিনিয়ারিং হল কাঁচা ডেটা থেকে অর্থপূর্ণ সংকেত তৈরি করার শিল্প যা মডেলটি শিখতে পারে। কৃত্রিম বুদ্ধিমত্তা এই পর্যায়ে ধারণার একটি সমৃদ্ধ উৎস: আপনি যখন জিজ্ঞাসা করেন "এই ডেটা থেকে কী বৈশিষ্ট্য তৈরি করা যেতে পারে", তখন এটি কয়েক ডজন পরামর্শ তালিকাভুক্ত করে। কিন্তু এই পরামর্শগুলির মধ্যে কিছু মূল্যবান হতে পারে, কিছু অকেজো হতে পারে এবং কিছু বিপজ্জনক (লিক) হতে পারে। এটা বাছাই করা আপনার কাজ.
কেন ফিচার ইঞ্জিনিয়ারিং
কাঁচা ডেটা খুব কমই তার সেরা আকারে মডেলে আসে। যদিও শুধুমাত্র "জন্ম তারিখ" কলামটি অর্থহীন, এটি থেকে উৎপন্ন "বয়স" মান একটি শক্তিশালী সংকেত। আপনি "অর্ডার টাইমস্ট্যাম্প" থেকে "সপ্তাহের দিন", "দিন/রাত্রি", "এটি কি ছুটির দিন" এর মতো বৈশিষ্ট্যগুলি বের করতে পারেন। আপনি একটি অনুপাত তৈরি করতে দুটি কলাম একত্রিত করতে পারেন ("ঋণ/আয় অনুপাত")। এখানে, ফিচার ইঞ্জিনিয়ারিং ডোমেন জ্ঞানকে গাণিতিক সংকেতে অনুবাদ করছে; এবং ঠিক এই কারণেই এটি এমন একটি পর্যায় যা সবচেয়ে বেশি মানুষের বুদ্ধিমত্তার প্রয়োজন।
শ্রেণীগত ভেরিয়েবলকে সংখ্যায় রূপান্তর করা: কোডিং
মডেলগুলি সাধারণত সংখ্যার সাথে কাজ করে, পাঠ্য নয়। শ্রেণীগত ভেরিয়েবলকে (যেমন শহর, রঙ, পণ্যের ধরন) সংখ্যায় রূপান্তর করাকে এনকোডিং বলে। তিনটি সাধারণ পদ্ধতি:
এক-হট এনকোডিং: প্রতিটি বিভাগের জন্য 0/1 মান সহ একটি পৃথক কলাম খোলে। "শহর" এর জন্য, ইস্তাম্বুল, আঙ্কারা, ইজমির কলাম গঠিত হয়; যদি একজন গ্রাহক ইস্তাম্বুল থেকে হয়, শুধুমাত্র সেই কলামটি হবে 1. যখন বিভাগের সংখ্যা কম হয়; যদি অনেকগুলি বিভাগ থাকে তবে এটি শত শত কলাম তৈরি করে (এটিকে "আকার বিস্ফোরণ" বলা হয়)।
লেবেল এনকোডিং: প্রতিটি বিভাগে একটি নম্বর দেয় (ইস্তানবুল=0, আঙ্কারা=1)। এটি সহজ, কিন্তু এটি দুর্ঘটনাক্রমে মডেলটিকে একটি ক্রম শেখাতে পারে (যেমন আঙ্কারা > ইস্তাম্বুল); তাই এটি ক্রমহীন বিভাগে সতর্কতার সাথে ব্যবহার করা হয়।
লক্ষ্য এনকোডিং: প্রতিটি বিভাগকে সেই বিভাগে লক্ষ্য পরিবর্তনশীলের গড় দিয়ে প্রতিস্থাপন করে। এটি খুব শক্তিশালী, তবে ফাঁসের সবচেয়ে বিপজ্জনক উত্স: আপনি যদি পরীক্ষার ডেটার লক্ষ্য বিবেচনা করেন তবে মডেলটি ভবিষ্যত দেখে। এটি শুধুমাত্র প্রশিক্ষণ ডেটা থেকে এবং সাবধানে গণনা করা উচিত (ক্রস-ভ্যালিডেশনের মধ্যে)।
স্কেলিং: বড় সংখ্যা মডেলকে অভিভূত করে না
কিছু মডেল (দূরত্ব-ভিত্তিক, লিনিয়ার মডেল, নিউরাল নেটওয়ার্ক) ভেরিয়েবলের স্কেলের প্রতি সংবেদনশীল। যদি "আয়" (0-500,000) এবং "বয়স" (0-100) একই প্যাটার্নে পড়ে, তবে আয় আয়ত্ব করতে পারে কারণ এটি বড়। স্কেলিং এটি ঠিক করে। দুটি সাধারণ পদ্ধতি: স্ট্যান্ডার্ডাইজেশন (প্রতিটি মানকে "গড় থেকে কতগুলি স্ট্যান্ডার্ড বিচ্যুতি দূরে" এ রূপান্তর করে) এবং স্বাভাবিককরণ (সর্বাধিক-সর্বাধিক স্বাভাবিককরণ — মানগুলিকে 0-1 পরিসরে সংকুচিত করে)। গাছ-ভিত্তিক মডেল (সিদ্ধান্ত গাছ, এলোমেলো বন) স্কেল সংবেদনশীল, তাদের স্কেলিং প্রয়োজন হয় না।
সতর্কতা: স্কেলিং এবং কোডিং পরামিতি (গড়, মানক বিচ্যুতি, বিভাগ-গড় ম্যাপিং) শুধুমাত্র প্রশিক্ষণ ডেটা থেকে গণনা করা উচিত, তারপর পরীক্ষার ডেটাতেও একই প্রয়োগ করা উচিত। পরীক্ষার ডেটা লিকেজ সহ এবং আপনার মডেলটিকে এটির চেয়ে আরও ভাল দেখায়।
বৈশিষ্ট্য প্রকৌশল মধ্যে ফুটো হৃদয়
ফিচার জেনারেশন হল যেখানে ডেটা ফাঁস হয় প্রায়ই। দুটি সাধারণ ভুল: টাইম লিক — এমন একটি বৈশিষ্ট্য তৈরি করা যা ভবিষ্যতের তথ্য অন্তর্ভুক্ত করে ("শেষ 30 দিনের গড়" গণনা করার সময় পূর্বাভাসের দিনের পরের দিনগুলি সহ)। পরিসংখ্যান ফাঁস — প্রশিক্ষণ/পরীক্ষা বিভাজনের আগে সমস্ত ডেটা থেকে একটি বৈশিষ্ট্য (স্কেলিং গড়, লক্ষ্য এনকোডিং মান) গণনা করা। নিয়ম: ট্রেন/পরীক্ষা বিভক্ত করার পরে প্রতিটি রূপান্তর শিখুন এবং শুধুমাত্র প্রশিক্ষণের ডেটা থেকে। এটি নিয়মিত করার সবচেয়ে নিরাপদ উপায় হল পাইপলাইন ব্যবহার করা — এমন একটি কাঠামো যা সমস্ত রূপান্তরকে একক চেইনে সংগ্রহ করে এবং বিভক্ত করার পরে প্রয়োগ করে।
পদ্ধতি
কি জন্য
ফুটো হওয়ার ঝুঁকি
নোট
এক-গরম এনকোডিং
কয়েকটি বিভাগ সহ পরিবর্তনশীল
কম
একাধিক বিভাগে বিস্ফোরিত আকার
লেবেল কোডিং
সাজানো বিভাগ
কম
আউট অফ অর্ডার ভুল ক্রম শেখায়
লক্ষ্য এনকোডিং
মাল্টি-বিভাগ, শক্তিশালী সংকেত
খুব উচ্চ
শুধু শিক্ষা থেকে, সিভিতে
প্রমিতকরণ
রৈখিক/দূরত্ব মডেল
মাঝারি
পরামিতি শুধুমাত্র শিক্ষার উপর নির্ভর করে
সময় উইন্ডো বৈশিষ্ট্য
সময় সিরিজ
উচ্চ
ভবিষ্যৎ যোগ করুন
তিনটি মিনি কেস
কেস 1 - মূল্যবান সম্পত্তি। একটি ক্রেডিট দল কাঁচা "মাসিক আয়" এবং "মাসিক ঋণ পরিশোধ" কলাম থেকে "ঋণ-থেকে-আয় অনুপাত" বৈশিষ্ট্য তৈরি করেছে। এই একক প্রাপ্ত বৈশিষ্ট্যটি মডেলের নির্ভুলতা 71% থেকে 79% বৃদ্ধি করেছে; কারণ এটি ছিল হার, পরম আয় নয়, যা সত্যিই ঝুঁকি নির্ধারণ করে। পাঠ: ডোমেন জ্ঞান দ্বারা উত্পন্ন অনুপাত শক্তিশালী সংকেত।
কেস 2 — টার্গেট এনকোডিং লিক। একটি দল "জিপ কোড" কে লক্ষ্য এনকোডিং সহ একটি সংখ্যায় রূপান্তর করেছে (সেই এলাকায় গড় মন্থন হার), কিন্তু বিভক্ত করার আগে সমস্ত ডেটা থেকে তা করেছে। মডেলটি পরীক্ষা সেটে 94% দিয়েছে, উত্পাদনে 68% এ নেমে গেছে। 6 সপ্তাহের প্রচেষ্টা নষ্ট। পাঠ: লক্ষ্য কোডিং সাবধানে করা হয়, শুধুমাত্র প্রশিক্ষণের মধ্যে।
কেস 3 - স্কেলিং ভুলে যাওয়া। একজন বিশ্লেষক রাজস্ব (0-400,000) এবং গ্রাহকের বয়স (18-75) স্কেলিং ছাড়াই দূরত্ব-ভিত্তিক মডেলে খাওয়ান। মডেলটি আয়ের দিকে প্রায় একচেটিয়াভাবে লাগছিল, বয়সের প্রভাবকে চূর্ণ করে। স্কেলিং যোগ করা হলে, বিভাজন অর্থপূর্ণ হয়ে ওঠে। পাঠ: দূরত্ব/রৈখিক মডেলগুলিতে স্কেলিংকে অবহেলা করা হয় না।
চারটি অনুলিপিযোগ্য টেমপ্লেট
1) ফিচার আইডিয়া জেনারেশন (বাদ দেওয়া আপনার উপর নির্ভর করে):
আপনার ভূমিকা: বৈশিষ্ট্য প্রকৌশল সহকারী। আমার df কলাম: জন্ম_তারিখ, অর্ডার_টাইম (টাইমস্ট্যাম্প), আয়_টিএল, ঋণ_টিএল, শহর, পণ্য_শ্রেণী। লক্ষ্য: "ঋণ পরিশোধ করা হবে" (0/1)। এই কলামগুলি থেকে তৈরি করা যেতে পারে এমন 15টি বৈশিষ্ট্যের পরামর্শ দিন; প্রতিটির জন্য ফুটো হওয়ার ঝুঁকি (নিম্ন/মাঝারি/উচ্চ) নির্দিষ্ট করুন। ভবিষ্যতের তথ্য রয়েছে সেগুলিকে স্পষ্টভাবে চিহ্নিত করুন৷
2) সুরক্ষিত কোডিং (বিভক্ত-পরবর্তী):
কোড লিখুন যা এক-হট "শহর" এবং "প্রোডাক্ট_বিভাগ" এনকোড করে। গুরুত্বপূর্ণ: শুধুমাত্র প্রশিক্ষণ ডেটাতে এনকোডিং ফিট করুন, তারপর পরীক্ষার ডেটা রূপান্তর করুন (স্কলারন OneHotEncoder সহ)। আপনি শিক্ষার অদেখা বিভাগ (হ্যান্ডেল_অজানা) কীভাবে পরিচালনা করেন তা ব্যাখ্যা করুন।
3) পাইপলাইনের সাথে ফুটো-মুক্ত রূপান্তর:
sklearn পাইপলাইন সেট আপ করুন: সাংখ্যিক কলামগুলিতে StandardScaler প্রয়োগ করুন, শ্রেণীবদ্ধ কলামগুলিতে OneHotEncoder প্রয়োগ করুন, শেষে একটি শ্রেণীবদ্ধ করুন৷ গ্যারান্টি সমস্ত রূপান্তর ট্রেন/পরীক্ষা বিভক্ত হওয়ার পরে এবং শুধুমাত্র প্রশিক্ষণ থেকে শেখা হয়। কোডটি ব্যাখ্যা করুন এবং কেন এটি লিক মুক্ত।
4) টাইম উইন্ডো বৈশিষ্ট্য (লিকেজ নিয়ন্ত্রণ):
প্রতিটি গ্রাহকের জন্য "গত 30 দিনে অর্ডারের সংখ্যা" অ্যাট্রিবিউট তৈরি করুন, তবে পূর্বাভাসের দিনের পরে কখনই ডেটা অন্তর্ভুক্ত করবেন না। লাইন দ্বারা লাইন ব্যাখ্যা করুন যে কোডটি ভবিষ্যতের দিকে নজর দেয় না। আমি রেফারেন্স তারিখ কলাম প্রদান করব.
দুর্বল প্রম্পট / শক্তিশালী প্রম্পট
দুর্বল প্রম্পট:
এই তথ্য ভাল বৈশিষ্ট্য যোগ করুন.
"ভাল" অনির্ধারিত, লক্ষ্য অস্পষ্ট, কোন ফুটো নিয়ন্ত্রণ নেই। AI এলোমেলো, সম্ভবত ফুটো, বৈশিষ্ট্যগুলি তৈরি করে।
শক্তিশালী প্রম্পট:
আপনার ভূমিকা: বৈশিষ্ট্য প্রকৌশলী. লক্ষ্য: "30 দিনের মধ্যে মন্থন" (0/1), আনুমানিক রেফারেন্স তারিখ: save_date. df-এ লেনদেনের ইতিহাস রয়েছে। টাস্ক: 8টি বৈশিষ্ট্য তৈরি করুন, প্রত্যেকের জন্য "ভবিষ্যদ্বাণী করার সময় আমার কাছে কি এই তথ্য আছে" প্রশ্নের উত্তর দিন। সময় উইন্ডো বৈশিষ্ট্যে রেফারেন্স তারিখের পরে তারিখ যোগ করা। ট্রেন/পরীক্ষা বিভাগের পরে কার্যকর করার জন্য একটি পাইপলাইন-সামঞ্জস্যপূর্ণ উপায়ে কোডটি লিখুন।
এখানে, লক্ষ্য, রেফারেন্স সময় এবং ফুটো নিয়ন্ত্রণ শুরু থেকে সংজ্ঞায়িত করা হয়।
সাধারণ ভুল
- বিভাজনের আগে সমস্ত ডেটা থেকে রূপান্তর শেখা। যদি স্কেলিং/এনকোডিং পরামিতি পরীক্ষার ডেটা দেখে, লিকেজ ঘটে।
- লক্ষ্য কোডিং এর অসতর্ক ব্যবহার। এটি সবচেয়ে শক্তিশালী কিন্তু সবচেয়ে ফাঁস পদ্ধতি; শুধু প্রশিক্ষণ থেকে, ক্রস বৈধতা.
- একটি টাইম উইন্ডো বৈশিষ্ট্য সহ ভবিষ্যত যোগ করা হচ্ছে। যদি পূর্বাভাসের দিনের পরে "শেষ 30 দিনের" গণনা প্রবেশ করা হয়, তাহলে মডেলটি ভবিষ্যত দেখে।
- ট্রি মডেলে অপ্রয়োজনীয় স্কেলিং এবং লিনিয়ার মডেলে অসম্পূর্ণ স্কেলিং। মডেলের ধরন অনুযায়ী স্কেলিং সিদ্ধান্ত নেওয়া হয়।
- প্রশ্ন ছাড়াই এআই-এর প্রতিটি বৈশিষ্ট্যের পরামর্শ যোগ করা। প্রস্তাবনা অকেজো এবং ফাঁস বৈশিষ্ট্য অন্তর্ভুক্ত হতে পারে.
টিপ: আপনার তৈরি করা প্রতিটি বৈশিষ্ট্যের জন্য একটি একক প্রশ্ন লিখুন: "আমি কি ভবিষ্যদ্বাণী করার সময় আমার কাছে থাকা তথ্য দিয়ে এই মানটি গণনা করতে পারি?" যদি উত্তরটি স্পষ্ট "হ্যাঁ" না হয় তবে বৈশিষ্ট্যটি ব্যবহার করবেন না। এই একক শৃঙ্খলা বেশিরভাগ বৈশিষ্ট্য-সম্পর্কিত ফাঁস দূর করে।
সংক্ষেপে
ফিচার ইঞ্জিনিয়ারিং হল কাঁচা ডেটা থেকে অর্থপূর্ণ সংকেত তৈরি করার শিল্প এবং প্রায়শই অ্যালগরিদমের চেয়ে মডেলের সাফল্য নির্ধারণ করে। এনকোডিং ক্যাটাগরিকাল (ওয়ান-হট, লেবেল, টার্গেট), স্কেলিং নিউমেরিক্যাল (স্ট্যান্ডার্ডাইজেশন, নরমালাইজেশন) এবং ডোমেন জ্ঞানের সাথে ডেরিভেটিভ বৈশিষ্ট্যগুলি তৈরি করা হল মৌলিক সরঞ্জাম। কিন্তু এই পর্যায়টিও ফাঁসের মূল বিষয়: সমস্ত রূপান্তর অবশ্যই প্রশিক্ষণ/পরীক্ষা বিভাজনের পরে এবং শুধুমাত্র প্রশিক্ষণের ডেটা থেকে শিখতে হবে। এআই প্রচুর ধারণা তৈরি করে; এটি মানুষের বিচার যা মূল্যবানকে বিপজ্জনক থেকে আলাদা করে।
আবেদন টাস্ক
একটি লক্ষ্য পরিবর্তনশীল চয়ন করুন এবং আপনার কাছে থাকা কলামগুলি থেকে কমপক্ষে পাঁচটি ডেরিভেটিভ বৈশিষ্ট্য ডিজাইন করুন। তাদের প্রত্যেকের জন্য, লিখিতভাবে "আমি কি ভবিষ্যদ্বাণীর সময় উপলব্ধ" প্রশ্নের উত্তর দিন এবং অন্তত একটিকে "ফুস হওয়ার উচ্চ ঝুঁকি" হিসাবে বাদ দিন। তারপর বিভাজন-পরবর্তী বাস্তবায়নের জন্য একটি পাইপলাইনে সুরক্ষিত বৈশিষ্ট্য কোড করুন।
চেকলিস্ট
- [ ] আমি কি ট্রেন/পরীক্ষা বিভক্ত হওয়ার পরে সমস্ত রূপান্তর প্রয়োগ করেছি?
- আমি কি শুধুমাত্র প্রশিক্ষণ থেকে স্কেলিং/এনকোডিং পরামিতি শিখেছি?
- [ ] আমি কি প্রতিটি বৈশিষ্ট্যের জন্য "ভবিষ্যদ্বাণী করার সময় এটি আমার কাছে আছে" প্রশ্নের উত্তর দিয়েছি?
- [ ] আমি কি টার্গেট কোডিংয়ের মতো উচ্চ-ঝুঁকির পদ্ধতিতে অতিরিক্ত যত্ন নিয়েছি?
- [ ] আমি কি মডেল টাইপের (বৃক্ষ/রৈখিক) জন্য যথাযথভাবে স্কেল করার সিদ্ধান্ত নিয়েছি?