5

कैसे कोज्या समानता (http://en.wikipedia.org/wiki/Cosine_similarity)कोसाइन समानता जब वैक्टर में से एक सब शून्य

जब वैक्टर में से एक सब शून्य है व्यक्त करने के लिए है?

v1 = [1, 1, 1, 1, 1]

वी 2 = [0, 0, 0, 0, 0]

जब हम क्लासिक सूत्र के अनुसार गणना हम प्रभाग द्वारा प्राप्त शून्य:

Let d1 = 0 0 0 0 0 0 
Let d2 = 1 1 1 1 1 1 
Cosine Similarity (d1, d2) = dot(d1, d2)/||d1|| ||d2||dot(d1, d2) = (0)*(1) + (0)*(1) + (0)*(1) + (0)*(1) + (0)*(1) + (0)*(1) = 0 

||d1|| = sqrt((0)^2 + (0)^2 + (0)^2 + (0)^2 + (0)^2 + (0)^2) = 0 

||d2|| = sqrt((1)^2 + (1)^2 + (1)^2 + (1)^2 + (1)^2 + (1)^2) = 2.44948974278 

Cosine Similarity (d1, d2) = 0/(0) * (2.44948974278) 
          = 0/0 

मैं क्लस्टरिंग एप्लिकेशन में इस समानता माप का उपयोग करना चाहता हूं। और मुझे अक्सर ऐसे वैक्टरों की तुलना करने की आवश्यकता होगी। भी [0, 0, 0, 0, 0] बनाम [0, 0, 0, 0, 0]

क्या आपके पास कोई अनुभव है? चूंकि यह एक समानता (दूरी नहीं) माप है क्योंकि मुझे

डी ([1, 1, 1, 1, 1]; [0, 0, 0, 0, 0]) = 0 के लिए विशेष केस का उपयोग करना चाहिए

घ ([0, 0, 0, 0, 0]; [0, 0, 0, 0, 0]) = 1

क्या

के बारे में

घ ([1, 1, 1 , 0, 0]; [0, 0, 0, 0, 0]) =? आदि

उत्तर

8

आप 0 वैक्टर है, तो कोज्या आपके आवेदन के लिए गलत समानता कार्य है।

कोसाइन दूरी अनिवार्य रूप से L_2 सामान्यीकृत डेटा पर वर्ग यूक्लिडियन दूरी के बराबर है। अर्थात। आप प्रत्येक वेक्टर को इकाई लंबाई 1 में सामान्यीकृत करते हैं, फिर स्क्वायर यूक्लिडियन दूरी की गणना करें।

कोसाइन का अन्य लाभ प्रदर्शन है - इसे पर कंप्यूटिंग करना बहुत दुर्लभ, उच्च-आयामी डेटा यूक्लिडियन दूरी से तेज़ है। यह केवल रैखिक न केवल वर्ग से वर्ग तक लाभान्वित होता है।

जबकि आप स्पष्ट रूप से शून्य होने पर समानता को हैक करने की कोशिश कर सकते हैं, और जब वे समान होते हैं, तो यह समस्याओं के अंतर्गत वास्तव में हल नहीं करेगा।

आप आसानी से गणना कर सकते हैं कि दूरी से दूरी का चयन न करें।

इसके बजाय, इस डेटा को का अर्थ है आपके डेटा पर। यदि मान अनिर्धारित है, तो आपके पास कोई अर्थ नहीं है ...

कभी-कभी, यह लगातार 0 डेटा को अर्थहीन डेटा के रूप में छोड़ने के लिए काम कर सकता है (उदाहरण के लिए ट्विटर शोर का विश्लेषण करना, और एक ट्वीट देखना जो सभी संख्या है, शब्द नहीं हैं)। कभी-कभी ऐसा नहीं होता है।

1

यह अनिर्धारित है।

सोचें कि आपके पास वेक्टर सी है जो आपके शून्य वेक्टर में शून्य नहीं है। इसे epsilon> 0 से गुणा करें और epsilon को शून्य पर चलाएं। नतीजा सी पर निर्भर करेगा, इसलिए जब वेक्टर में से एक शून्य होता है तो फ़ंक्शन निरंतर नहीं होता है।

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