البيانات: وقود الذكاء الاصطناعي وجودته

البيانات: وقود الذكاء الاصطناعي وجودته

49 دقيقة
٥ أغسطس ٢٠٢٦
المرحلة 1 من 7

لماذا البيانات هي الوقود؟

لماذا يجب أن تهتم بجودة البيانات قبل أن تهتم بالخوارزميات؟

عندما تسمع عن الذكاء الاصطناعي، غالباً ما تتخيل خوارزميات معقدة وشيفرات برمجية غامضة. لكن الحقيقة التي يكتشفها كل ممارس حقيقي في هذا المجال هي أن الخوارزمية الجيدة ببيانات سيئة تنتج نتائج كارثية، بينما الخوارزمية البسيطة ببيانات ممتازة تنتج نتائج مذهلة. هذه ليست مبالغة، بل هي القاعدة الذهبية التي تحكم الصناعة بأكملها، ويعرفها المهندسون بعبارة قصيرة: Garbage In, Garbage Out — أي "إذا أدخلت قمامة، ستخرج قمامة".

لنأخذ مثالاً حقيقياً تعرفه جيداً: أنظمة التعرف على الوجوه. في عام 2018، اختبر باحثون من معهد ماساتشوستس للتكنولوجيا (MIT) ثلاثة أنظمة تجارية للتعرف على الوجوه، ووجدوا أن معدل الخطأ في التعرف على وجوه النساء ذوات البشرة الداكنة وصل إلى 34.7%، بينما كان معدل الخطأ في التعرف على وجوه الرجال ذوي البشرة الفاتحة أقل من 1%. لماذا هذا الفارق الصارخ؟ ليس لأن الخوارزمية كانت عنصرية، بل لأن بيانات التدريب كانت مكونة في الغالب من صور لرجال ذوي بشرة فاتحة. النموذج لم يتعلم أبداً التنوع الكافي، فكانت نتائجه سيئة مع أي وجه لا يشبه ما رآه في التدريب.

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

الدرس العملي: فحص مجموعة بيانات حقيقية لأسعار المنازل

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

افترض أن لديك ملفاً اسمه house_prices.csv بالمحتوى التالي:

price,size_sqft,bedrooms,bathrooms,age_years,location
250000,1200,3,2,15,suburb_a
320000,1500,3,2,10,suburb_b
180000,800,2,1,25,suburb_a
450000,2000,4,3,5,suburb_c
275000,1300,3,2,12,suburb_b
,1100,3,2,20,suburb_a
310000,1400,3,2,8,suburb_b
500000,2500,5,4,2,suburb_c
190000,750,2,1,30,suburb_a
9999999,3000,6,5,1,suburb_c
265000,1250,3,2,14,suburb_b
300000,1350,3,2,9,suburb_a

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

الخطوة 1: افتح الملف وافحصه بصرياً

أول خطوة دائماً هي فتح الملف في أي محرر نصوص أو برنامج جداول بيانات مثل Excel أو Google Sheets. لا تبدأ بأي تحليل معقد قبل أن ترى البيانات بعينيك. لاحظ أن الصف السادس يبدأ بفاصلة مباشرة: ,1100,3,2,20,suburb_a. هذا يعني أن قيمة price مفقودة. هذا ما نسميه قيمة ناقصة (Missing Value).

الآن انظر إلى الصف العاشر: 9999999,3000,6,5,1,suburb_c. سعر المنزل هنا 9,999,999 دولار — أي عشرة ملايين تقريباً. بينما أغلى منزل آخر في المجموعة هو 500,000 دولار. هذا الرقم شاذ تماماً. إما أنه خطأ إدخال (ربما كان المقصود 999,999 أو 399,999) أو أنه منزل استثنائي لا يمثل السوق. هذا ما نسميه قيمة شاذة (Outlier).

الخطوة 2: استخدم أداة تحليل سريعة

إذا كنت تستخدم Python (وهي اللغة الأكثر شيوعاً في مجال البيانات)، يمكنك استخدام مكتبة pandas لفحص الملف برمجياً. افتح الطرفية (Terminal) أو أي بيئة تطوير مثل Jupyter Notebook، وشغّل هذا الأمر:

import pandas as pd

df = pd.read_csv('house_prices.csv')
print(df.describe())
print("\nعدد القيم المفقودة في كل عمود:")
print(df.isnull().sum())

سيعطيك الأمر describe() إحصائيات وصفية لكل عمود رقمي: المتوسط، الانحراف المعياري، القيمة الدنيا، الربعيات، والقيمة القصوى. لاحظ أن القيمة القصوى لعمود price ستكون 9,999,999 بينما المتوسط سيكون مرتفعاً بشكل غير طبيعي بسبب هذه القيمة الشاذة. أما الأمر isnull().sum() فسيخبرك أن عمود price يحتوي على قيمة مفقودة واحدة.

الخطوة 3: قرر كيف تتعامل مع المشاكل

الآن لديك ثلاث مشاكل واضحة:

  • قيمة مفقودة في السعر (الصف 6): لديك خياران. الأول: حذف الصف بالكامل إذا كانت البيانات المفقودة قليلة (وهنا هي صف واحد من 12، أي 8% — مقبول). الثاني: تعبئة القيمة بمتوسط الأسعار أو بوسيطها (Median) إذا كان لديك سبب وجيه للاحتفاظ بالصف. في هذه الحالة، بما أن لدينا قيم شاذة ترفع المتوسط، فالأفضل استخدام الوسيط أو حذف الصف.
  • قيمة شاذة في السعر (الصف 10): هذا الرقم سيؤثر بشكل كبير على أي نموذج تدرّبه. إذا تركتها، سيتعلم النموذج أن المنازل يمكن أن تكلف 10 ملايين، مما سيجعله يبالغ في تقدير أسعار المنازل الكبيرة. الخيار الأكثر أماناً هو فحص ما إذا كانت هذه القيمة خطأ إدخال. إذا لم تستطع التأكد، فاحذف الصف أو استبدله بقيمة قريبة من الواقع (مثلاً 399,999 إذا كان هذا منطقياً لموقع suburb_c).
  • البيانات غير ممثلة للواقع: لاحظ أن جميع المنازل في suburb_a صغيرة وقديمة (800-1100 قدم مربع، 25-30 سنة)، بينما suburb_c يحتوي على منازل كبيرة وجديدة فقط. إذا كنت تريد نموذجاً يعمل على كل الأحياء، فأنت بحاجة إلى تنويع أكبر في البيانات. هذا نقص في التمثيل (Representation).

الخطوة 4: أعد بناء البيانات النظيفة

بعد اتخاذ القرارات، يجب أن تكون البيانات النظيفة شيئاً مثل هذا (بعد حذف الصف المفقود واستبدال القيمة الشاذة بـ 399,999):

price,size_sqft,bedrooms,bathrooms,age_years,location
250000,1200,3,2,15,suburb_a
320000,1500,3,2,10,suburb_b
180000,800,2,1,25,suburb_a
450000,2000,4,3,5,suburb_c
275000,1300,3,2,12,suburb_b
310000,1400,3,2,8,suburb_b
500000,2500,5,4,2,suburb_c
190000,750,2,1,30,suburb_a
399999,3000,6,5,1,suburb_c
265000,1250,3,2,14,suburb_b
300000,1350,3,2,9,suburb_a

لاحظ أننا الآن فقدنا صفاً واحداً، لكن البيانات أصبحت أكثر اتساقاً. المتوسط الجديد لسعر المنزل سيكون حوالي 312,000 دولار بدلاً من الرقم المشوه الذي كان سيتجاوز المليون بسبب القيمة الشاذة.

كيف تؤثر هذه المشاكل على نموذج الذكاء الاصطناعي؟

لنفترض أنك درّبت نموذج انحدار خطي (Linear Regression) على البيانات الأصلية الملوثة. ماذا سيحدث؟

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

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

نصيحة الخبراء

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

الأخطاء الشائعة التي يقع فيها المبتدئون

الأخطاء الشائعة

  • تجاهل القيم المفقودة تماماً: بعض المبتدئين يحذفون أي صف يحتوي على قيمة مفقودة دون تفكير. هذا مقبول إذا كانت النسبة صغيرة (أقل من 5%)، لكنه كارثي إذا كانت كبيرة لأنك ستفقد كمية هائلة من المعلومات.
  • الخلط بين القيمة الشاذة والخطأ: ليست كل قيمة شاذة خطأ. أحياناً تكون القيمة الشاذة حقيقية (مثل منزل فاخر جداً). يجب أن تفحص السياق قبل الحذف. اسأل نفسك: هل هذه القيمة ممكنة في الواقع؟
  • التحقق من البيانات بعد التدريب وليس قبله: إذا لاحظت أن نموذجك يعطي نتائج غير منطقية، فارجع إلى البيانات أولاً. في 90% من الحالات، المشكلة في البيانات وليس في الخوارزمية.
  • عدم توثيق قرارات التنظيف: عندما تحذف صفاً أو تعدل قيمة، يجب أن تكتب السبب. بعد شهر، سينسى الجميع لماذا تم هذا التعديل، وستجد صعوبة في تكرار النتائج أو شرحها للآخرين.

الممارسة المطلوبة (أقل من 15 دقيقة)

خذ الملف الأصلي house_prices.csv الذي عرضناه في بداية الدرس، وقم بالآتي:

  1. افتح الملف في Excel أو Google Sheets أو أي محرر نصوص.
  2. حدد جميع القيم المفقودة والقيم الشاذة في جميع الأعمدة (ليس فقط price). انظر إلى عمود size_sqft — هل توجد قيم غير منطقية؟ ماذا عن bedrooms؟
  3. اكتب قائمة بثلاث مشاكل على الأقل وجدتها، ولكل مشكلة اكتب القرار الذي ستتخذه (حذف، تعديل، تعبئة) مع ذكر السبب.
  4. طبّق قراراتك وأنشئ ملفاً نظيفاً جديداً باسم house_prices_clean.csv.
  5. التحقق الذاتي: احسب متوسط سعر المنزل في الملف النظيف. إذا كان بين 250,000 و350,000 دولار، فأنت على الأرجح قمت بعمل صحيح. إذا كان أقل من 200,000 أو أكثر من 500,000، فارجع وتحقق من قراراتك — ربما أبقيت على القيمة الشاذة أو حذفت الكثير من البيانات.

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

جاري تحميل التقييمات...