حدا MinMax المتعلمان يصفان القيم التي استعملناها لبناء التحويل، ولا يضمنان أن كل قيمة لاحقة ستقع بين صفر وواحد بعده. إذا خرج المدخل الجديد عن الحدين، فقد يخرج الناتج عن المجال أيضا. نفترض في الشرح مجالا مطلوبا من 0 إلى 1 وخيار القص معطلا.
الخلاصة السريعة
لا؛ مع تثبيت الحدين وتعطيل القص، تعطي قيمة أعلى من حد التدريب الأعلى ناتجا أكبر من 1 ، وتعطي قيمة أدنى من الحد الأدنى ناتجا أقل من 0.
- يوثق MinMaxScaler صيغة تحجيم كل ميزة إلى مجال التدريب؛ clip=False هو الإعداد الافتراضي. [1] نثبت المجال 0 إلى 1 والحدين مختلفين.
- لتدريب حداه 4 و 14 ، القاعدة هي القيمة ناقص 4 ، مقسومة على 10 ؛ تصبح 4 صفرا و 14 واحدا، لكن 19 اللاحقة تصبح 1.5.
- القيمة اللاحقة سالب 1 تصبح سالب 0.5. إعادة حساب الحدين مع المدخل اللاحق تغير التحويل، وليست تطبيق الحالة المحفوظة نفسها.
- يتيح clip=True قص القيم اللاحقة إلى المجال. [1] هذا خيار مختلف؛ خروج القيمة وحده لا يثبت خطأ القياس أو فشل النموذج، ولم ننفذ تجربة.
أي قيم تدخل تعريف المجال؟
تعرض الوثائق التحويل بطرح أصغر قيمة تدريب والقسمة على مدى التدريب، ثم تغيير النطاق حسب feature_range. [1]
نختار هنا النطاق 0 إلى 1 ، ونتعامل مع عمود عددي واحد له حد أدنى مختلف عن الحد الأعلى. لا نناقش عمودا ثابتا أو قيمًا مفقودة. حالة التعلم هي مصدر الحدين؛ ليست عبارة «هذا العمود موجود في الملف» مبررا لإعادة تعريفهما كلما وصل صف.
ويعني الحد الأعلى هنا أكبر ما استعملناه في التدريب، لا أكبر قيمة ممكنة للمتغير في العالم. قد تظهر قياسات جديدة أكبر دون أن تكون مستحيلة. نحتاج إلى تعريف المصدر والمهمة لتفسيرها، بينما يمكن إعادة حساب تمثيلها وفق التحويل المثبت مباشرة.
كيف يصل مدخل لاحق إلى 1.5 ؟
نؤلف حالتين لتعلم الحدين: قيمة 4 وقيمة 14 بالتمثيل نفسه. الفرق 14 ناقص 4 يساوي 10. في مجالنا المختار، كل قيمة تتحول بطرح 4 ثم القسمة على 10. نحصل على 0 للأولى و 1 للثانية، دون تشغيل مكتبة.
نقدم 19 بوصفها قيمة لاحقة لا تدخل تعلم الحدين. الفرق بينها وبين 4 هو 15 ؛ والقسمة على 10 تعطي 1.5. هذه نتيجة مناسبة للصيغة تحت شرط تعطيل القص، فلا نعدها خطأ حسابيا لمجرد أن اسم المجال يحتوي الواحد.
كما تعطي 9 اللاحقة 0.5. وجود قيمة جديدة داخل المجال أو خارجه لا يغير إحصاء التحويل المحفوظ في هذه المقارنة. الجدول يتتبع مدخلات مختلفة بحالة واحدة، وليس حالات تعلم متعددة أخفينا اختلافها.
| دور القيمة | المدخل | الناتج دون قص |
|---|---|---|
| حد التدريب الأدنى | 4 | 0 |
| حد التدريب الأعلى | 14 | 1 |
| قيمة لاحقة داخل الحدين | 9 | 0.5 |
| قيمة لاحقة أعلى | 19 | 1.5 |
ماذا يحدث عند الطرف الأدنى أو إعادة التعلم؟
نضيف حالة لاحقة مستقلة قيمتها سالب 1. نطرح 4 فنحصل على سالب 5 ، ثم نقسم على 10 ، فتخرج سالب 0.5. لا يوجد شرط في تحويلنا غير المقصوص يحول كل ما هو دون الحد الأدنى إلى صفر.
ولو أعدنا تعريف التدريب ليشمل 19 ، أصبح الحد الأعلى 19 والمدى 15. عندها تصبح 14 مساوية لنحو 0.6667 بدلا من 1 ، وتصبح 19 واحدا. هذه حالة أخرى، وليست إعادة حساب أدق للحالة الأولى.
لذلك لا نغير الحدين لمجرد جعل الرقم الظاهر يقع في المجال، ثم نعلن أن التمثيل لم يتغير. نحتفظ بهوية الحالة التي أنتجت كل ناتج حتى يفهم قارئ الميزات سبب اختلاف الرقم نفسه بين نسختين.
ما الذي يسمح به القص وما الذي يحتاج مراجعة؟
تتيح الوثائق clip=True لقص القيم المحولة اللاحقة إلى المجال المحدد، مع بقاء False الافتراضي. [1]
هذا يضيف خطوة تختلف عن الإعداد الذي حسبنا به 1.5 وسالب 0.5. لا نفترض أنها حدثت لمجرد استعمال اسم MinMaxScaler؛ نقرأ الخيار الفعلي، ونحفظه بجانب الحدين والمجال واسم العمود ووحدته.
ونقترح مراجعة سبب القيمة الجديدة إذا استدعت المهمة ذلك. لكن خروج 19 عن مدى تدريبنا لا يكشف وحده خطأها، ولا يثبت أن نموذجًا أخفق معها أو أن القص سيحسن النتيجة. لم نقدم أهدافًا أو مخرجات نموذج، بل أعدنا حساب تحويل ذي شروط معلنة.
المصادر ومتابعة القراءة
- scikit-learn 1.9.1: MinMaxScaler (يفتح في نافذة جديدة)scikit-learn.org
أُعدّ هذا المقال بصياغة عربية أصلية بالاستناد إلى المصادر أعلاه، وهو مدخل تمهيدي إلى الموضوع. اقرأ منهجية المحتوى وحدوده.
