فائدہ:
- ڈیٹا کے رساو کی اقسام کو پہچاننے کی صلاحیت (ٹارگٹ، ٹائم، پری پروسیسنگ، گروپڈ قطار) اور 'سچ ہونے کے لیے بہت اچھا' اسکور کو الارم کے طور پر استفسار کرنا
- ٹیسٹ سیٹ، پائپ لائن اور درست تقسیم (تاریخی/گروپ شدہ) کی جلد علیحدگی کے ساتھ رساو کو روکنے کی صلاحیت
- فکسڈ بیج، ورژن کنٹرول اور دستی اقدامات کو ہٹانے کے ساتھ تجزیہ کو دوبارہ پیدا کرنے کے قابل بنانے کی صلاحیت
دو غلطیاں ہیں جو ڈیٹا سائنس میں سب سے زیادہ محنت کو ضائع کرتی ہیں، اور وہ دونوں ہی کپٹی ہیں کیونکہ وہ تباہی کا باعث بنتی ہیں جب "سب کچھ ٹھیک لگتا ہے۔" پہلا ڈیٹا لیکیج ہے: ماڈل ٹیسٹ سیٹ پر بہت اچھا کام کرتا ہے لیکن پیداوار میں کریش ہو جاتا ہے۔ دوسرا ناقابل تولیدی ہے: آپ چھ ماہ بعد تجزیہ کرتے ہیں اور بالکل مختلف نتیجہ حاصل کرتے ہیں۔ یہ یونٹ گہرائی میں ان دو نقصانات کو جاننے اور ان سے بچنے کے لیے وقف ہے۔ AI دونوں خطرات کو بڑھا سکتا ہے (جلد پیدا کرتا ہے، چھپے ہوئے لیکس کا مشورہ دیتا ہے، آپ کے لیے دستی اقدامات کرنا آسان بناتا ہے) لیکن اگر صحیح طریقے سے استعمال کیا جائے تو انہیں کم بھی کر سکتا ہے۔ فرق نظم و ضبط میں ہے۔
ڈیٹا لیک: دعویدار ماڈل
ڈیٹا کا اخراج اس وقت ہوتا ہے جب ماڈل ٹریننگ کے دوران ایسی معلومات دیکھتا ہے جو اس کے پاس اصل پیشین گوئی کے وقت نہیں ہوگی۔ ماڈل اس معلومات کے ساتھ "دھوکہ دیتا ہے"، ٹیسٹ سیٹ پر بہت اچھا لگ رہا ہے، لیکن اس معلومات کے بغیر پیداوار میں کریش ہو رہا ہے۔ لیک ہونے کی علامت تقریباً ہمیشہ ایک جیسی ہوتی ہے: سچ ہونا بہت اچھا ہے۔ جب آپ 99% درستگی دیکھیں تو خوش ہونے سے پہلے، آپ کو لیک کی تلاش کرنی چاہیے۔
رساو کی اہم اقسام ہیں:
1. گول کا رساو: ایک خصوصیت مقصد کا نتیجہ ہے۔ "منسوخ کر دی گئی" کی پیشن گوئی میں، "منسوخی کی تاریخ" یا "ریفنڈ کی رقم" کالم ہدف کا نتیجہ ہیں۔ وہ تبھی پُر ہوں گے جب نتیجہ واضح ہوگا۔
2. ٹائم لیک: مستقبل کی معلومات کو ماضی میں لانا۔ "آخری 30 دنوں کی اوسط" کا حساب لگاتے وقت، پیشین گوئی کے دن کے بعد کے دنوں کو شامل کریں، یا وقت کی سیریز کو تصادفی طور پر تقسیم کریں۔
3. پری پروسیسنگ لیکیج: ٹریننگ/ٹیسٹنگ پارٹیشن سے پہلے تمام ڈیٹا سے سکیلنگ، فلنگ، کوڈنگ جیسی تبدیلیوں کو سیکھنا۔ ٹیسٹ ڈیٹا کی اوسط تربیت میں مداخلت کرتی ہے۔
4. ڈپلیکیٹ/گروپ شدہ قطار لیک: ایک ہی شخص سے تعلق رکھنے والی قطاریں تربیت اور جانچ دونوں میں موجود ہیں (مختلف سیٹوں میں ایک ہی مریض کے دو دورے)۔ ماڈل شخص کو یاد کرتا ہے۔
لیک کی قسم
کیسے پیدا ہوتا ہے۔
کیسے روکا جائے۔
ہدف لیک
کالم جو ہدف کا نتیجہ ہے۔
"کیا میرے پاس یہ پیشین گوئی کے وقت ہے" ٹیسٹ
وقت لیک
مستقبل کو ماضی کی طرف لانا
تاریخی تقسیم، ونڈو کنٹرول
پری پروسیسنگ لیک
تقسیم سے پہلے کی تبدیلی
پائپ لائن، صرف تربیت سے فٹ
گروپ شدہ قطار لیک
دو سیٹوں میں ایک ہی یونٹ
گروپ کے لحاظ سے تقسیم کریں (GroupKFold)
رساو کو روکنے کے لئے واحد نظم و ضبط
تمام قسم کے لیکس کا مشترکہ حل ایک جملے پر ابلتا ہے: حقیقی مستقبل کی نقل کرنے کے لیے جلد از جلد ٹیسٹ سیٹ کو الگ کر دیں، اور اسے کچھ بھی "تعلیم" نہ دیں۔ عملی طور پر، اس کا مطلب ہے: پہلے تقسیم کریں، پھر تمام تبدیلیاں صرف تربیت سے سیکھیں اور انہیں پائپ لائن میں لاگو کریں (ایک ڈھانچہ جو تمام مراحل کو ایک ہی سلسلہ میں جمع کرتا ہے)۔ ہر خصوصیت کے لیے، سوال پوچھیں "کیا پیشین گوئی کے وقت میرے پاس یہ معلومات ہیں؟" اگر وقت ہو تو اسے تاریخ کے مطابق تقسیم کریں۔ اگر ایک ہی اکائی دہرائی جاتی ہے تو گروپ کے لحاظ سے تقسیم کریں۔
احتیاط: لیک کا سب سے خطرناک پہلو یہ ہے کہ یہ خود کو کامیابی کے طور پر پیش کرتا ہے۔ ایک برا ماڈل واضح طور پر خراب نتائج پیدا کرے گا اور اسے دیکھا جائے گا۔ ایک لیک شدہ ماڈل بہت اچھا کام کرتا ہے، سب کو خوش کرتا ہے، اور اسے پروڈکشن میں لایا جاتا ہے - یہیں سے تباہی شروع ہوتی ہے۔ اس لیے "بہت اچھا" نتیجہ خطرے کی گھنٹی ہے، جشن کا نہیں۔
تولیدی صلاحیت: ایک ہی نتیجہ دو بار حاصل کرنا
تولیدی صلاحیت وہی نتیجہ حاصل کرنے کی صلاحیت ہے جب آپ کسی اور وقت، دوسری مشین پر دوبارہ تجزیہ چلاتے ہیں۔ اس کے بغیر، آپ کا تجزیہ واقعاتی ہے، سائنسی نہیں۔ تولیدی صلاحیت کو خراب کرنے والے اہم اسباب اور حل:
دستی اقدامات: ایکسل میں سیل کو دستی طور پر تبدیل کرنا، دستی طور پر چارٹ میں ترمیم کرنا۔ حل: کوڈ میں ہر قدم رکھیں۔
بے ترتیب بے ترتیب پن: ماڈل کی تربیت، نمونے لینے، تقسیم کرنے میں بے ترتیب پن شامل ہے۔ حل: بے ترتیب بیج کو درست کریں (رینڈم جنریٹر کی ابتدائی قیمت) (random_state=42)۔
ورژن کی تبدیلی: لائبریری ورژن تبدیل ہونے پر نتیجہ بدل سکتا ہے۔ حل: انحصار درست کریں (requirements.txt، ماحول کی فائل)۔
کوئی ریکارڈ نہیں رکھنا: یہ واضح نہیں ہے کہ کون سا ڈیٹا، کون سا کوڈ، کون سا پیرامیٹر استعمال کیا گیا۔ حل: ورژن کنٹرول (گٹ - وہ سسٹم جو کوڈ کے تمام ورژن محفوظ کرتا ہے) اور ڈیٹا ورژننگ۔
"یہ صرف میری مشین پر کام کرتا ہے": حل: ماحول کو دستاویز کریں، اگر ممکن ہو تو کنٹینرز (ڈوکر) استعمال کریں۔
تین چھوٹے مقدمات
کیس 1 - ٹارگٹ لیک۔ صحت کے تجزیے میں "مریض کو دوبارہ داخل کیا جائے گا یا نہیں" کی پیشن گوئی کرنے والے "پوسٹ ڈسچارج میڈیسن" کالم کو نمایاں کیا گیا ہے۔ یہ کالم مریض کے ڈسچارج ہونے کے بعد ہی بھرا جاتا تھا۔ ماڈل نے 96 فیصد دیا، پیداوار میں 61 فیصد۔ 8 ہفتے کا منصوبہ کچرا تھا۔ سبق: ہر خصوصیت سے پوچھیں "کیا یہ پیشین گوئی کے وقت موجود ہے؟"
کیس 2 - پری پروسیسنگ لیک۔ ایک ٹیم نے تمام ڈیٹا کو اسکیل کیا اور پھر اسے تقسیم کیا۔ جانچ کے اعداد و شمار کا مطلب اسکیلنگ میں شامل تھا۔ CV سکور 89%، اصل پیداوار 76%۔ جعلی کامیابی اس وقت غائب ہوگئی جب میں پائپ لائن میں چلا گیا اور صرف تربیت سے تبدیلیوں کے بارے میں سیکھا۔ سبق: پہلے تقسیم کریں، بعد میں تبدیل کریں۔
کیس 3 - دوبارہ پیدا کرنے میں ناکامی۔ ایک تجزیہ کار اس چارٹ کو اپ ڈیٹ کرنا چاہتا تھا جو اس نے تین ماہ بعد انتظامیہ کو پیش کیا تھا لیکن اسے یاد نہیں تھا کہ اس نے اسے کیسے تیار کیا۔ ایکسل میں بہت سے اقدامات دستی طور پر کیے گئے تھے۔ نتیجہ نہ نکلا اور اعتماد متزلزل ہوگیا۔ سبق: کوئی دستی قدم نہیں، سب کچھ کوڈ اور گٹ میں ہے۔
چار کاپی کرنے کے قابل ٹیمپلیٹس
1) لیک معائنہ:
آپ کا کردار: لیک انسپکٹر۔ ہدف: "چرن" (0/1)، پیشن گوئی حوالہ تاریخ: ریکارڈ_تاریخ۔ میں آپ کو خصوصیات کی یہ فہرست دوں گا۔ ہر ایک خصوصیت کے لیے: (a) کیا یہ مقصد کا نتیجہ ہے، (b) کیا یہ پیشین گوئی کے وقت میرے لیے دستیاب ہے، (c) کیا ٹائم ونڈو میں مستقبل شامل ہے؟ اسے "غیر محفوظ/مشکوک/لیک" کے طور پر نشان زد کریں اور ایک وجہ لکھیں۔ خصوصیات: [فہرست]
2) لیک فری پائپ لائن:
سکلیرن پائپ لائن سیٹ اپ کریں: سب سے پہلے سپلٹ ٹرین/ٹیسٹ (سطح شدہ، بیج = 42)، پھر صرف ٹریننگ سے ہی پائپ لائن میں تمام پری پروسیسنگ (عدم، پیمانہ، انکوڈ) کو فٹ کریں۔ وضاحت کریں کہ کوڈ لیک سے پاک کیوں ہے، کون سا مرحلہ کہاں سیکھا گیا۔
3) تولیدی صلاحیت چیک لسٹ کوڈ:
میں اپنے تجزیے کو قابل تولید بنانا چاہتا ہوں۔ کوڈ/سٹرکچر تجویز کریں جو شامل کرتا ہے: (1) تمام بے ترتیب پن کے لیے سخت بیج، (2) پرنٹنگ لائبریری کے ورژن استعمال کیے گئے، (3) ڈیٹا اور آؤٹ پٹ کے لیے تاریخ/ورژن ٹیگ۔ یہ یقینی بنانے کے لیے مجھے ایک چیک لسٹ بھی دیں کہ کوئی دستی اقدامات نہیں ہیں۔
4) گروپ شدہ تقسیم (ایک ہی یونٹ کا رساو):
ڈیٹا میں ایک ہی customer_id متعدد قطاروں میں موجود ہے۔ ایک تقسیم کریں (GroupKFold orGroupShuffleSplit, group = customer_id) جو ایک ہی گاہک کو تربیت اور جانچ دونوں میں شامل ہونے سے روکتا ہے۔ اس بات کی تصدیق کے لیے کوڈ شامل کریں کہ تقسیم کے بعد کوئی بھی گاہک دونوں سیٹوں میں نہیں ہے۔
کمزور فوری / مضبوط اشارہ
کمزور اشارہ:
میرے ماڈل نے 98% درستگی لوٹائی، کیا یہ بہت اچھا نہیں ہے؟ کوڈ کو بہتر بنائیں۔
98% منانا لیک کو چھپاتا ہے۔ اصلاح کرنے سے پہلے یہ سوال کیا جانا چاہیے کہ یہ اسکور حقیقی ہے یا نہیں۔
طاقتور اشارہ:
آپ کا کردار: لیک انسپکٹر۔ میرا ماڈل ٹیسٹ سیٹ پر 98% درستگی لوٹاتا ہے، جو مجھے "سچ ہونا بہت اچھا" لگتا ہے۔ چیک کریں: (1) کیا کوئی خصوصیات ہدف کا نتیجہ ہیں، (2) کیا تقسیم ہونے سے پہلے کی گئی تبدیلیاں ہیں، (3) دو سیٹوں میں ایک ہی اکائی ہیں، (4) کیا کسی بھی وقت لیک ہو رہے ہیں۔ کسی بھی مشکوک نکات کی فہرست بنائیں؛ لیک کو تلاش کرنے پر توجہ دیں، اسکور کو ٹھیک کرنے پر نہیں۔
یہاں، ایک اعلی اسکور کو سوال کرنے کی علامت سمجھا جاتا ہے، نہ کہ منایا جانا۔
عام غلطیاں
- "بہت اچھے" نتیجے کا جشن۔ ایک بہت اچھا اسکور ایک لیک الرٹ ہے، کامیابی نہیں۔
- تقسیم سے پہلے تمام ڈیٹا سے تبدیلی سیکھنا۔ سب سے عام لیک؛ پائپ لائن کے ساتھ پہلے تقسیم کریں۔
- ٹائم سیریز کو تصادفی طور پر تقسیم کرنا۔ ماڈل مستقبل کو دیکھتا ہے؛ تاریخ کی تقسیم ضروری ہے۔
- ایک ہی یونٹ کو دو سیٹوں میں چھوڑنا۔ ماڈل شخص کو یاد کرتا ہے؛ گروپ کے لحاظ سے تقسیم کریں۔
- دستی طور پر قدم نہیں رکھنا اور کوڈ میں لکھنا۔ تجزیہ ناقابل تلافی ہو جاتا ہے۔ سب کچھ کوڈ اور گٹ میں ہونا چاہئے۔
مشورہ: اپنے پروجیکٹ کے آغاز میں دو جملوں پر مشتمل "عزیز کا عہد" لکھیں: "میں نے ٹیسٹ سیٹ کو پیداوار میں دیکھنے سے پہلے کسی بھی طرح سے چھوا نہیں ہے۔ ہر قدم ضابطے میں ہے اور بیج طے شدہ ہے۔" اگر آپ ان دو جملوں پر ایمانداری سے دستخط نہیں کر سکتے ہیں، تو آپ کا نتیجہ ابھی تک قابل اعتماد نہیں ہے۔
خلاصہ میں
ڈیٹا کا رساو اور عدم تولیدی ڈیٹا سائنس میں دو سب سے مہنگی خاموش غلطیاں ہیں۔ رساو مستقبل کے ماڈل کا وژن ہے اور خود کو غلط کامیابی کے طور پر پیش کرتا ہے۔ اس کا حل یہ ہے کہ ٹیسٹ سیٹ کو جلد تقسیم کیا جائے، صرف ٹریننگ (پائپ لائن) سے تبدیلیاں سیکھیں، ہر فیچر سے سوال پوچھیں "کیا یہ میرے پاس پیشین گوئی کے وقت ہے" اور درست تقسیم کریں (تاریخی/گروپ شدہ)۔ تولیدی صلاحیت ایک ہی نتیجہ دو بار حاصل کرنے کے قابل ہے۔ اس کا حل دستی طور پر اقدامات کو ہٹانا، بیج کو پن کرنا، ورژن کو منجمد کرنا، اور ہر چیز کو گٹ میں رکھنا ہے۔ AI ان خطرات کو بڑھا یا کم کر سکتا ہے۔ یہ آپ کا نظم و ضبط ہے جو طے کرتا ہے۔
درخواست کا کام
اپنے بنائے ہوئے ماڈل کی فیچر لسٹ لیں (یا فرضی ایک) اور ہر فیچر سے یہ سوال پوچھیں کہ "کیا پیشین گوئی کے وقت میرے پاس یہ معلومات ہیں؟" تحریری طور پر؛ کم از کم ایک لیک امیدوار تلاش کریں۔ پھر اپنے تجزیے کو قابل تولید بنانے کے لیے ایک چیک لسٹ پُر کریں: کیا بیج طے شدہ ہے، کیا وہاں دستی مراحل ہیں، کیا ورژن رجسٹرڈ ہیں، کیا وہ Git میں ہیں۔ کمیوں کو دور کریں۔
چیک لسٹ
- کیا میں نے لیک الرٹ کے طور پر "To Good to be true" اسکور کا استفسار کیا؟
- کیا میں نے تقسیم کے بعد کی تمام تبدیلیاں صرف تربیت سے سیکھی ہیں؟
- کیا میں نے وقت/گروپ کی ساخت (تاریخی/گروپ کے فولڈ) کے مطابق تقسیم کیا ہے؟
- کیا میں نے مقررہ بیج کے ساتھ تمام بے ترتیب پن کو دوبارہ قابل بنایا ہے؟
- کیا میں نے دستی اقدامات کو ہٹا دیا اور ہر چیز کو کوڈ اور ورژن کنٹرول میں رکھا؟