فائدہ:
- ڈومین کے علم کے ساتھ بامعنی مشتق خصوصیات پیدا کرنے کی صلاحیت اور مناسب طریقوں (ون ہاٹ، لیبل، ہدف) کے ساتھ زمرہ جات کو انکوڈ کرنے کی صلاحیت
- ماڈل کی قسم (معیاری، نارملائزیشن) کے مطابق عددی متغیرات کو پیمانہ کرنے اور غیر ضروری یا نامکمل پیمانے سے بچنے کی صلاحیت
- ٹریننگ/ٹیسٹ اسپلٹ کے بعد اور صرف ٹریننگ سے تمام تبدیلیوں کو سیکھ کر فیچر کے رساو سے بچنے کی صلاحیت
مشین لرننگ میں ایک پرانی کہاوت ہے: "اپلائیڈ مشین لرننگ بنیادی طور پر فیچر انجینئرنگ ہے۔" کیونکہ ایک ماڈل کی کامیابی اکثر اس بات سے ہوتی ہے کہ آپ ماڈل کو کیا ان پٹ دیتے ہیں، بجائے اس کے کہ آپ کون سا الگورتھم منتخب کرتے ہیں۔ فیچر انجینئرنگ خام ڈیٹا سے بامعنی سگنل تیار کرنے کا فن ہے جس سے ماڈل سیکھ سکتا ہے۔ مصنوعی ذہانت اس مرحلے پر خیالات کا ایک بھرپور ذریعہ ہے: جب آپ پوچھتے ہیں کہ "اس ڈیٹا سے کیا خصوصیات پیدا کی جا سکتی ہیں"، تو اس میں درجنوں تجاویز درج ہوتی ہیں۔ لیکن ان میں سے کچھ تجاویز قیمتی ہو سکتی ہیں، کچھ بیکار، اور کچھ خطرناک (لیک) ہو سکتی ہیں۔ اسے حل کرنا آپ کا کام ہے۔
کیوں فیچر انجینئرنگ
خام ڈیٹا اس کی بہترین شکل میں ماڈل پر شاذ و نادر ہی آتا ہے۔ اگرچہ صرف "تاریخ پیدائش" کالم بے معنی ہے، اس سے پیدا ہونے والی "عمر" کی قدر ایک مضبوط اشارہ ہے۔ آپ "آڈر ٹائم اسٹیمپ" سے "ہفتے کا دن"، "دن/رات"، "کیا یہ چھٹی ہے" جیسی صفات نکال سکتے ہیں۔ آپ ایک تناسب ("قرض/آمدنی کا تناسب") پیدا کرنے کے لیے دو کالموں کو جوڑ سکتے ہیں۔ یہاں، فیچر انجینئرنگ ڈومین کے علم کا ریاضیاتی سگنل میں ترجمہ کر رہی ہے۔ اور یہی وجہ ہے کہ یہ وہ مرحلہ ہے جس کے لیے سب سے زیادہ انسانی ذہانت کی ضرورت ہوتی ہے۔
واضح متغیر کو نمبروں میں تبدیل کرنا: کوڈنگ
ماڈلز عام طور پر نمبروں کے ساتھ کام کرتے ہیں، متن کے ساتھ نہیں۔ واضح متغیرات (جیسے شہر، رنگ، مصنوعات کی قسم) کو نمبروں میں تبدیل کرنا انکوڈنگ کہلاتا ہے۔ تین عام طریقے:
ایک گرم انکوڈنگ: ہر زمرے کے لیے 0/1 کی قدر کے ساتھ ایک علیحدہ کالم کھولتا ہے۔ "شہر" کے لیے استنبول، انقرہ، ازمیر کالم بنائے جاتے ہیں۔ اگر کوئی گاہک استنبول سے ہے، تو صرف وہی کالم 1 ہوگا۔ زمرہ جات کی تعداد کم ہونے پر مثالی؛ اگر بہت زیادہ زمرے ہیں تو یہ سیکڑوں کالم تیار کرتا ہے (اسے "سائز ایکسپلوژن" کہا جاتا ہے)۔
لیبل انکوڈنگ: ہر زمرے کو ایک نمبر دیتا ہے (استنبول=0، انقرہ=1)۔ یہ آسان ہے، لیکن یہ غلطی سے ماڈل کو ایک ترتیب سکھا سکتا ہے (جیسے انقرہ > استنبول)؛ لہذا اسے غیر ترتیب شدہ زمروں میں احتیاط کے ساتھ استعمال کیا جاتا ہے۔
ٹارگٹ انکوڈنگ: ہر زمرے کو اس زمرے میں ہدف متغیر کی اوسط سے بدل دیتا ہے۔ یہ بہت طاقتور ہے، لیکن رساو کا سب سے خطرناک ذریعہ: اگر آپ ٹیسٹ ڈیٹا کے ہدف کو مدنظر رکھتے ہیں، تو ماڈل مستقبل کو دیکھتا ہے۔ اس کا حساب صرف تربیتی اعداد و شمار سے اور احتیاط سے کیا جانا چاہئے (کراس توثیق کے اندر)۔
اسکیلنگ: بڑی تعداد ماڈل کو مغلوب نہیں کرتی ہے۔
کچھ ماڈلز (فاصلے پر مبنی ماڈلز، لکیری ماڈلز، نیورل نیٹ ورک) متغیرات کے پیمانے پر حساس ہوتے ہیں۔ اگر "آمدنی" (0-500,000) اور "عمر" (0-100) ایک ہی پیٹرن میں آتے ہیں، تو آمدنی صرف اس لیے غالب ہو سکتی ہے کیونکہ یہ بڑی ہے۔ اسکیلنگ اس کو ٹھیک کرتی ہے۔ دو عام طریقے: معیاری کاری (ہر قدر کو "مطلب سے کتنے معیاری انحراف" میں تبدیل کرتا ہے) اور نارملائزیشن (کم سے زیادہ نارملائزیشن — اقدار کو رینج 0-1 میں سکیڑتی ہے)۔ درختوں پر مبنی ماڈل (فیصلہ کرنے والے درخت، بے ترتیب جنگل) پیمانے پر غیر حساس ہوتے ہیں، انہیں اسکیلنگ کی ضرورت نہیں ہوتی ہے۔
احتیاط: اسکیلنگ اور کوڈنگ کے پیرامیٹرز (مطلب، معیاری انحراف، زمرہ کا مطلب میپنگ) کا حساب صرف تربیتی ڈیٹا سے کیا جانا چاہیے، پھر وہی ٹیسٹ ڈیٹا پر لاگو کیا جانا چاہیے۔ ٹیسٹ ڈیٹا سمیت لیکیج ہے اور آپ کے ماڈل کو اصل سے بہتر دکھاتا ہے۔
فیچر انجینئرنگ میں رساو کا دل
فیچر جنریشن وہ جگہ ہے جہاں ڈیٹا کا رساو اکثر ہوتا ہے۔ دو عام غلطیاں: ٹائم لیک — ایک ایسی خصوصیت تیار کرنا جس میں مستقبل کی معلومات شامل ہوں (بشمول پیشین گوئی کے دن کے بعد کے دن جب "آخری 30 دن کی اوسط" کا حساب لگاتے ہوں)۔ اعداد و شمار کا رساو — ٹریننگ/ٹیسٹ اسپلٹ سے پہلے تمام ڈیٹا سے فیچر (اسکیلنگ ایوریج، ٹارگٹ انکوڈنگ ویلیو) کا حساب لگانا۔ اصول: ٹرین/ٹیسٹ اسپلٹ کرنے کے بعد ہر تبدیلی کو پہلے اور صرف ٹریننگ ڈیٹا سے سیکھیں۔ باقاعدگی سے ایسا کرنے کا سب سے محفوظ طریقہ یہ ہے کہ پائپ لائن کا استعمال کیا جائے — ایک ایسا ڈھانچہ جو تمام تبدیلیوں کو ایک زنجیر میں جمع کرتا ہے اور انہیں تقسیم کرنے کے بعد لاگو کرتا ہے۔
طریقہ
کس کے لیے
رساو کا خطرہ
نوٹ
ایک گرم انکوڈنگ
چند زمروں کے ساتھ متغیر
کم
ایک سے زیادہ زمروں میں سائز پھٹ جاتا ہے۔
لیبل کوڈنگ
ترتیب شدہ زمرہ
کم
آؤٹ آف آرڈر غلط ترتیب سکھاتا ہے۔
ہدف انکوڈنگ
ملٹی زمرہ، مضبوط سگنل
بہت اعلی
صرف تعلیم سے، CV میں
معیاری کاری
لکیری/فاصلے کے ماڈل
درمیانہ
پیرامیٹر صرف تعلیم پر منحصر ہے۔
ٹائم ونڈو کی خصوصیت
ٹائم سیریز
اعلی
مستقبل شامل کریں۔
تین چھوٹے مقدمات
کیس 1 - قیمتی جائیداد۔ ایک کریڈٹ ٹیم نے خام "ماہانہ آمدنی" اور "ماہانہ قرض کی ادائیگی" کالموں سے "قرض سے آمدنی کا تناسب" خصوصیت تیار کی۔ اس واحد اخذ کردہ خصوصیت نے ماڈل کی درستگی کو 71% سے بڑھا کر 79% کر دیا۔ کیونکہ یہ شرح تھی، مطلق آمدنی نہیں، جو واقعی خطرے کا تعین کرتی ہے۔ سبق: ڈومین کے علم سے پیدا ہونے والے تناسب مضبوط اشارے ہیں۔
کیس 2 — ٹارگٹ انکوڈنگ لیک۔ ایک ٹیم نے "زپ کوڈ" کو ٹارگٹ انکوڈنگ کے ساتھ ایک نمبر میں تبدیل کیا (اس علاقے میں اوسط کرن ریٹ)، لیکن تقسیم کرنے سے پہلے تمام ڈیٹا سے ایسا کیا۔ ماڈل نے ٹیسٹ سیٹ پر 94% دیا، پیداوار میں 68% تک گر گیا۔ 6 ہفتے کی محنت ضائع ہو گئی۔ سبق: ٹارگٹ کوڈنگ احتیاط سے کی جاتی ہے، صرف تربیت کے اندر۔
کیس 3 - اسکیلنگ بھول جانا۔ ایک تجزیہ کار نے ریونیو (0-400,000) اور گاہک کی عمر (18-75) کو بغیر پیمانہ کے فاصلے پر مبنی ماڈل میں کھلایا۔ ماڈل عمر کے اثر کو کچلتے ہوئے تقریباً صرف آمدنی پر نظر آتا تھا۔ جب اسکیلنگ کو شامل کیا گیا تو، انقطاع معنی خیز ہوگیا۔ سبق: فاصلے/ لکیری ماڈلز میں اسکیلنگ کو نظرانداز نہیں کیا جاتا ہے۔
چار کاپی کرنے کے قابل ٹیمپلیٹس
1) فیچر آئیڈیا جنریشن (ختم کرنا آپ پر منحصر ہے):
آپ کا کردار: فیچر انجینئرنگ اسسٹنٹ۔ میرے ڈی ایف کالم: پیدائش_تاریخ، آرڈر_وقت (ٹائم اسٹیمپ)، انکم_ٹی ایل، قرض_ٹی ایل، شہر، پروڈکٹ_کیٹیگری۔ ہدف: "کیا قرض ادا کیا جائے گا" (0/1)۔ 15 خصوصیات تجویز کریں جو ان کالموں سے پیدا کی جا سکتی ہیں۔ ہر ایک کے لیے رساو (کم/درمیانی/اعلی) کے خطرے کی وضاحت کریں۔ واضح طور پر ان پر نشان لگائیں جو مستقبل کی معلومات پر مشتمل ہوں۔
2) محفوظ کوڈنگ (تقسیم کے بعد):
کوڈ لکھیں جو ایک گرم "شہر" اور "پروڈکٹ_کیٹگری" کو انکوڈ کرتا ہے۔ اہم: انکوڈنگ کو صرف ٹریننگ ڈیٹا میں فٹ کریں، پھر ٹیسٹ ڈیٹا کو تبدیل کریں (سکلیرن OneHotEncoder کے ساتھ)۔ وضاحت کریں کہ آپ تعلیم میں ان دیکھے زمرے (ہینڈل_نا معلوم) کو کیسے ہینڈل کرتے ہیں۔
3) پائپ لائن کے ساتھ لیک فری تبدیلی:
سکلیرن پائپ لائن ترتیب دیں: عددی کالموں پر StandardScaler، زمرہ دار کالموں پر OneHotEncoder لاگو کریں، آخر میں ایک درجہ بندی شامل کریں۔ اس بات کی ضمانت دیں کہ تمام تبدیلیاں ٹرین/ٹیسٹ تقسیم کے بعد اور صرف تربیت سے سیکھی جاتی ہیں۔ کوڈ کی وضاحت کریں اور یہ لیک فری کیوں ہے۔
4) ٹائم ونڈو کی خصوصیت (رساو کنٹرول):
ہر گاہک کے لیے "گزشتہ 30 دنوں میں آرڈرز کی تعداد" کا وصف تیار کریں، لیکن پیشین گوئی کے دن کے بعد کا ڈیٹا کبھی شامل نہ کریں۔ لائن بہ لائن وضاحت کریں کہ کوڈ مستقبل میں نہیں دیکھتا ہے۔ میں حوالہ تاریخ کا کالم فراہم کروں گا۔
کمزور فوری / مضبوط اشارہ
کمزور اشارہ:
اس ڈیٹا میں اچھی خصوصیات شامل کریں۔
"اچھا" غیر متعینہ ہے، ہدف واضح نہیں ہے، کوئی رساو کنٹرول نہیں ہے۔ AI بے ترتیب، شاید لیکی، خصوصیات پیدا کرتا ہے۔
طاقتور اشارہ:
آپ کا کردار: فیچر انجینئر۔ ہدف: "30 دنوں میں منتھن" (0/1)، تخمینہ شدہ حوالہ تاریخ: save_date۔ df.Task میں لین دین کی تاریخ موجود ہے: 8 خصوصیات بنائیں، ہر ایک کے لیے "کیا میرے پاس یہ معلومات پیشین گوئی کے وقت موجود ہیں" کے سوال کا جواب دیں۔ ٹائم ونڈو کی خصوصیات میں حوالہ تاریخ کے بعد تاریخ شامل کرنا۔ ٹرین/ٹیسٹ سیکشن کے بعد عملدرآمد کرنے کے لیے پائپ لائن سے مطابقت رکھنے والے طریقے سے کوڈ لکھیں۔
یہاں، ہدف، حوالہ وقت اور رساو کنٹرول شروع سے بیان کیا جاتا ہے.
عام غلطیاں
- تقسیم سے پہلے تمام ڈیٹا سے تبدیلی سیکھنا۔ اگر اسکیلنگ/انکوڈنگ پیرامیٹر ٹیسٹ ڈیٹا کو دیکھتا ہے، تو رساو ہوتا ہے۔
- ٹارگٹ کوڈنگ کا لاپرواہ استعمال۔ یہ سب سے طاقتور لیکن سب سے زیادہ رسا ہوا طریقہ ہے۔ صرف تربیت سے، کراس توثیق میں.
- ٹائم ونڈو کی خصوصیت کے ساتھ مستقبل کو شامل کرنا۔ اگر پیشن گوئی کے دن کے بعد "آخری 30 دنوں" کا حساب درج کیا جاتا ہے، تو ماڈل مستقبل کو دیکھتا ہے۔
- ٹری ماڈل میں غیر ضروری اسکیلنگ اور لکیری ماڈل میں نامکمل اسکیلنگ۔ پیمانے کے فیصلے ماڈل کی قسم کے مطابق کیے جاتے ہیں۔
- بغیر کسی سوال کے AI کی ہر خصوصیت کی تجویز کو شامل کرنا۔ تجاویز میں بیکار اور لیک خصوصیات شامل ہو سکتی ہیں۔
ٹپ: اپنی تخلیق کردہ ہر خصوصیت کے لیے ایک سوال لکھیں: "کیا میں پیشین گوئی کرنے کے وقت میرے پاس موجود معلومات سے اس قدر کا حساب لگا سکتا ہوں؟" اگر جواب واضح "ہاں" نہیں ہے، تو فیچر استعمال نہ کریں۔ یہ واحد نظم سب سے زیادہ خصوصیت سے متعلق لیک کو ختم کرتا ہے۔
خلاصہ میں
فیچر انجینئرنگ خام ڈیٹا سے بامعنی سگنل پیدا کرنے کا فن ہے اور اکثر الگورتھم سے زیادہ ماڈل کی کامیابی کا تعین کرتا ہے۔ انکوڈنگ زمرہ جات (ون ہاٹ، لیبل، ٹارگٹ)، پیمانہ شماری (معیاری، نارملائزیشن) اور ڈومین علم کے ساتھ مشتق خصوصیات پیدا کرنا بنیادی ٹولز ہیں۔ لیکن یہ مرحلہ بھی لیک کا مرکز ہے: تمام تبدیلیوں کو تربیت/ٹیسٹ تقسیم کے بعد اور صرف تربیتی ڈیٹا سے سیکھنا چاہیے۔ AI بہت سارے خیالات پیدا کرتا ہے۔ یہ انسانی فیصلہ ہے جو قیمتی کو خطرناک سے ممتاز کرتا ہے۔
درخواست کا کام
ایک ہدف متغیر کا انتخاب کریں اور آپ کے پاس موجود کالموں سے کم از کم پانچ مشتق خصوصیات ڈیزائن کریں۔ ان میں سے ہر ایک کے لیے، "کیا میں پیشین گوئی کے وقت دستیاب ہوں" کے سوال کا تحریری جواب دیں اور کم از کم ایک کو "لیکیج کے زیادہ خطرے" کے طور پر ختم کریں۔ پھر تقسیم کے بعد لاگو ہونے والی پائپ لائن میں محفوظ خصوصیات کو کوڈ کریں۔
چیک لسٹ
- کیا میں نے ٹرین/ٹیسٹ اسپلٹ کے بعد تمام تبدیلیوں کو لاگو کیا؟
- کیا میں نے تربیت سے صرف اسکیلنگ/انکوڈنگ پیرامیٹرز سیکھے ہیں؟
- کیا میں نے ہر خصوصیت کے لیے "کیا میرے پاس پیشین گوئی کے وقت یہ ہے" سوال کا جواب دیا ہے؟
- کیا میں نے زیادہ خطرے والے طریقوں جیسے کہ ٹارگٹ کوڈنگ کے ساتھ اضافی خیال رکھا ہے؟
- کیا میں نے ماڈل کی قسم (درخت/ لکیری) کے لیے مناسب پیمانے کا فیصلہ کیا ہے؟