سؤال

أنا باستخدام السذاجة Bayes المصنف تصنيف عدة آلاف الوثائق إلى 30 فئات مختلفة.لقد نفذت ساذجة Bayes المصنف ، مع ميزة اختيار (في الغالب تصفية الكلمات عديمة الفائدة) ، لقد حصلت على حوالي 30% اختبار دقة مع 45% دقة التدريب.هذا هو أفضل بكثير من العشوائية ، ولكن أريد أن يكون أفضل.

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

هل كانت مفيدة؟

المحلول

في تجربتي, مدربين السذاجة Bayes المصنفات عادة بشكل مدهش دقيق (و سريع جدا لتدريب--أسرع بشكل ملحوظ من أي المصنف-باني لدي everused).

حتى عندما كنت ترغب في تحسين المصنف التنبؤ ، يمكنك البحث في عدة أماكن:

  • ضبط المصنف (ضبط المصنف الانضباطي المعاملات);

  • تطبيق نوع من المصنف الجمع بين تقنية (على سبيل المثال ، ensembling, زيادة, التعبئة);أو يمكنك

  • انظر البيانات بنك الاحتياطي الفيدرالي إلى المصنف-إما إضافة المزيد من البيانات ، تحسين الخاص بك الأساسية تحليل أو تحسين الميزات التي يمكنك الاختيار من البيانات.

w/r/t السذاجة بايزي من المصنفات ، المعلمة ضبط محدودة ؛ أوصي إلى التركيز على البيانات الخاصة بك--أي نوعية من قبل ومعالجة ميزة التحديد.

I.البيانات تحليل (قبل المعالجة)

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

  • النابعة:إما يدويا أو باستخدام النابعة المكتبة ؟ شعبية مفتوحة المصدر منها بورتر, Lancaster, و كرة الثلج.لذلك سبيل المثال ، إذا كان لديك شروط مبرمج, برنامج, progamming, المبرمجة في أي نقطة من نقاط البيانات ، stemmer سيتم الحد منها إلى واحد الجذعية (ربما البرنامج) حتى مصطلح ناقل البيانات النقطة سوف يكون لها قيمة 4 ميزة البرنامج ، الذي هو ربما ما تريد.

  • إيجاد مرادف:نفس فكرة نابعة--أضعاف ذات الكلمات إلى كلمة واحدة;حتى مرادف مكتشف يمكن تحديد مطور, مبرمج ، المبرمج و مهندس البرمجيات ولفة لهم في فترة واحدة

  • الكلمات المحايدة:الكلمات مع ترددات مشابهة عبر دروس جعل الفقراء الميزات


II.ميزة اختيار

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

III.محددة المصنف التحسينات

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

طريقة فيشر (على الأرجح الطريقة الأكثر شيوعا لتحسين ساذجة Bayes المصنف.) بالنسبة لي ، أعتقد من فيشر تطبيع (أكثر بشكل صحيح ، توحيد) الإدخال الاحتمالات NBC يستخدم ميزة الاحتمالات لبناء 'كامل الوثيقة' احتمال.طريقة فيشر بحساب احتمال من فئة كل ميزة من الوثيقة ثم يجمع هذه الميزة الاحتمالات ويقارن ذلك جنبا إلى جنب مع احتمال احتمال من مجموعة عشوائية من الميزات.

نصائح أخرى

أود أن أقترح استخدام أ SGDClassifier كما في هذه وضبطه من حيث قوة التنظيم.

حاول أيضًا ضبط الصيغة في TFIDF التي تستخدمها عن طريق ضبط معلمات tfifvectorizer.

  • عادة ما أرى ذلك لمشاكل تصنيف النص SVM أو التراجع اللوجستي عند تدريب واحد مقابل كل شيء يتفوق على NB. كما ترون في هذا المقال الجميل لأشخاص ستانفورد للحصول على مستندات أطول SVM يتفوق على nb. رمز الورقة التي تستخدم مجموعة من SVM و NB (NBSVM) هو هنا.

  • ثانياً ، قم بضبط صيغة TFIDF الخاصة بك (مثل TF Sublinear ، Smooth_idf).

  • تطبيع العينات الخاصة بك مع تطبيع L2 أو L1 (الافتراضي في TFIDFVectorization) لأنها تعوض عن أطوال المستند المختلفة.

  • متعدد الطبقات المستقبلات, ، عادة ما تحصل على نتائج أفضل من NB أو SVM بسبب عدم الخطية المقدمة والتي هي متأصلة في العديد من مشاكل تصنيف النص. لقد قمت بتطبيق واحد متوازي للغاية باستخدام theano/lasagne وهو سهل الاستخدام وقابل للتنزيل هنا.

  • حاول قم بضبط تنظيم L1/L2/locknet. إنه يحدث فرقًا كبيرًا في SGDClassifier/SVM/الانحدار اللوجستي.

  • حاول استخدام n-grams وهو قابل للتكوين في TFIDFVectorizer.

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

  • النظر في استخدام طول المستند كميزة (على سبيل المثال عدد الكلمات أو الأحرف).

  • فكر في استخدام المعلومات الوصفية حول المستند (على سبيل المثال وقت الإنشاء ، اسم المؤلف ، عنوان URL للوثيقة ، إلخ).

  • حديثاً فيسبوك نشر لهم رمز تصنيف FastText الذي يؤدي بشكل جيد للغاية عبر العديد من المهام ، تأكد من تجربتها.

باستخدام تصحيح لابلاسيان جنبا إلى جنب مع adaboost.

في Adaboost ، يتم تعيين الوزن أولاً لكل tuple في مجموعة بيانات التدريب. يتم تعيين الأوزان العميقة باستخدام init_weights الطريقة التي تهيئة كل وزن لتكون 1/d, ، أين d هو حجم مجموعة بيانات التدريب.

ثم generate_classifiers الطريقة تسمى ، والتي تعمل k مرات ، خلق k مثيلات مصنف ساذج بايز. ثم يتم تخصيص هذه المصنفات ، ويتم تشغيل بيانات الاختبار على كل مصنف. مجموع "الأصوات" المرجحة من المصنفات يشكل التصنيف النهائي.

الحفاظ على حجم N صغير أيضًا جعل NB لإعطاء نتيجة عالية الدقة. وعلى قلبه ، حيث يزيد حجم N من تدهور دقة ،

حدد الميزات التي لها علاقة أقل بينهما. وحاول استخدام مجموعة مختلفة من الميزات في وقت واحد.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top