2016-02-12 11 views
5

अजीब बात यह है कि यह फिट और partial_fit के लिए बिल्कुल वही कोड प्रतीत होता है।sklearn LatentDirichletAllocation के फिट और आंशिक_फिट का परिणाम अलग-अलग परिणाम क्यों देता है?

आप नीचे दिए गए लिंक पर कोड देख सकते हैं:

https://github.com/scikit-learn/scikit-learn/blob/c957249/sklearn/decomposition/online_lda.py#L478

उत्तर

5

नहीं बिल्कुल एक ही कोड; partial_fittotal_samples उपयोग करता है:

" total_samples:।। Int, वैकल्पिक (डिफ़ॉल्ट = 1E6) दस्तावेज़ों की कुल संख्या partial_fit विधि में केवल इस्तेमाल किया"

https://github.com/scikit-learn/scikit-learn/blob/c957249/sklearn/decomposition/online_lda.py#L184

(आंशिक रूप से फिट) https://github.com/scikit-learn/scikit-learn/blob/c957249/sklearn/decomposition/online_lda.py#L472

(फिट) https://github.com/scikit-learn/scikit-learn/blob/c957249/sklearn/decomposition/online_lda.py#L510

बस के मामले में यह अपनी ब्याज की है: partial_fit एक अच्छे उम्मीदवार है इस्तेमाल किया जा रहा है जब भी आपके डेटासेट वास्तव में वास्तव में बड़ा है। तो, संभवतः मेमोरी समस्याओं में चलने की बजाय आप छोटे बैचों में अपना फिटिंग करते हैं, जिसे वृद्धिशील सीखने कहा जाता है।

तो, आपके मामले में आपको यह ध्यान रखना चाहिए कि total_samples डिफ़ॉल्ट मान 1000000.0 है। इसलिए, यदि आप इस नंबर को नहीं बदलते हैं और नमूने की आपकी वास्तविक संख्या बड़ी है तो आपको fit विधि और fit_partial से अलग-अलग परिणाम मिलेंगे। या शायद यह मामला हो सकता है कि आप fit_partial में मिनी-बैचों का उपयोग कर रहे हैं और fit विधि को प्रदान किए गए सभी नमूनों को कवर नहीं करते हैं। और अगर आप इस अधिकार करते हैं, आप भी अलग परिणाम, के रूप में दस्तावेज में कहा गया है हो सकता है:।

  • "वृद्धिशील शिक्षार्थी ही नए/अनदेखी लक्ष्य वर्गों के साथ सामना करने में असमर्थ हो सकता है इस मामले में आप के लिए है में कक्षाओं = पैरामीटर का उपयोग करके सभी संभावित वर्गों को पहले partial_fit कॉल में पास करें। "
  • "[...] एक उचित एल्गोरिथ्म चुनने कि उन सभी को समय के साथ प्रत्येक उदाहरण पर एक ही महत्व डाल नहीं है [...]"

sklearn प्रलेखन: http://scikit-learn.org/stable/modules/scaling_strategies.html#incremental-learning

संबंधित मुद्दे