ملاحظات عالم التاريخ: ما الذي تبحث عنه عند اختيار نموذج التعلم الآلي - أفضل 10 شخصية



عدنا على الهواء ونواصل سلسلة ملاحظات عالم البيانات ، واليوم أقدم قائمة المراجعة الذاتية تمامًا لاختيار نموذج التعلم الآلي.



هذه هي أهم 10 خصائص للمشكلة والنقاط فقط (بدون ترتيب فيها) ، من وجهة النظر التي أبدأ فيها في اختيار نموذج ، وبشكل عام ، نمذجة مهمة تحليل البيانات.



ليس من الضروري على الإطلاق أن يكون لديك نفس الشيء - كل شيء ذاتي هنا ، لكنني أشارك تجربتي من الحياة.



ما هو هدفنا بشكل عام؟ التفسير والدقة - الطيف





المصدر



ربما يكون السؤال الأهم الذي يواجهه عالم البيانات قبل البدء في النمذجة هو:



ما هي مهمة العمل بالضبط؟ 



أو البحث ، إذا كنا نتحدث عن الأكاديمية ، إلخ. 



على سبيل المثال ، نحتاج إلى تحليلات تستند إلى نموذج بيانات ، أو العكس ، فنحن مهتمون فقط بالتنبؤات النوعية باحتمالية أن يكون البريد الإلكتروني بريدًا عشوائيًا.



التوازن الكلاسيكي الذي رأيته هو الطيف بين قابلية تفسير الطريقة ودقتها (كما في الرسم البياني أعلاه).



ولكن في الواقع ، لا تحتاج فقط إلى قيادة Catboost / Xgboost / Random Forest واختيار نموذج ، ولكن لفهم ما تريده الشركة ، وما هي البيانات التي لدينا وكيف سيتم تطبيقها.



في ممارستي ، سيحدد هذا على الفور نقطة على نطاق التفسير والدقة (مهما كان معنى ذلك هنا). وبناءً على ذلك ، يمكن للمرء أن يفكر بالفعل في طرق لنمذجة المشكلة.



نوع المهمة نفسها



علاوة على ذلك ، بعد أن فهمنا ما تريده الشركة - نحتاج إلى فهم النوع الرياضي لمشاكل التعلم الآلي التي تنتمي إليها ، على سبيل المثال



  • التحليل الاستكشافي - تحليلات خالصة للبيانات المتاحة وإصرارها

  • التجميع - جمع البيانات في مجموعات بناءً على بعض السمات (السمات) الشائعة

  • الانحدار - تحتاج إلى إرجاع نتيجة عدد صحيح أو هناك احتمال لحدث

  • التصنيف - تحتاج إلى إرجاع تسمية فئة واحدة 

  • متعدد الملصقات - تحتاج إلى إرجاع ملصق فئة أو أكثر لكل إدخال







بيانات الأمثلة : هناك فئتان ومجموعة سجلات غير مسماة:





وتحتاج إلى بناء نموذج يقوم بترميز هذه البيانات بالذات:





أو ، كخيار ، لا توجد تسميات وتحتاج إلى تحديد المجموعات:





مثل هنا:





صور من هنا .



لكن المثال نفسه يوضح الفرق بين المفهومين: التصنيف ، عندما تكون N> فئتين - فئة متعددة مقابل. علامة متعددة





مأخوذة من هنا



سوف تفاجأ ، ولكن في كثير من الأحيان تستحق هذه النقطة أيضًا التحدث مباشرة إلى الشركة - وهذا يمكن أن يوفر لك الكثير من الوقت والجهد. لا تتردد في رسم الصور وإعطاء أمثلة بسيطة (ولكن ليس بشكل مفرط في التبسيط).



الدقة وكيف يتم تحديدها



سأبدأ بمثال بسيط ، إذا كنت بنكًا وأصدرت قرضًا ، فعند القرض غير الناجح نخسر خمس مرات أكثر مما نحصل عليه في قرض ناجح.



لذلك فإن مسألة قياس جودة العمل هي مسألة أساسية! أو تخيل أن لديك خللًا كبيرًا في البيانات ، الفئة A = 10٪ ، والفئة B = 90٪ ، إذن المصنف الذي يقوم بإرجاع B يكون دائمًا دقيقًا بنسبة 90٪! هذا على الأرجح ليس ما كنت تريد رؤيته عند تدريب النموذج.



لذلك ، من الأهمية بمكان تحديد مقياس تسجيل نموذج بما في ذلك:



  • فئة الوزن - كما في المثال أعلاه ، سوء الائتمان هو 5 والائتمان الجيد هو 1
  • مصفوفة التكلفة - من الممكن الخلط بين المخاطر المنخفضة والمتوسطة - هذا لا يهم ، لكن المخاطر المنخفضة والمخاطر العالية يمثلان بالفعل مشكلة
  • هل يجب أن يعكس المقياس التوازن؟ مثل ROC AUC
  • هل نحسب بشكل عام الاحتمالات أم أن تسميات الفئات مستقيمة؟
  • أو ربما يكون الفصل بشكل عام "واحد" ولدينا دقة / استدعاء وقواعد أخرى للعبة؟


بشكل عام ، يتم تحديد اختيار المقياس من خلال المهمة وصياغتها - وبالنسبة لأولئك الذين حددوا هذه المهمة (عادة رجال الأعمال) ، فإن كل هذه التفاصيل تحتاج إلى توضيح وتوضيح ، وإلا ستكون هناك طبقات في الإخراج.



نموذج تحليل آخر



غالبًا ما يكون من الضروري إجراء التحليلات بناءً على النموذج نفسه. على سبيل المثال ، ما هي مساهمة الميزات المختلفة في النتيجة الأصلية: كقاعدة عامة ، يمكن لمعظم الطرق إنتاج شيء مشابه لهذا:





ومع ذلك ، ماذا لو احتجنا إلى معرفة الاتجاه - القيم الكبيرة للسمة A تزيد الانتماء إلى الفئة Z ، أو العكس؟ دعنا نسميها أهمية الميزة الموجهة - يمكن الحصول عليها من بعض النماذج ، على سبيل المثال ، النماذج الخطية (من خلال المعاملات على البيانات المعيارية)



بالنسبة لعدد من النماذج القائمة على الأشجار والتعزيز ، على سبيل المثال ، طريقة SHapley Additive exPlanations مناسبة.



شكل



إنها إحدى طرق تحليل النموذج التي تسمح لك بالنظر تحت غطاء النموذج.





يسمح لك بتقييم اتجاه التأثير:





علاوة على ذلك ، بالنسبة للأشجار (والطرق المعتمدة عليها) فهي دقيقة. اقرأ المزيد عنها هنا .



مستوى الضوضاء - الاستقرار ، والاعتماد الخطي ، والكشف عن العوامل الخارجية ، إلخ.



تعتبر مقاومة الضوضاء وكل مباهج الحياة هذه موضوعًا منفصلاً وتحتاج إلى تحليل مستوى الضوضاء بعناية ، وكذلك تحديد الطرق المناسبة. إذا كنت متأكدًا من أنه سيكون هناك قيم متطرفة في البيانات ، فأنت بحاجة إلى تنظيفها بجودة عالية وتطبيق طرق مقاومة للضوضاء (تحيز عالي ، تنظيم ، إلخ)



أيضًا ، يمكن أن تكون العلامات خطية متداخلة ويمكن أن توجد إشارات لا معنى لها - تتفاعل النماذج المختلفة مع هذا بشكل مختلف. فيما يلي مثال على مجموعة بيانات بيانات الائتمان الألمانية (UCI) الكلاسيكية وثلاثة نماذج تعليمية بسيطة (نسبيًا):



  • مصنف انحدار ريدج: الانحدار الكلاسيكي مع منظم تيخونوف
  • أشجار القرار
  • CatBoost من Yandex


انحدار ريدج
# Create Ridge regression classifier
ridge_clf = RidgeClassifier(class_weight=class_weight, random_state=42)
X_train, X_test, y_train, y_test = train_test_split(pd.get_dummies(X), y, test_size=0.33, random_state=42)
# Train model
ridge_model = ridge_clf.fit(X_train, y_train)
y_pred = ridge_model.predict(X_test)
print(classification_report(y_test,y_pred))
print("weighted_accuracy:",weighted_accuracy(y_test,y_pred))






أشجار القرار
# Create Ridge regression classifier
dt_clf = DecisionTreeClassifier(class_weight=class_weight, random_state=42)
X_train, X_test, y_train, y_test = train_test_split(pd.get_dummies(X), y, test_size=0.33, random_state=42)
# Train model
dt_model = dt_clf.fit(X_train, y_train)
y_pred = dt_model.predict(X_test)
print(classification_report(y_test,y_pred))
print("weighted_accuracy:", weighted_accuracy(y_test,y_pred))






كاتبووست
# Create boosting classifier
catboost_clf = CatBoostClassifier(class_weights=class_weight, random_state=42, cat_features = X.select_dtypes(include=['category', object]).columns)
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.33, random_state=42)
# Train model
catboost_model = catboost_clf.fit(X_train, y_train, verbose=False)
y_pred = catboost_model.predict(X_test)
print(classification_report(y_test,y_pred))
print("weighted_accuracy:",weighted_accuracy(y_test,y_pred))






كما نرى ، فإن نموذج انحدار التلال ، الذي يتميز بدرجة عالية من التحيز والتنظيم ، يُظهر نتائج أفضل حتى من CatBoost - هناك العديد من الميزات التي ليست مفيدة للغاية ومتداخلة ، وبالتالي تظهر الطرق المقاومة لها نتائج جيدة.



المزيد عن DT - ماذا لو غيرت مجموعة البيانات قليلاً؟ يمكن أن تختلف أهمية الميزة نظرًا لأن أشجار القرار هي طرق حساسة بشكل عام ، حتى لخلط البيانات.



الخلاصة: في بعض الأحيان يكون الأسهل أفضل وأكثر فعالية.



قابلية التوسع



هل أنت حقًا بحاجة إلى Spark أو شبكات عصبية بمليارات من المعلمات؟



أولاً ، تحتاج إلى تقييم كمية البيانات بشكل معقول ، لقد رأينا بالفعل الاستخدام المكثف للشرارة في المهام التي تتناسب بسهولة مع ذاكرة جهاز واحد. 



يعمل Spark على تعقيد عملية التصحيح ، ويضيف النفقات العامة ، ويعقد التطوير - لا يجب عليك استخدامه حيث لا تحتاج إليه. كلاسيكيات



ثانيًا ، بالطبع ، تحتاج إلى تقييم مدى تعقيد النموذج وربطه بالمهمة. إذا أظهر منافسيك نتائج ممتازة وكان لديهم RandomForest قيد التشغيل ، فقد يكون من المفيد التفكير مرتين إذا كنت بحاجة إلى شبكة عصبية بمليارات من المعلمات.







وبالطبع ، يجب أن تأخذ في الاعتبار أنه إذا كان لديك بالفعل بيانات كبيرة ، فيجب أن يكون النموذج قادرًا على العمل عليها - كيف تتعلم من الدُفعات ، أو أن يكون لديك نوع من آليات التعلم الموزعة (وما إلى ذلك). وفي نفس المكان ، لا تفقد الكثير من السرعة عند زيادة كمية البيانات. على سبيل المثال ، نعلم أن طرق kernel تتطلب مربعًا من الذاكرة لإجراء العمليات الحسابية في مساحة مزدوجة - إذا كنت تتوقع زيادة حجم البيانات بمقدار 10 أضعاف ، فعليك التفكير مرتين فيما إذا كنت تتناسب مع الموارد المتاحة.



توافر الموديلات الجاهزة



من التفاصيل المهمة الأخرى البحث عن النماذج المدربة بالفعل والتي يمكن تدريبها مسبقًا ، وهي مثالية إذا:



  • لا يوجد الكثير من البيانات ، لكنها محددة جدًا لمهمتنا - على سبيل المثال ، النصوص الطبية.
  • الموضوع بشكل عام شائع نسبيًا - على سبيل المثال ، تسليط الضوء على موضوعات النص - العديد من الأعمال في البرمجة اللغوية العصبية.
  • يسمح نهجك ، من حيث المبدأ ، بالتعلم المسبق - على سبيل المثال مع بعض أنواع الشبكات العصبية.




يمكن للطرازات المدربة مسبقًا مثل GPT-2 و BERT تبسيط حل مشكلتك بشكل كبير ، وإذا كانت هناك نماذج مدربة بالفعل ، فإنني أوصي بشدة بعدم المرور واستخدام هذه الفرصة.



تفاعلات السمات والنماذج الخطية



تعمل بعض النماذج بشكل أفضل في حالة عدم وجود تفاعلات معقدة بين الميزات - على سبيل المثال ، فئة النماذج الخطية بأكملها - النماذج المضافة العامة. هناك امتداد لهذه النماذج في حالة التفاعل بين ميزتين تسمى GA2M - النماذج المضافة العامة مع التفاعلات الزوجية.



كقاعدة عامة ، تُظهر مثل هذه النماذج نتائج جيدة على هذه البيانات ، وهي منظمة بشكل ممتاز وقابلة للتفسير وقوية للضوضاء. لذلك ، من المؤكد أن الأمر يستحق الاهتمام بهم.







ومع ذلك ، إذا تفاعلت العلامات بنشاط في مجموعات تزيد عن 2 ، فلن تظهر هذه الطرق بعد الآن مثل هذه النتائج الجيدة.



دعم الحزمة والنموذج







تم تصميم العديد من الخوارزميات والنماذج الرائعة من المقالات كوحدة نمطية أو حزمة لـ python و R وما إلى ذلك. يجدر التفكير مليًا قبل استخدام مثل هذا الحل والاعتماد عليه على المدى الطويل (أقول هذا ، بصفتي شخصًا كتب العديد من المقالات عن ML باستخدام هذا الرمز). إن احتمال عدم وجود دعم في غضون عام مرتفع للغاية ، لأن المؤلف يحتاج على الأرجح الآن إلى الانخراط في مشاريع أخرى ، ولا يوجد وقت ولا حوافز للاستثمار في تطوير الوحدة أو المستودع.



في هذا الصدد ، تعد مكتبات a la scikit learn جيدة على وجه التحديد لأن لديها بالفعل مجموعة مضمونة من المتحمسين حولها وإذا تم كسر شيء ما بشكل خطير ، فسيتم إصلاحها عاجلاً أم آجلاً.



التحيز والإنصاف



جنبًا إلى جنب مع اتخاذ القرار التلقائي ، تظهر الحياة للأشخاص غير الراضين عن مثل هذه القرارات - تخيل أن لدينا نوعًا من نظام التصنيف لطلبات الحصول على منحة دراسية أو منحة بحثية في إحدى الجامعات. ستكون جامعتنا غير عادية - هناك مجموعتان فقط من الطلاب: المؤرخون وعلماء الرياضيات. إذا قام النظام فجأة ، على أساس بياناته ومنطقه ، بتسليم جميع المنح فجأة إلى المؤرخين ولم يمنحها لأي عالم رياضيات ، فقد لا يسيء هذا إلى علماء الرياضيات بشكل ضعيف. سوف يسمون مثل هذا النظام متحيزًا. الآن فقط الكسول لا يتحدث عن هذا ، والشركات والأفراد يقاضون بعضهم البعض.



بشكل تقليدي ، تخيل نموذجًا مبسطًا يحسب ببساطة اقتباسات المقالات ودع المؤرخين يستشهدون ببعضهم البعض بنشاط - المتوسط ​​هو 100 اقتباس ، لكن لا توجد رياضيات ، لديهم متوسط ​​20 - ويكتبون القليل على الإطلاق ، ثم يتعرف النظام على جميع المؤرخين على أنهم "جيدون" لأن معدل الاقتباس مرتفع 100> 60 (في المتوسط) ، وعلماء الرياضيات ، على أنهم "سيئون" لأن معدل الاستشهاد بهم جميعًا أقل بكثير من متوسط ​​20 <60. مثل هذا النظام بالكاد يبدو مناسبًا لشخص ما.



تقدم الكلاسيكيات الآن منطق صنع القرار ونماذج التدريب التي تحارب مثل هذا النهج المتحيز. وبالتالي ، لكل قرار ، لديك تفسير (مشروط) لسبب اتخاذه وكيف بذلت جهدًا فعليًا للتأكد من أن النموذج لم يقم بعمل هراء (ELI5 GDPR).





اقرأ المزيد من جوجل هنا، أو في المقال هنا .



بشكل عام ، بدأت العديد من الشركات مثل هذه الأنشطة ، لا سيما في ضوء إصدار اللائحة العامة لحماية البيانات (GDPR) - يمكن أن تساعد مثل هذه الإجراءات والتحقق في تجنب المشكلات في المستقبل.



إذا كان هناك موضوع ما مهتم أكثر من غيره - اكتب في التعليقات ، فسنتعمق أكثر. (DFS)!






All Articles