
* المزرعة - (من الزراعة الإنجليزية) - تكرار طويل وممل لبعض إجراءات اللعبة لغرض معين (اكتساب الخبرة ، والحصول على الموارد ، وما إلى ذلك).
مقدمة
في الآونة الأخيرة (1 أكتوبر) ، تم إطلاق جلسة جديدة لدورة DS / ML الممتازة (أوصي بشدة أي شخص يريد ، كما يطلق عليه الآن ، "دخول" DS كدورة أولية). وكالعادة ، بعد الانتهاء من أي دورة ، يكون لدى الخريجين سؤال - من أين يحصلون على الخبرة العملية الآن لتعزيز المعرفة النظرية الخام حتى الآن. إذا طرحت هذا السؤال في أي منتدى للملف الشخصي ، فمن المرجح أن تكون الإجابة واحدة - انتقل لحل Kaggle. Kaggle هي نعم ، ولكن من أين تبدأ وكيف تستخدم هذه المنصة بشكل أكثر فاعلية للمهارات العملية؟ في هذه المقالة ، سيحاول المؤلف إعطاء إجابات على هذه الأسئلة بناءً على تجربته الخاصة ، بالإضافة إلى وصف موقع أشعل النار الرئيسي في مجال DS التنافسي ، من أجل تسريع عملية الضخ والحصول على مروحة منه.
بضع كلمات حول الدورة من منشئيها:
دورة mlcourse.ai هي واحدة من الأنشطة واسعة النطاق لمجتمع OpenDataScience. تظهرyorko والشركة (60 شخصًا تقريبًا) أنه يمكن الحصول على مهارات رائعة خارج الجامعة ، وحتى مجانًا تمامًا. الفكرة الرئيسية للدورة هي الجمع الأمثل بين النظرية والتطبيق. من ناحية ، لا يتم تقديم المفاهيم الأساسية بدون الرياضيات ، من ناحية أخرى - الكثير من الواجبات المنزلية ، ستمنح مسابقات ومشاريع Kaggle Inclass ، مع استثمار معين للجهد من جانبك ، مهارات ممتازة للتعلم الآلي. من المستحيل عدم ملاحظة الطبيعة التنافسية للدورة - يتم إجراء تصنيف عام للطلاب ، وهو ما يحفز بشدة. الدورة مختلفة أيضًا في أنها تجري في مجتمع نابض بالحياة حقًا.
تتضمن الدورة مسابقتين Kaggle Inclass. كلاهما مثير للاهتمام للغاية ، وهما يعملان بشكل جيد في بناء اللافتات. الأول هو تحديد المستخدم من خلال تسلسل المواقع التي تمت زيارتها . والثاني هو التنبؤ بشعبية مقال عن الوسيط . الفائدة الرئيسية هي من فروضين ، حيث تحتاج إلى أن تكون ذكيًا وتتغلب على الخطوط الأساسية في هذه المسابقات.
بعد أن أشيد بالدورة ومبدعيها ، نواصل قصتنا ...
أتذكر نفسي قبل عام ونصف ، تم الانتهاء من دورة (لا تزال النسخة الأولى) من أندرو نغ ، تم الانتهاء من التخصص من معهد موسكو للفيزياء والتكنولوجيا ، تمت قراءة جبل من الكتب - رأس المعرفة النظرية ممتلئ ، ولكن عندما تحاول حل أي مهمة قتالية أساسية ، ينشأ الذهول. لا ، كيف يمكن حل المشكلة - من الواضح ما هي الخوارزميات التي يجب تطبيقها - أمر مفهوم أيضًا ، ولكن من الصعب جدًا كتابة الرمز ، حيث يتم الوصول إلى sklearn / pandas كل دقيقة ، وما إلى ذلك. لماذا ذلك - لا توجد خطوط أنابيب متراكمة وشعور بالشفرة "في متناول يدك".
يعتقد المؤلف أن هذا لن يعمل ، وذهب إلى Kaggle. كان من المخيف أن تبدأ على الفور من المنافسة القتالية ، وأصبح بيت المنافسة " أسعار المنازل: تقنيات الانحدار المتقدمة " العلامة الأولى ، التي شكلت نهج الضخ الفعال الموصوف في هذه المقالة.
في ما سيتم وصفه لاحقًا ، لا توجد معرفة فنية ، وجميع التقنيات والأساليب والتقنيات واضحة ويمكن التنبؤ بها ، ولكن هذا لا ينتقص من فعاليتها. على الأقل ، بعدهم ، تمكن المؤلف من أخذ Kaggle Competition Master يموت لمدة ستة أشهر وثلاث مسابقات في الوضع المنفرد ، وفي وقت كتابة هذا المقال ، أدخل أعلى 200 من تصنيف Kaggle العالمي . بالمناسبة ، هذا يجيب على السؤال لماذا سمح المؤلف لنفسه بالشجاعة لكتابة مقالة من هذا النوع.
باختصار ما هو Kaggle

Kaggle هي واحدة من أشهر المنصات لإجراء مسابقات في Data Science. في كل مسابقة ، يقوم المنظمون بتحميل وصف للمشكلة ، وبيانات لحل هذه المشكلة ، والقياس الذي سيتم من خلاله تقييم الحل - وتحديد المواعيد النهائية والجوائز. يتم إعطاء المشاركين من 3 إلى 5 محاولات (بإرادة المنظمين) في اليوم الواحد "لتقديم" (إرسال الحل الخاص بهم).
تنقسم البيانات إلى عينة تدريب (قطار) واختبار (اختبار). بالنسبة لجزء التدريب ، فإن قيمة المتغير الهدف (الهدف) معروفة ، بالنسبة لجزء الاختبار - لا. تتمثل مهمة المشاركين في إنشاء نموذج ، والذي يتم تدريبه على الجزء التدريبي من البيانات ، سيؤدي إلى أقصى نتيجة في الاختبار.
يقوم كل مشارك بعمل تنبؤات لعينة الاختبار - ويرسل النتيجة إلى Kaggle ، ثم يقوم الروبوت (الذي يعرف المتغير المستهدف للاختبار) بتقييم النتيجة المرسلة ، والتي يتم عرضها على لوحة الصدارة.
ولكن ليس كل شيء بهذه البساطة - يتم تقسيم بيانات الاختبار ، بدورها ، بنسبة معينة إلى الجزء العام (العام) والخاص (الخاص). خلال المسابقة ، يتم تقييم القرار المرسل ، وفقًا للمقياس الذي حدده المنظمون ، على الجزء العام من البيانات ووضعه على لوحة الصدارة (ما يسمى لوحة الصدارة العامة) - والتي يمكن للمشاركين من خلالها تقييم جودة نماذجهم. يتم تقييم القرار النهائي (عادة اثنان - حسب اختيار المشارك) على الجزء الخاص من بيانات الاختبار - والنتيجة تقع على لوحة المتصدرين الخاصة ، والتي لا تتوفر إلا بعد انتهاء المسابقة والتي يتم من خلالها تقييم النتائج النهائية والجوائز والكعك والميداليات.
وبالتالي ، خلال المسابقة ، تتوفر المعلومات فقط للمشاركين حيث تصرف نموذجهم (ما هي النتيجة - أو أظهرت السرعة) في الجزء العام من بيانات الاختبار. إذا ، في حالة وجود حصان كروي في فراغ ، تزامن الجزء الخاص من البيانات في التوزيع والإحصاءات مع الجمهور - كل شيء على ما يرام ، ولكن إذا لم يكن كذلك - فإن النموذج الذي كان أداؤه جيدًا في الأماكن العامة قد لا يعمل في الجزء الخاص ، أي الإصلاح الزائد (إعادة التدريب). وهنا ينشأ ما يسمى "رحلة" في المصطلحات ، عندما يطير الناس من المركز العاشر في الأماكن العامة بنسبة 1000-2000 في الجزء الخاص بسبب حقيقة أن النموذج الذي اختاروه قد أعاد تدريبه ولم يتمكن من إعطاء الدقة اللازمة لـ بيانات جديدة.

كيف تتجنب ذلك؟ لهذا ، أولاً وقبل كل شيء ، من الضروري بناء مخطط التحقق الصحيح ، وهو أمر يتم تدريسه في الدروس الأولى في جميع دورات DS تقريبًا. لأن إذا كان النموذج الخاص بك لا يمكن أن يعطي التوقعات الصحيحة للبيانات التي لم يسبق لها رؤيتها - بغض النظر عن التقنية المعقدة التي تستخدمها ، بغض النظر عن مدى تعقيد الشبكات العصبية التي تقوم ببنائها - في الإنتاج لا يمكن إنتاج مثل هذا النموذج ، لأنه نتائجها لا قيمة لها.
لكل منافسة على Kaggle ، يتم إنشاء صفحة منفصلة يوجد بها قسم يحتوي على بيانات ، مع وصف المقياس - والأكثر إثارة للاهتمام بالنسبة لنا - منتدى ونواة.
المنتدى هو ومنتدى Kaggle ، يكتب الناس ويناقشون ويتبادلون الأفكار. لكن النوى بالفعل أكثر إثارة للاهتمام. في الواقع ، هذه هي القدرة على تشغيل التعليمات البرمجية الخاصة بك التي لديها وصول مباشر إلى بيانات المنافسة في سحابة Kaggle (نظير الأمازون AWS ، GCE من Google ، إلخ.) يتم تخصيص موارد محدودة لكل نواة ، لذلك إذا لم يكن هناك الكثير من البيانات ، فعليك العمل مع معهم يمكنك مباشرة من المتصفح على موقع Kaggle - كتابة التعليمات البرمجية وتشغيلها للتنفيذ وتقديم النتيجة. قبل عامين ، استحوذت Google على Kaggle ، لذلك ليس من المستغرب أن تستخدم هذه الوظيفة محرك Google Cloud Engine "تحت الغطاء".
علاوة على ذلك ، كانت هناك العديد من المسابقات (الأخيرة - Mercari ) ، حيث يمكنك العمل مع البيانات بشكل عام فقط من خلال kernels. شكل مثير للاهتمام للغاية ، وهو تسوية الفرق في الأجهزة بين المشاركين وإجبار الدماغ على التشغيل لتحسين التعليمات البرمجية والنهج ، حيث أن النواة ، بطبيعة الحال ، لديها حد صارم من الموارد في ذلك الوقت - 4 نوى / 16 جيجا بايت من ذاكرة الوصول العشوائي / 60 دقيقة من وقت التشغيل / 1 جيجا بايت ومساحة قرص للإخراج. أثناء العمل في هذه المسابقة ، تعلم المؤلف المزيد عن تحسين الشبكة العصبية أكثر من أي مقرر نظري. القليل لم يكن كافيا للذهب ، أنهى منفردًا في الثالث والعشرين ، لكنه تلقى الخبرة والمتعة إلى حد كبير ...
أغتنم هذه الفرصة ، أود أن أشكر مرة أخرى زملائي من ods.ai - آرثر ستيبانينكو (آرثر) ، كونستانتين لوبوخين (كوستيا) ، سيرجي فيرونوف (سيرجييف) على نصائحهم ودعمهم في هذه المسابقة. بشكل عام ، كانت هناك العديد من النقاط المثيرة للاهتمام ، Konstantin Lopukhin (kostia) ، الذي احتل المركز الأول مع Paweł Jankiewicz ، ثم وضع ما كان يسمى " الإذلال المرجعي لـ 75 سطرًا " في غرفة الدردشة - نواة في 75 سطرًا من التعليمات البرمجية التي تنتج النتيجة إلى المنطقة الذهبية من لوحة الصدارة. هذا ، بالطبع ، يجب أن ينظر إليه :)
حسنًا ، يصرف انتباهه ، وهكذا - يكتب الناس الرمز ويضعون نواة بالحلول والأفكار المثيرة للاهتمام والمزيد. عادة ، في كل منافسة ، بعد أسبوعين ، تظهر واحدة أو اثنتان ممتازتان من نواة EDA (تحليل البيانات الاستكشافية) ، مع وصف مفصل لمجموعة البيانات والإحصاءات والخصائص وما إلى ذلك. واثنين من خطوط الأساس (الحلول الأساسية) ، والتي ، بالطبع ، لا تظهر أفضل نتيجة على لوحة الصدارة ، ولكن يمكن استخدامها كنقطة بداية لإنشاء الحل الخاص بك.
لماذا Kaggle؟

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

بشكل أساسي ، وهذا أمر معقول ، يأتي جميع الوافدين الجدد إلى Kaggle للحصول على الخبرة العملية وتعزيزها ، ولكن لا تنس أنه بالإضافة إلى ذلك هناك هدفين آخرين على الأقل:
- ميداليات ونردات المزارع
- سمعة المزرعة في مجتمع Kaggle
الشيء الرئيسي الذي يجب تذكره هو أن هذه الأهداف الثلاثة مختلفة تمامًا ، وهناك حاجة إلى مناهج مختلفة لتحقيقها ، ويجب عدم مزجها خاصة في المرحلة الأولية!
ليس من أجل أي شيء يتم التأكيد عليه "في المرحلة الأولية" عندما تقوم بالضخ - ستندمج هذه الأهداف الثلاثة في هدف واحد وسيتم حلها بالتوازي ، ولكن أثناء البدء - لا تخلطها ! بهذه الطريقة سوف تتجنب الألم وخيبة الأمل والاستياء في هذا العالم الظالم.
دعنا نذهب بإيجاز إلى الأهداف من الأسفل إلى الأعلى:
- السمعة - يتم ضخها من خلال كتابة مشاركات (وتعليقات) جيدة في المنتدى وإنشاء نواة مفيدة. على سبيل المثال ، نواة EDA (انظر أعلاه) ، المنشورات التي تصف التقنيات غير القياسية ، إلخ.
- الميداليات موضوع مثير للجدل ويكره الكراهية ، لكن حسنًا. يتم ضخه من خلال مزج النواة العامة (*) ، والمشاركة في فريق مع انحياز في الخبرة ، وإنشاء خط أنابيب خاص بك.
- الخبرة - يتم ضخها من خلال تحليل القرارات والعمل على الأخطاء.
(*) مزج النواة العامة عبارة عن تقنية لميدالية المزرعة يتم فيها تحديد النوى بأقصى سرعة على لوحة الصدارة العامة ، ويتم حساب متوسط توقعاتها (مزجها) ، ويتم تقديم النتيجة. عادةً ، تؤدي هذه الطريقة إلى الإفراط في ارتداء الملابس (إعادة التدريب للتدريب) والسفر في خصوصية ، ولكن في بعض الأحيان تسمح لك بالحصول على تقديم تقريبًا من الفضة. لا يوصي المؤلف ، في المرحلة الأولية ، باتباع نهج مماثل (اقرأ أدناه حول الحزام والسراويل).
أوصي بالهدف الأول لاختيار "التجربة" والالتزام بها حتى اللحظة التي تشعر فيها بأنك مستعد للعمل على هدفين / ثلاثة أهداف في نفس الوقت.
هناك نقطتان أخريان جديران بالذكر (فلاديمير إيغلوفيكوف (تيرناوس) - شكرًا للتذكير).
الأول هو تحويل الجهود المستثمرة في Kaggle إلى مكان عمل جديد أكثر إثارة للاهتمام و / أو بأجر مرتفع. بغض النظر عن كيفية تسوية Kaggle الآن ، لفهم الناس ، لا يزال الخط في ملخص Kaggle Competition Master والإنجازات الأخرى يستحق شيئًا.
لتوضيح هذه النقطة ، يمكننا الاستشهاد بمقابلتين ( واحدة ، اثنتين ) مع زملائنا سيرجي موشينسكي (cepera_ang) وألكسندر بوسلايف (ألبو)
وكذلك رأي فاليري بابوشكين ( venheads) :
فاليري بابوشكين - رئيس علوم البيانات في X5 Retail Group (العدد الحالي للموظفين 30 شخصًا + 20 وظيفة شاغرة منذ عام 2019)
رئيس مجموعة التحليلات Yandex Advisor
Kaggle Competition Master هو مقياس وكيل ممتاز لتقييم عضو الفريق في المستقبل. بالطبع ، فيما يتعلق بأحدث الأحداث في شكل فرق من 30 شخصًا وقاطرات غير مقنعة ، يلزم إجراء دراسة أكثر شمولًا للملف الشخصي عن ذي قبل ، ولكن هذا لا يزال يستغرق بضع دقائق. الشخص الذي حصل على لقب الماجستير ، مع درجة عالية من الاحتمالية يعرف كيفية كتابة رمز متوسط الجودة على الأقل ، وهو ضليع إلى حد ما في تعلم الآلة ، ويعرف كيفية تنظيف البيانات ، وبناء حلول مستقرة. إذا كنت لا تزال لا تستطيع التفاخر بلسان المعلم ، فإن حقيقة المشاركة هي أيضًا ميزة إضافية ، على الأقل المرشح يعرف عن وجود Kagl ولم يكن كسولًا للغاية وقضى بعض الوقت في إتقانها. وإذا تم إطلاق شيء آخر غير النواة العامة وتجاوز الحل الناتج عن نتائجه (وهو أمر سهل التحقق منه) ، فهذه مناسبة لمناقشة تفصيلية حول التفاصيل الفنية ، وهي أفضل بكثير وأكثر إثارة للاهتمام من أسئلة النظرية الكلاسيكية ، والإجابات التي تعطي فهم أقل لكيفية قيام الشخص بهذه المهمة في المستقبل. الشيء الوحيد الذي يجب أن أخاف منه ومع ما صادفته هو أن بعض الناس يعتقدون أن عمل DS هو شيء مثل Kagl ، وهو خطأ جوهري. يعتقد الكثيرون أن DS = ML ، وهو أيضًا خطأ
النقطة الثانية هي أن حل العديد من المشاكل يمكن أن يصاغ في شكل مطبوعات أو مقالات ، والتي من ناحية تسمح بالمعرفة التي أنجبها العقل الجماعي أثناء المنافسة ألا يموت في براري المنتدى ، ولكن من ناحية أخرى يضيف خطًا آخر إلى محفظة المؤلفين و +1 للرؤية ، والتي لها على أي حال تأثير إيجابي على كل من مؤشر الوظيفة والاقتباس.
على سبيل المثال ، قائمة أعمال زملائنا بعد نتائج العديد من المسابقاتالمؤلفون (بالترتيب الأبجدي):
Andrei O. ، Ilya ، albu ، aleksart ، alex.radionov ، almln ، alxndrkalinin ، cepera_ang ، dautovri ، davydov ، fartuk ، golovanov ، ikibardin ، kes ، mpavlov ، mvakhrushev ، n01z3 ، rutlin ، raufel ، scut snikolenko ، ternaus ، twoleggedeye ، مقابل ، vicident ، zfturbo
كيفية تجنب ألم فقدان ميدالية

ليسجل!
سأشرح. في كل منافسة تقريبًا ، أقرب إلى نهايتها ، يتم وضع نواة للجمهور مع حل يغير لوحة الصدارة بأكملها ، ولكن بالنسبة لك ، مع قرارك ، إلى أسفل وفقًا لذلك. وفي كل مرة يبدأ المنتدى الألم! كيف اتّخذت قرارًا بشأن الفضة ، وأنا الآن لا أسحب البرونز. ما الأمر ، استعدها.
تذكر - Kaggle هو DS تنافسي. المكان الذي تتواجد فيه على لوحة المتصدرين هو أمر متروك لك. , , , .
— .
, — . , , , - . , — . , - .
, , — … . , , — — .
, . — . ( Talking Data , 8- ) , (ppleskov) : " , , — ". , .
— :
" "()
, .

— python 3.6 jupyter notebook ubuntu . Python - DS, , jupyter , jupyter_contrib_nbextensions , , ubuntu — , bash :)
jupyter_contrib_nbextensions :
- Collapsible headings ( )
- Code folding ( )
- Split cells (, - )
.
- , . — . — .
, jupyter notebook , , . ( , , ( (ternaus) )
, jupyter - IDE, pycharm .
, , " ". , .
/OOF (.) .
(*) OOF — out of folds , -. . .
كيف؟ :
بشكل عام ، في المجتمع هناك ميل إلى التحول التدريجي إلى الخيار الثالث ، لأنه والأول والثاني لهما عيوبهما ، لكنهما بسيطان وموثوقان ، وبصراحة ، فإن Kaggle يكفيان.

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

ملاحظة
سوف يستند كل الوصف الإضافي إلى العمل باستخدام البيانات الجدولية والنصية. الصور ، التي هي الآن على Kaggle ، هي موضوع منفصل مع أطر منفصلة. على المستوى الأساسي ، من الجيد أن تكون قادرًا على معالجتها ، إذا كان فقط للقيادة من خلال شيء مثل ResNet / VGG واستخراج الميزات ، ولكن العمل الأعمق والأكثر دقة هو موضوع منفصل وشامل للغاية لا يتم تناوله في إطار هذه المقالة.
يعترف المؤلف بصدق أنه ليس جيدًا جدًا في الصور. كانت المحاولة الوحيدة للانخراط في الجمال في مسابقة تحديد الكاميرا ، والتي بالمناسبة ، قامت فرقنا التي تحمل علامة [ ods.ai ] بتفكيك لوحة المتصدرين بأكملها إلى حد اضطر مسؤولو Kaggle إلى زيارتنا في الركود للتأكد من أن كل شيء كان في الداخل القواعد - وطمأنة المجتمع. لذا ، في هذه المسابقة حصلت على الفضة الفخرية بالمركز 46 ، وعندما قرأت وصف أفضل الحلول من زملائنا ، أدركت أنني لا أستطيع الصعود إلى أعلى - فهم يستخدمون السحر الأسود مع زيادة ، وجودة 300 جيجابايت من البيانات ، التضحيات وما إلى ذلك.
بشكل عام ، إذا كنت تريد البدء بالصور ، فأنت بحاجة إلى أطر أخرى وأدلة أخرى.
الهدف الرئيسي
مهمتك هي كتابة خطوط الأنابيب (مصممة على شكل مفكرات + وحدات نمطية) للمهام التالية:
- EDA (تحليل البيانات الاستكشافية) . هنا نحتاج إلى التعليق - هناك أشخاص مدربون بشكل خاص في Kaggle :) الذين شاهدوا نواة EDA المذهلة في كل مسابقة. لن تنجح في تجاوزها ، ولكن لا يزال عليك أن تفهم كيف يمكنك النظر إلى البيانات ، لأن في المهام القتالية ، سيكون هذا الشخص المدرب خصيصًا هو أنت. لذلك ، ندرس النهج ، ونوسع مكتباتنا.
- تنظيف البيانات - كل شيء عن تنظيف البيانات. الانبعاثات والسهو وما إلى ذلك.
- إعداد البيانات - كل ما يتعلق بإعداد البيانات للنموذج. بضع كتل:
- النماذج
- النماذج الخطية
- نماذج شجرة
- الشبكات العصبية
- غريب (FM / FFM)
- اختيار الميزة
- البحث عن المعاملات الفائقة
- فرقة
في النواة ، عادة ما يتم جمع كل هذه المهام في رمز واحد ، وهو أمر مفهوم ، ولكن أوصي بشدة بإنشاء كل كمبيوتر محمول منفصل ووحدة منفصلة (مجموعة من الوحدات) لكل من هذه المهام الفرعية. لذلك سيكون من الأسهل بالنسبة لك في وقت لاحق.
تحذير من holivar المحتمل - هيكل هذا الإطار ليس الحقيقة المطلقة ، وهناك العديد من الطرق الأخرى لتنظيم خطوط الأنابيب الخاصة بك - هذه واحدة فقط.
يتم نقل البيانات بين الوحدات إما في شكل CSV ، أو ريشة / مخلل / hdf - وهو أكثر ملاءمة لك وما تعودت عليه أو تكمن الروح.
في الواقع ، لا يزال الكثير يعتمد على كمية البيانات ، في TalkingData ، على سبيل المثال ، كان علي أن أذهب عبر memmap للتغلب على نقص الذاكرة عند إنشاء مجموعة بيانات لـ lgb.
في حالات أخرى ، يتم تخزين البيانات الرئيسية في hdf / feather ، شيء صغير (مثل مجموعة من السمات المختارة) في CSV . أكرر - لا توجد قوالب ، اعتادت على ما ، تعمل مع ذلك.
المرحلة الأولية

نذهب إلى أي منافسة Getting Start (كما ذكرنا سابقًا ، بدأ المؤلف بأسعار المنازل: تقنيات الانحدار المتقدمة ) ، وبدأنا في إنشاء أجهزة الكمبيوتر المحمولة الخاصة بنا. نقرأ النواة العامة ، وننسخ أجزاء من التعليمات البرمجية ، والإجراءات ، والمناهج ، وما إلى ذلك. الخ. نقوم بتشغيل البيانات من خلال خط الأنابيب ، ونقدم - ننظر إلى النتيجة ، ونحسنها وما إلى ذلك في دائرة.
تتمثل المهمة في هذه المرحلة في جمع خط أنابيب كامل الدورة يعمل بكفاءة ، من تحميل البيانات وتنظيفها حتى التقديم النهائي.
قائمة عينة لما يجب أن يكون جاهزًا ويعمل بنسبة 100٪ قبل الانتقال إلى الخطوة التالية:
- جمعية الإمارات للغوص . (إحصائيات حول مجموعة البيانات ، مخططات الصور ، مجموعة الفئات ، ...)
- تنظيف البيانات. (يمر عبر فيلنا ، فئات التنظيف ، يجمع بين الفئات)
- إعداد البيانات
- عام (فئات المعالجة - التسمية / ohe / التردد ، إسقاط الأرقام على الفئات ، تحويل الأرقام ، binning)
- للانحدارات (قياس مختلف)
- النماذج
- النماذج الخطية (الانحدارات المختلفة - التلال / اللوجستي)
- نماذج شجرة (lgb)
- اختيار الميزة
- فرقة
اذهب للمعركة

اختر أي منافسة تحبها ... وابدأ :)
بينما لا يوجد مخطط تحقق من الصحة - لا توجد خطوات أخرى !!!
- قم بتشغيل البيانات من خلال خط الأنابيب الذي تم إنشاؤه وأرسل النتيجة
- نحن نقبض على رؤوسنا ، مجانين ، نهدأ ... ونستمر ...
- نقرأ جميع النواة فيما يتعلق بالتقنيات والأساليب المستخدمة.
- اقرأ جميع مناقشات المنتدى
- نقوم بإعادة تشكيل / استكمال خطوط الأنابيب بتقنيات جديدة
- ننتقل إلى الخطوة 1
تذكر - هدفنا في هذه المرحلة هو اكتساب الخبرة ! املأ خطوط أنابيبنا بأساليب وطرق العمل ، املأ وحداتنا برمز العمل. نحن لا نهتم بالميداليات - أو بالأحرى ، إنه لأمر رائع إذا كان بإمكانك أن تأخذ مكانك على لوحة المتصدرين على الفور ، ولكن إذا لم يكن كذلك ، فلا تقلق. لم نأت إلى هنا لمدة خمس دقائق ، ولن تذهب الميداليات والوفيات إلى أي مكان.
هنا انتهت المسابقة ، هل أنت في مكان ما هناك ، يبدو أن الجميع يمسكون بها في اليوم التالي؟
لا!
ماذا تفعل بعد ذلك:
- الانتظار لمدة خمسة أيام. لا تقرأ المنتدى ، ينسى Kaggle في هذا الوقت. دع دماغك يسترخي وطمس عينيك.
- ارجع إلى المسابقة. في هذه الأيام الخمسة ، وفقًا لقواعد الذوق السليم ، ستنشر جميع القمم وصفًا لقراراتهم - في المشاركات في المنتدى ، في شكل نواة ، في شكل مستودعات جيثب.
وهنا تبدأ جحيمك الشخصي!
- تأخذ عدة أوراق بتنسيق A4 ، في كل كتابة اسم الوحدة النمطية من الإطار أعلاه (EDA / إعداد / نموذج / فرقة / اختيار الميزة / البحث عن المعلمات الفائقة / ...)
- اقرأ جميع الحلول باستمرار ، واكتب تقنيات وطرق وأساليب جديدة جديدة لك في المنشورات المقابلة.
وأسوأ شيء:
- باستمرار لكل وحدة ، اكتب (تجسس) تنفيذ هذه الأساليب والأساليب ، وتوسيع خط الأنابيب والمكتبات الخاصة بك.
- في وضع ما بعد الإرسال ، قم بتشغيل البيانات من خلال خط الأنابيب المحدث الخاص بك حتى يكون لديك حل في منطقة الذهب أو حتى نفد الصبر والأعصاب.
وبعد ذلك فقط ننتقل إلى المنافسة القادمة.
لا ، أنا لست مزعجًا. نعم ، إنه ممكن وأسهل. أنت تقرر.
لماذا تنتظر 5 أيام ولا تقرأ على الفور ، لأنه في المنتدى يمكنك طرح الأسئلة؟ في هذه المرحلة (في رأيي) من الأفضل قراءة المواضيع التي تم تكوينها بالفعل مع مناقشات حول الحلول والأسئلة التي قد تكون لديكم - إما أن يسأل أحدهم بالفعل ، أو من الأفضل عدم طرحها على الإطلاق ، ولكن البحث عن الإجابة بنفسك)
لماذا تفعل كل هذا؟ حسنًا ، مرة أخرى - تتمثل مهمة هذه المرحلة في تطوير قاعدة بيانات للحلول والأساليب والمناهج. مكافحة قاعدة العمل. لذا في المسابقة التالية ، لن تضيع الوقت ، ولكن قل فورًا - نعم ، يعني أن ترميز الهدف يمكن أن يأتي ، وبالمناسبة ، لدي الرمز الصحيح لهذا من خلال الطيات في الطيات. او اوه! أتذكر بعد ذلك أن المجموعة مرت عبر scipy.optimize ، وبالمناسبة ، الرمز جاهز بالفعل بالنسبة لي.
شيء من هذا القبيل ...
انتقل إلى وضع العمل

في هذا الوضع ، نحل العديد من المسابقات. في كل مرة نلاحظ وجود سجلات أقل وأقل على الأوراق ، والمزيد والمزيد من التعليمات البرمجية في الوحدات النمطية. تدريجيًا ، يتم اختزال مهمة التحليل إلى حقيقة أنك قرأت للتو وصف الحل ، قل نعم ، واو ، أوه هناك! وأضف تعويذة أو نهجين أو نهجين جديدين إلى بنك أصبعك.
بعد ذلك ، يتغير الوضع إلى وضع معالجة الخطأ. القاعدة جاهزة لك الآن تحتاج فقط لتطبيقها بشكل صحيح. بعد كل مسابقة ، أثناء قراءة وصف الحلول ، انظر ما لم تفعله ، وما الذي يمكن عمله بشكل أفضل ، وما فاتك ، أو أين ذهبت إليه ، كما فعلت في Toxic . كان يسير بشكل جيد للغاية ، في باطن الذهب ، وفي رحلاته الخاصة 1500 موقع. إنه لعار للدموع ... ولكن هدأ ، وجد خطأ ، كتب منشورًا في الركود - وتعلم الدرس.
يمكن أن تكون علامة الخروج من وضع التشغيل النهائي حقيقة أن أحد أوصاف الحل الأعلى سيتم كتابته من لقبك.
ما الذي يجب أن يكون في خطوط الأنابيب تقريبًا بنهاية هذه المرحلة:
- جميع أنواع خيارات المعالجة المسبقة وإنشاء ميزات رقمية - الإسقاطات والعلاقات ،
- طرق مختلفة للعمل مع الفئات - يعني ترميز الهدف في الإصدار الصحيح ، التردد ، التسمية / ohe ،
- مخططات التضمين المختلفة فوق النص (Glove و Word2Vec و Fasttext)
- مخططات مختلفة لتوجيه النص (Count ، TF-IDF ، Hash)
- العديد من أنظمة التحقق (N * M من أجل التحقق المتبادل القياسي ، المستند إلى الوقت ، حسب المجموعة)
- تحسين بايزي / هايبروبت / شيء آخر لاختيار المعلمات المفرطة
- تبديل / تبديل تبديل / Boruta / RFE - لتحديد الميزات
- النماذج الخطية - بنفس النمط عبر مجموعة بيانات واحدة
- LGB / XGB / Catboost - بنفس النمط عبر مجموعة بيانات واحدة
قام المؤلف بعمل metaclasses بشكل منفصل للنماذج الخطية والنماذج القائمة على الأشجار ، مع واجهة خارجية واحدة لتسوية الاختلافات في واجهة برمجة التطبيقات للنماذج المختلفة. ولكن الآن يمكنك العمل في سطر واحد رئيسي ، على سبيل المثال ، LGB أو XGB عبر مجموعة بيانات واحدة تمت معالجتها.
- العديد من الشبكات العصبية لجميع المناسبات (نحن لا نلتقط الصور في الوقت الحالي) - التضمين / CNN / RNN للنص ، RNN للتسلسلات ، Feed-Forward لكل شيء آخر. من الجيد أن تفهم وتكون قادرة على التشفير التلقائي .
- مجموعة تعتمد على lgb / الانحدار / scipy - لمهام الانحدار والتصنيف
- من الجيد أن تكون قادرًا بالفعل على الخوارزميات الجينية ، وأحيانًا تسير على ما يرام
لتلخيص
أي رياضة ، ومنافسة DS هي أيضًا رياضة ، فهي الكثير من العرق والكثير من العمل. هذه ليست جيدة ولا سيئة ، إنها حقيقة. المشاركة في المسابقات (إذا اقتربت من العملية بشكل صحيح) تضخ المهارات التقنية بشكل جيد للغاية ، بالإضافة إلى أنها تهز الروح الرياضية إلى حد ما عندما لا تريد فعل شيء ما ، تكسر كل شيء مباشرة - ولكنك تحصل على جهاز الكمبيوتر المحمول الخاص بك ، وتعيد النموذج ، وتبدأ في الحساب ، بحيث اقض على هذا المكان العشري الخامس المؤسف.
لذا قرر Kaggle - تجربة المزرعة والميداليات والمعجبين!
بضع كلمات حول خطوط الأنابيب للمؤلف

في هذا القسم ، سأحاول وصف الفكرة الرئيسية لخطوط الأنابيب والوحدات التي تم جمعها على مدار عام ونصف. مرة أخرى - لا يدعي هذا النهج أنه عالمي أو فريد ، ولكن فجأة سيساعدك شخص ما.
- يتم أخذ جميع التعليمات البرمجية الهندسية للميزات ، باستثناء متوسط الترميز الهدف ، في وحدة منفصلة في شكل وظائف. حاولت أن أجمع من خلال الأشياء ، وتبين أنها مرهقة ، وفي هذه الحالة ليس من الضروري أيضًا.
- جميع ميزات هندسة الميزات مصنوعة من نفس النمط ولها مكالمة واحدة وتوقيع عودة:
def do_cat_dummy(data, attrs, prefix_sep='_ohe_', params=None): # do something return _data, new_attrs
نقوم بتمرير مجموعة البيانات ، سمات العمل ، بادئة للسمات الجديدة ومعلمات إضافية إلى الإدخال. عند الإخراج ، نحصل على مجموعة بيانات جديدة بسمات جديدة وقائمة بهذه السمات. علاوة على ذلك ، يتم حفظ مجموعة البيانات الجديدة هذه في مخلل / ريش منفصل.
ما يعطيه هذا هو أننا حصلنا على فرصة لتجميع مجموعة بيانات للتدريب بسرعة من مكعبات تم إنشاؤها مسبقًا. على سبيل المثال ، بالنسبة للفئات ، نقوم بإجراء ثلاثة معالجة في وقت واحد - Label Encoding / OHE / Frequency ، وحفظها في ثلاثة ريش منفصل ، ثم في مرحلة النمذجة نلعب ببساطة مع هذه الكتل ، وننشئ مجموعات بيانات تدريبية مختلفة في حركة واحدة أنيقة.
pickle_list = [ 'attrs_base', 'cat67_ohe', # 'cat67_freq', ] short_prefix = 'base_ohe' _attrs, use_columns, data = load_attrs_from_pickle(pickle_list) cat_columns = []
إذا كنت بحاجة إلى إنشاء مجموعة بيانات أخرى ، pickle_list
بتغيير pickle_list
، وإعادة التشغيل ، والعمل مع مجموعة البيانات الجديدة.
تتضمن المجموعة الرئيسية من الوظائف عبر البيانات المجدولة (الحقيقية والفئوية) تشفيرًا متنوعًا للفئات ، وإسقاط السمات العددية على الفئات ، وكذلك التحولات المختلفة.
def do_cat_le(data, attrs, params=None, prefix='le_'): def do_cat_dummy(data, attrs, prefix_sep='_ohe_', params=None): def do_cat_cnt(data, attrs, params=None, prefix='cnt_'): def do_cat_fact(data, attrs, params=None, prefix='bin_'): def do_cat_comb(data, attrs_op, params=None, prefix='cat_'): def do_proj_num_2cat(data, attrs_op, params=None, prefix='prj_'):
سكين سويسري عالمي لدمج السمات ، حيث ننقل قائمة من سمات المصدر وقائمة بوظائف التحويل ، عند الإخراج نحصل ، كالمعتاد ، على مجموعة بيانات وقائمة من السمات الجديدة.
def do_iter_num(data, attrs_op, params=None, prefix='comb_'):
بالإضافة إلى العديد من المحولات المحددة الإضافية.
لمعالجة البيانات النصية ، يتم استخدام وحدة منفصلة ، والتي تتضمن طرقًا مختلفة للمعالجة المسبقة ، والتشفير ، والتشفير / الجذع ، والترجمة إلى جدول تردد ، وما إلى ذلك. الخ. كل شيء قياسي باستخدام sklearn و nltk و keras .
تتم معالجة السلاسل الزمنية أيضًا بواسطة وحدة منفصلة ، مع وظائف لتحويل مجموعة البيانات الأصلية لكل من المهام العادية (الانحدار / التصنيف) والتسلسل إلى التسلسل. بفضل فرانسوا شوليه لإنهاء keras بحيث لا يشبه بناء نماذج seq-2-seq طقوس الفودو لدعوة الشياطين.
بالمناسبة ، هناك وظائف في التحليل الإحصائي المعتاد للسلسلة - التحقق من الاستقرارية ، تحليل STL ، وما إلى ذلك ... إنها تساعد كثيرًا في المرحلة الأولية من التحليل على "الشعور" بالسلسلة ومعرفة كيف هي.
الوظائف التي لا يمكن تطبيقها على الفور على مجموعة البيانات بالكامل ، ولكن يجب استخدامها داخل الطيات أثناء التحقق المتقاطع ، يتم وضعها في وحدة منفصلة:
- معنى ترميز الهدف
- الاختزال / الاختزال
يتم تمريرها داخل فئة النموذج (اقرأ عن النماذج أدناه) في مرحلة التدريب.
_fpreproc = fpr_target_enc _fpreproc_params = fpr_target_enc_params _fpreproc_params.update(**{ 'use_columns' : cat_columns, })
- للنمذجة ، تم إنشاء metaclass يعمم مفهوم النموذج بطرق مجردة: تناسب / توقع / set_params / إلخ. لكل مكتبة محددة (LGB ، XGB ، Catboost ، SKLearn ، RGF ، ...) يتم إنشاء تطبيق هذا metaclass.
أي ، للعمل مع LGB نقوم بإنشاء نموذج
model_to_use = 'lgb' model = KudsonLGB(task='classification')
بالنسبة إلى XGB:
model_to_use = 'xgb' metric_name= 'auc' task='classification' model = KudsonXGB(task=task, metric_name=metric_name)
وتعمل جميع الوظائف مع model
.
للتحقق من الصحة ، تم إنشاء العديد من الوظائف التي تحسب على الفور كل من التنبؤ و OOF لعدة بذور أثناء التحقق المتبادل ، بالإضافة إلى وظيفة منفصلة للتحقق المنتظم عبر train_test_split. يتم تشغيل جميع وظائف التحقق باستخدام طرق نموذج التعريف ، والتي تعطي رمزًا مستقلاً عن النموذج وتسهل الاتصال بخط الأنابيب في أي مكتبة أخرى.
res = cv_make_oof( model, model_params, fit_params, dataset_params, XX_train[use_columns], yy_train, XX_Kaggle[use_columns], folds, scorer=scorer, metric_name=metric_name, fpreproc=_fpreproc, fpreproc_params=_fpreproc_params, model_seed=model_seed, silence=True ) score = res['score']
XX_train [use_columns]، yy_train، XX_Kaggle [use_columns]، والطيات، هداف = هداف، METRIC_NAME = METRIC_NAME، fpreproc = _fpreproc، fpreproc_params = _fpreproc_params، model_seed = model_seed، والصمت = صحيح res = cv_make_oof( model, model_params, fit_params, dataset_params, XX_train[use_columns], yy_train, XX_Kaggle[use_columns], folds, scorer=scorer, metric_name=metric_name, fpreproc=_fpreproc, fpreproc_params=_fpreproc_params, model_seed=model_seed, silence=True ) score = res['score']
لاختيار الميزات - لا يوجد شيء مثير للاهتمام ومعيار RFE وتبديل الترتيب العشوائي المفضل بكل الطرق الممكنة.
للبحث عن معلمات مفرطة ، يتم استخدام التحسين Bayesian بشكل أساسي ، مرة أخرى في نموذج موحد بحيث يمكنك تشغيل البحث عن أي نموذج (من خلال وحدة التحقق المتقاطع). تعيش هذه الوحدة في الكمبيوتر المحمول نفسه الذي توجد فيه المحاكاة.
تم إنشاء العديد من الوظائف للمجموعات ، وموحدة لمهام الانحدار والتصنيف استنادًا إلى Ridge / Logreg ، LGB ، Neural network و my scipy.optimize.
تفسير صغير - كل نموذج من خط الأنابيب يعطي ملفين نتيجة لذلك: sub_xxx و oof_xxx ، وهما التنبؤ للاختبار وتوقع OOF للقطار. بعد ذلك ، في وحدة المجموعة من الدليل المحدد ، نقوم بتحميل أزواج من التوقعات من جميع النماذج إلى إطارين للبيانات - df_sub / df_oof . حسنًا ، ثم ننظر إلى الارتباطات ، ونختار الأفضل ، ثم نبني نماذج المستوى 2 على df_oof ونطبقها على df_sub .
في بعض الأحيان ، للبحث عن أفضل مجموعة فرعية من النماذج ، يكون البحث باستخدام الخوارزميات الجينية جيدًا (يستخدم المؤلف هذه المكتبة ) ، وأحيانًا الطريقة من Caruana . في أبسط الحالات ، يعمل الانحدار القياسي والسكيبي على تحسين العمل بشكل جيد.
تعيش الشبكات العصبية في وحدة منفصلة ، المؤلف يستخدم keras بأسلوب وظيفي ، نعم ، ليس مرنًا مثل pytorch ، ولكنه يكفي الآن. مرة أخرى ، تتم كتابة وظائف التدريب الشاملة التي تكون ثابتة على نوع الشبكة.
تم اختبار خط الأنابيب هذا مرة أخرى في منافسة أخيرة من Home Credit ، الاستخدام الدقيق والدقيق لجميع الكتل والوحدات جلب المركز 94 والفضة.
المؤلف جاهز بشكل عام للتعبير عن فكرة مثيرة للفتنة مفادها أنه بالنسبة للبيانات المجدولة وخط الأنابيب المصنوع بشكل طبيعي ، فإن الإرسال النهائي لأي منافسة يجب أن يطير إلى أفضل 100 ليدربورد. بطبيعة الحال ، هناك استثناءات ، ولكن بشكل عام يبدو أن هذا البيان صحيح.
حول العمل الجماعي

ليس من السهل تحديد ما إذا كان Kaggle في فريق أو منفرد يعتمد كثيرًا على الشخص (وعلى الفريق) ، لكن نصيحتي لأولئك الذين بدأوا للتو هي محاولة بدء منفرد. لماذا؟ سأحاول شرح وجهة نظري:
- أولاً ، ستفهم نقاط القوة لديك ، وترى نقاط الضعف ، وبشكل عام ، ستكون قادرًا على تقييم إمكاناتك كممارسة DS.
- ثانيًا ، حتى عند العمل في فريق (ما لم يكن فريقًا قائمًا مع فصل الأدوار) ، فسيظلون ينتظرون منك حلًا كاملاً جاهزًا - أي ، يجب أن يكون لديك بالفعل خطوط أنابيب عمل. (" إرسال أم لا ") (ج)
- وثالثًا ، يكون الأمر الأمثل عندما يكون مستوى اللاعبين في الفريق متساويًا تقريبًا (وعاليًا جدًا) ، ثم يمكنك تعلم شيء مفيد عالي المستوى حقًا) في الفرق الضعيفة (لا يوجد شيء مهين ، أنا أتحدث عن مستوى التدريب والخبرة في Kaggle) imho من الصعب جدًا تعلم أي شيء ، من الأفضل عض المنتدى والنواة. نعم ، يمكنك زراعة الميداليات ، ولكن انظر أعلاه للأهداف وحزام للحفاظ على السراويل)
نصائح مفيدة من القبطان للأدلة وبطاقة أشعل النار الموعودة :)

تعكس هذه النصائح تجربة المؤلف ، وليست عقيدة ، ويمكن (ويجب) التحقق منها من خلال تجاربنا الخاصة
ابدأ دائمًا ببناء التحقق من الكفاءة - لن يكون هناك أي شيء ؛ كل الجهود الأخرى ستطير إلى الفرن. انظر مرة أخرى إلى ليدربورد ليدربورد .
يسعد المؤلف حقًا أنه قام في هذه المسابقة ببناء مخطط تحقق مستقر (3 × 10 أضعاف) ، والذي حافظ على السرعة وجلب المركز 42 الشرعي)
إذا تم إنشاء التحقق من الصحة المختصة ، فثق دائمًا في نتائج التحقق من الصحة . إذا كانت سرعة النماذج الخاصة بك تتحسن عند التحقق من الصحة ، ولكنها تزداد سوءًا عند الجمهور - فمن المنطقي أكثر أن تثق في عمليات التحقق. عند التحليل ، ما عليك سوى قراءة جزء البيانات هذا الذي تعتبر عليه لوحة الصدارة العامة أضعافًا أخرى. ألا تريد ملء نموذجك أكثر من مرة واحدة؟
إذا كان النموذج والمخطط يسمحان بذلك ، فقم دائمًا بعمل تنبؤات OOF واحتفظ بها بالقرب من النموذج. في مرحلة المجموعة ، لا تعرف أبدًا ما الذي سيطلق.
احتفظ دائمًا برمز / OOF بجوار النتيجة لتلقيه . لا يهم على github ، محليا ، في أي مكان. مرتين ، اتضح أنه في المجموعة كان أفضل نموذج هو الذي تم صنعه قبل أسبوعين من الصندوق ، ولم يتم حفظ الرمز من أجله. الألم
مطرقة على اختيار الجانب "الصحيح" للتحقق من صحة الصليب ، هو نفسه أخطأ في البداية. من الأفضل اختيار أي ثلاثة وإجراء التحقق المتقاطع 3xN. ستكون النتيجة أكثر استقرارًا وأسهل.
لا تطارد عدد النماذج في المجموعة - فهي أقل وأفضل ، ولكن أكثر تنوعًا - أكثر تنوعًا في النماذج ، في المعالجة المسبقة ، في مجموعات البيانات. في أسوأ الحالات ، وفقًا للمعايير ، على سبيل المثال ، شجرة عميقة ذات تنظيم جامد ، واحدة ضحلة.
استخدم المراوغة / boruta / RFE لتحديد الميزات ، وتذكر أن أهمية الميزة في مختلف النماذج القائمة على الأشجار هي مقياس في الببغاوات على كيس نشارة الخشب.
رأي شخصي للمؤلف (قد لا يتطابق مع رأي القارئ) بايزي التحسين > البحث العشوائي> hyperopt لاختيار المعلمات المفرطة. (">" == أفضل)
يتم التعامل مع ليدربورد المسيل للدموع الموضوعة على نواة عامة على النحو التالي:
- هناك وقت - ننظر إلى ما هو جديد ونبني في أنفسنا
- وقت أقل - أعده للتحقق من صحته ، قم بعمل OOF - واربطه في المجموعة
- لا يوجد وقت على الإطلاق - نحن نمزج بغباء مع أفضل الحلول وننظر بسرعة.
كيفية اختيار التقديم النهائي - بالطبع عن طريق الحدس. ولكن بجدية ، عادة ما يمارس الجميع النهج التالية:
- التقديم المحافظ (على النماذج المستدامة) / التقديم الخطر.
- الأفضل على OOF / المتصدرين العامين
تذكر - كل شيء هو رقم وتعتمد إمكانيات معالجته فقط على خيالك. استخدم التصنيف بدلاً من الانحدار ، وتعامل التسلسل كصورة ، إلخ.
وأخيرًا:
روابط مفيدة

عام
http://ods.ai/ - لأولئك الذين يرغبون في الانضمام إلى أفضل مجتمع DS :)
https://mlcourse.ai/ - موقع دورة ods.ai
https://www.Kaggle.com/general/68205 - نشر حول الدورة التدريبية على Kaggle
بشكل عام ، أوصي بشدة أنه في نفس الوضع الموصوف في المقالة ، شاهد دورة فيديو mltrainings - هناك العديد من الأساليب والتقنيات المثيرة للاهتمام.
فيديو
الدورات
يمكنك معرفة المزيد حول الطرق والأساليب لحل المشكلات في Kaggle من السنة الثانية من التخصص ، " كيفية الفوز بمسابقة علوم البيانات: تعلم من Top Kagglers"
القراءة اللامنهجية:
الخلاصة

موضوع علم البيانات بشكل عام وعلوم البيانات التنافسية بشكل خاص لا ينضب مثل الذرة (C). في هذه المقالة ، كشف المؤلف قليلاً عن موضوع ضخ المهارات العملية باستخدام منصات تنافسية. إذا أصبح الأمر مثيرًا للاهتمام - قم بالتواصل ، انظر حولك ، وجمع الخبرات - واكتب مقالاتك. كلما كان المحتوى جيدًا ، كان ذلك أفضل لنا جميعًا!
توقع الأسئلة - لا ، لم يتم توفير خطوط الأنابيب والمكتبات للمؤلف بحرية.
جزيل الشكر للزملاء من ods.ai: فلاديمير إيغلوفيكوف (ternaus) ، يوري كاشنيتسكي (يوركو) ، فاليري بابوشكين ( venheads) ، أليكسي برونكين (pronkin_alexey) ، دميتري بتروف (dmitry_petrov) ، آرثر كوزين (n01z3) ، وأي شخص يقرأ لك أيضًا المقالة قبل النشر ، للتحرير والمراجعات.
شكر خاص لـ Nikita Zavgorodnoy (njz) على المراجعة النهائية.
شكرا لكم على اهتمامكم ، آمل أن تكون هذه المقالة مفيدة لشخص ما.
كنيتي في Kaggle / ods.ai : kruegger