• 0
E.Ali

كيف تطبيق cross validation لاختبار كفاءة البرنامج

سؤال

السلام عليكم ورحمة الله وبركاته اخوتي الكرام

لدي مشروع عمل تصنيف لخادم ايميل بحيث انه يقوم بإعطاء الاولوية للرسائل التي تحتاج رد وايضا ينبه المستخدم اذا تم نسيان ارفاق المرفقات اذا الايميل يحتاج ذلك من خلال فهم محتوى الايميل

والمطلوب هو انه تم عمل البرنامج ولله الحمد لكن تبقى كيفية عمل cross validation على برنامجي لاني صراحة طلبه مني المشرف وانا طالب واتعلم ولا سبق ان قمت به وقرأت عنه لكن اعرف اني اكتب في منتدى كرام لن يبخلوا علي بأي نصيحه.

انا استخدم Enron corpus (عدد كبير من الايميلات للاختبار) لاختبار برنامجي ومن قرائتي فهمت ان اقسم مجموعة الايميلات التي سوف اعمل عليه اختبار الى اقسام واقارن بينها لكن ماهي الالية بالضبط وارجو منكم اخوتي في الله تزويدي بمصادر ومامعنى cross validation بالعربي لكي اتوسع بالبحث.

آسف على الاطاله ولكن والله ضيق الوقت اجبرني على ارهاقكم قليلا بسؤالي واشكر لكم رحابة صدوركم

اخوكم/ علي

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

6 إجابة على هذا السؤال .

  • 0

السلام عليكم ..

  1. المعلوامات الواردة في المشاركة هي جهد شخصي قد يحوي على معلومات غير دقيقة ..
  2. اعتقد أن الــ Corpus الخاصة بالايميلات هي مصنفة بشكل مسبق (أنت مسبقا لديك الايميل و تعرف أنه هل يحتاج إلى رد أو إلى مرفقات أو ..) أي أنك تقوم بــ classification.
  3. هذه الـ corpus تسمي العينة sample أو مجموعة البيانات data set ..
  4. يتم إدخال هذه الإيميلات إلى الخوارزمية التي تتعلم learning كيف يتم تصنيف الايميلات ... يعني باختصار تم بناء الـ Model .. أو (الشبكة العصبونية) .. (ما نوع الموديل هل هو HMM) .
  5. الـ Cross-Validation رابط ويكيبيديا ملف pdf طريقة احصائية تستخدم لقياس دقة الموديل (الذي قمت ببرمجته) , و يوجد عدة أنواع منه :
    1. K-fold cross-validation : يتم تقسيم العينة بشكل عشوائي إلى K جزء متساوي , و يتم اختيار جزء واحد لاختبار الموديل testing و الــ k -1 جزء الباقية تستخدم لتدريب الموديل training و يتم تكرار ذلك k مرة , بحيث نغطي كل الأجزاء , و نوجدنتيجة الأختبار في كل مرة , ثم يتم دمج النتائج كلها في نتيجة واحدة ..
    2. الـــ two-fold cross-validation : حالة خاصة من النوع السابق حيث k =2 أي جزء من البيانات يستخدم للتدريب و الآخر للإختبار ثم العكس ..
    3. Repeated random sub-sampling validation و الــ Leave-one-out cross-validation .... الشرح على الويكيبيديا .
    4. Measures of fit : أي حساب جودة و دقة الموديل .. و هو الأهم .. و يعتمد على طريقة عمل الموديل :
      1. إذا كانت النتائج ثنائية أي أما الموديل يقوم بتصنيف الإيميل بشكل صحيح تماما أو خطأ تماما .. عندها نحسب القيمة التنبؤية الإيجابية (Positive predictive value) نسميه في نظم المعلومات بالــ precision .. (مثلا عدد الأيميلات التي تم تصنيفها (بشكل صحيح) أنها بحاجة لمرفقات \ العدد الكلي للايميلات التي هي فعلا بحاجة لمرفقات ) (لأن الموديل قد يقول أن الايميل ليس بحاجة لمرفقات و هو حقيقة بحاجة لمرفقات) , (و عندك أيضا الــ recall و منهما نحسب الــ f-measure).
      2. إذا كانت النتائج متدرجة أي ان الموديل يقوم بتصنيف الإيميل بشكل صحيح بنسبة 60 % مثلا أو بحاجة لمرفقات بنسبة 30% مثلا.. عندها نحسب mean squared error, root mean squared error median absolute deviation .

دعك من هذه المقدمة النظرية و إليك المفيد :

  1. يجب نقل الموضوع إلى قسم الرياضيات و اطرح موضوعك في منتدى الإحصائيون العرب .
  2. يعتبر القيام بهذه الحسابات صعبا على غير المتخصصين بالاحصاء , لذلك يوجد مكاتب و محللين إحصائيين يقومون بهذا العمل للطلاب (بشكل مأجور طبعا) ..حيث يتم إفراغ الاستمارات و استخدام برامج احصائية تعطي النتائج فورا مثل الــ SPSS .. و تحسب معاملات الــ fit و الــ goodness و الــ error و الخ

تم تعديل بواسطه houssam11350_11350
0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

الف الف شكر اخوي العزيز حسام والله لا أنسى ماكتبت واشكرك مرة اخرى

اخي الكريم انا برنامجي استخدمت فيه nBayes algorithm بلغة #c وعملت عليه اختبار بطريقة true,false positive و true, false negative واخرجت النتائج مع الدقه لكن المشرف أبى الا ان استخدم هذه الطريقه cross validation.

مما فهمته انه يجب علي اختيار 200 ايميل على سبيبل المثال واقسمها على عشرين عشرين واعتبر كل عشرين عباره عن k و اختار واحده للتدريب والباقيات للاختبار ؟؟ هل هذا صحيح

وايضا مافائدة عمل ذلك هل يوجد فرق بينها وبين طريقتي التي عملتها true,false positive و true, false negative ؟؟

وصراحه هو مشروع تخرج للماجستير ولا اريد ان اقحم نفسي بمشاكل اذا اسندت هذا العمل لجهه تجاريه

اشكر لك رحابة صدرك ياعزيزي واسف على الاطاله واتمنى الاجابة على اسئلتي فضلا لا امرا ..

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

السلام عليكم ..

  1. لا شكر على واجب أخي الكريم .
  2. مما فهمته انه يجب علي اختيار 200 ايميل على سبيبل المثال واقسمها على عشرين عشرين واعتبر كل عشرين عباره عن k و اختار واحده للتدريب والباقيات للاختبار ؟؟ هل هذا صحيح
    نعم صحيح و لكن تكرر العملية 10 مرات (أخذت k=10) و في كل مرة تأخذ عشرين مختلفة (لكن هنا سؤال , هل في كل مرة تعيد التقسم أم لا ؟؟؟ لا أعرف .. ) و تخرج النتائج من كل تكرار (و يفضل ان تضع جدول النتائج لكل مرحلة في نص الأطروحة عند كتابتها ) ثم توجد النتيجة النهائية من النتائج الجزئية ..اعتقد انه يمكنك حساب المتوسط ...اي
    Precession = (Precession1 + Precession2 +..+Precession 10)/10

    و لا اعرف هل انت بحاجة للإنحراف المعياري أم لا ...

  3. وايضا مافائدة عمل ذلك هل يوجد فرق بينها وبين طريقتي التي عملتها true,false positive و true, false negative ؟؟
    هذه الطريقة تضمن أن كل عنصر في البيانات (ايميل) تم استخدامه في التدريب و الاختبار ..و لكن طريقتك لم تحدد كيف قمت باختيار الأيميلات في التدريب و الاختبار .. هل بشكل عشوائي ..
  4. اشكر لك رحابة صدرك ياعزيزي واسف على الاطاله واتمنى الاجابة على اسئلتي فضلا لا امرا ..
    لا شكر على واجب .. و لن نبخل بأي معلومات نعرفها .. بالتوفيق ..

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

اشكر لكي اخي حسام رحابة صدرك ومساعدتك جعلها الله في موازين اعمالك

اخوي لدي استفسار اخر من فضلك :

1- انه اذا اردت عمل الcross-validation هل تتم يدويا بمعنى انني اذا قمت باخذ 100 ايميل عشوائيا لاختبار برنامجي هل اقوم بنسخ الايميلات واختبارها في خادم الايميل لدي يدويا او يتم عملها عن طريق برنامج معين.

2- وضح لي لو تكرمت ماهي ال Precession و Recall.

وفي الختام اكرر شكري وعرفاني لك اخي الكريم

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

السلام عليكم ....

  1. نه اذا اردت عمل الcross-validation هل تتم يدويا بمعنى انني اذا قمت باخذ 100 ايميل عشوائيا لاختبار برنامجي هل اقوم بنسخ الايميلات واختبارها في خادم الايميل لدي يدويا او يتم عملها عن طريق برنامج معين.
    ممكن أن تأخذ الطريقة التي تناسبك ... المهم ان يتم إدخال الأيميلات إلى الخوارزمية سواء كانت هذه الإيميلات موجودة على الخادم او في ملفات نصية أو في قاعدة بيانات عادية ... و ان نأخذ قسم منها للتدريب و قسم لاختبار الخوارزمية كما قلنا ..و لا معلومات عندي عن برامج مساعدة ..
  2. Precession : و يمثل معامل الدقة ...و التوضيح بمثال ..
    1. نفرض لدينا قاعدة بيانات فيها الإيميلات و المطلوب من الخوارزمية تصنيف الإيميلات التي هي بحاجة لمرفقات ..
    2. بعد تشغيل الخوارزمية وجدنا أن الخوارزمية قامت بتحديد 30 إيميل على أنها تحتاج إلى مرفقات .
    3. تم جلب خبراء الأيميلات و فحصوا الإيميلات كلها و وجدوا :
      1. فقط 20 ايميل من هذه الــ 30 هي فعلا تحتاج لمرفقات . true Positive
      2. الــ 10 الباقية من الــ 30 فلا تحتاج لمرفقات و لكن الخوارزمية أخطأت بها .. false positive
      3. وجدوا أن هناك 40 إيميل في قاعدة البيانات هي بحاجة فعلا لمرفقات و لكن الخوارزمية صنفتها انها ليست بحاجة لمرفقات (الخوارمية أخطأت) . false negative
      4. إذا يوجد 60 إيميل هي فعلا بحاجة لمرفقات ..
      5. يكون الــ Precession = 20/30 و يكون recall = 20/60
      6. أي بالتعريف يكون precession هو عدد الأيميلات التي هي فعلا تحتاج لمرفقات و تم تصنيفها على انها تحتاج لمرفقات مقسوما على عدد الأيميلات التي قالت الخوارزمية أنها تحتاج لمرفقات .
        precession = true positive / (true positive + false positive)

      7. الــ recall (لنقل أنه معامل الإعادة) هو عدد الإيميلات التي هي فعلا تحتاج لمرفقات و تم تصنيفها على انها تحتاج لمرفقات مقسوما على عدد الأيميلات التي هي فعلا تحتاج لمرفقات .
        recall = true positive / (true positive + false negative)
        1. خبراء الأيميلات يسمون بــ external judgment أو Human judgment , و إذا لم تكن الإيميلات لديك مصنفة يمكن عرضها على مجموعة من المحكمين الخارجيين (خبراء الإيميلات) التي نعتبرها المرجع و نقارن نتائج الخوارزمية بتصنيف المحكمين .

[*]يكون الــ

 f-measure = 2 * precesion * recall / (precession + recall)

[*]أحيانا يتم استخدام مصطلحات مثل relevant و retrieved .[*]رابط ويكيبيديا[*]صورة توضيحية : 220px-Recall-precision.svg.png

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

قد يمكن لاخونا الاستفادة من أداة الويكا في عمل الـ cross validation

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

من فضلك سجل دخول لتتمكن من التعليق

ستتمكن من اضافه تعليقات بعد التسجيل



سجل دخولك الان

  • يستعرض القسم حالياً   0 members

    لا يوجد أعضاء مسجلين يشاهدون هذه الصفحة .