निकटवर्ती घटकों का विश्लेषण: Difference between revisions

From Vigyanwiki
No edit summary
No edit summary
 
(7 intermediate revisions by 6 users not shown)
Line 1: Line 1:
{{Machine learning bar}}
'''निकटवर्ती घटकों का विश्लेषण''' [[सांख्यिकीय वर्गीकरण]] के लिए सुपरवाईस्ड लर्निंग की विधि है जो डेटा पर दिए गए [[मीट्रिक (गणित)|'''मापन (गणित)''']] के अनुसार अलग-अलग वर्गों में बहुभिन्नरूपी सांख्यिकी डेटा को विभाजित करता है। अतः कार्यात्मक रूप से, यह '''''K'''''-निकटतम निकटवर्तीय एल्गोरिदम के समान उद्देश्यों को पूर्ण करता है, और ''प्रसंभाव्य निकटतम निकटवर्तीय'' नामक संबंधित अवधारणा का प्रत्यक्ष उपयोग करता है।
निकटवर्ती घटकों का विश्लेषण [[सांख्यिकीय वर्गीकरण]] के लिए पर्यवेक्षित सीखने की विधि है जो डेटा पर दिए गए [[मीट्रिक (गणित)|मापन (गणित)]] के अनुसार अलग-अलग वर्गों में बहुभिन्नरूपी सांख्यिकी डेटा को विभाजित करता है। कार्यात्मक रूप से, यह K-निकटतम निकटवर्तीय एल्गोरिदम के समान उद्देश्यों को पूर्ण करता है, और ''प्रसंभाव्य निकटतम निकटवर्तीय'' नामक संबंधित अवधारणा का प्रत्यक्ष उपयोग करता है।


== परिभाषा ==
== परिभाषा ==
निकटवर्ती के घटकों के विश्लेषण का उद्देश्य इनपुट डेटा के रैखिक परिवर्तन को ढूंढकर दूरी मापन सीखना है ताकि औसत लीव-वन-आउट (एलओओ) वर्गीकरण निष्पादन परिवर्तित स्थान में अधिकतम हो। एल्गोरिदम की मुख्य अंतर्दृष्टि यह है कि परिवर्तन के अनुरूप एक आव्यूह <math>A</math> को <math>A</math> के लिए एक अलग उद्देश्य फलन को परिभाषित करके पाया जा सकता है, इसके बाद संयुग्मित प्रवणता अवरोहण जैसे पुनरावृत्त हलकर्ता का उपयोग किया जा सकता है। इस एल्गोरिथ्म का एक लाभ यह है कि वर्ग <math>k</math>की संख्या को एक अदिश स्थिरांक तक <math>A</math> के फलन के रूप में निर्धारित किया जा सकता है। इसलिए, एल्गोरिदम का यह उपयोग [[मॉडल चयन]] के समस्या को संबोधित करता है।
इस प्रकार से निकटवर्ती के घटकों के विश्लेषण का उद्देश्य इनपुट डेटा के रैखिक परिवर्तन को ढूंढकर दूरी मापन सीखना है ताकि औसत लीव-वन-आउट (एलओओ) वर्गीकरण निष्पादन परिवर्तित स्थान में अधिकतम हो। अतः एल्गोरिदम की मुख्य अंतर्दृष्टि यह है कि परिवर्तन के अनुरूप एक आव्यूह <math>A</math> को '''<math>A</math>''' के लिए एक अलग उद्देश्य फलन को परिभाषित करके पाया जा सकता है, इसके बाद संयुग्मित प्रवणता अवरोहण जैसे पुनरावृत्त हलकर्ता का उपयोग किया जा सकता है। इस एल्गोरिदम का एक लाभ यह है कि वर्ग <math>k</math> की संख्या को एक अदिश स्थिरांक तक <math>A</math> के फलन के रूप में निर्धारित किया जा सकता है। इसलिए, एल्गोरिदम का यह उपयोग [[मॉडल चयन]] के समस्या को संबोधित करता है।


== स्पष्टीकरण ==
== स्पष्टीकरण ==
<math>A</math> को परिभाषित करने के लिए, हम परिवर्तित स्थान में वर्गीकरण यथार्थता का वर्णन करने वाले एक उद्देश्य फलन को परिभाषित करते हैं और <math>A^*</math> को निर्धारित करने का प्रयास करते हैं ताकि यह उद्देश्य फलन अधिकतम हो।
इस प्रकार से <math>A</math> को परिभाषित करने के लिए, हम परिवर्तित स्थान में वर्गीकरण यथार्थता का वर्णन करने वाले एक उद्देश्य फलन को परिभाषित करते हैं और <math>A^*</math> को निर्धारित करने का प्रयास करते हैं ताकि यह उद्देश्य फलन अधिकतम हो।


<math>A^* = \mbox{argmax}_A f(A)</math>
<math>A^* = \mbox{argmax}_A f(A)</math>
=== लीव-वन-आउट (एलओओ) वर्गीकरण ===
=== लीव-वन-आउट (एलओओ) वर्गीकरण ===
किसी दिए गए दूरी मापन के साथ उसके <math>k</math>-निकटतम निकटवर्तीय की सहमति से एकल डेटा बिंदु के वर्ग लेबल की भविष्यवाणी करने पर विचार करें। इसे लीव-वन-आउट वर्गीकरण के रूप में जाना जाता है। यद्यपि, सभी बिंदुओं को एक रैखिक परिवर्तन से गुज़रने के बाद निकटतम-निकटवर्तीय <math>C_i</math> का समूह अत्यधिक भिन्न हो सकता है। विशेष रूप से, किसी बिंदु के लिए निकटवर्तीय का समूह <math>A</math> के अवयवों में सुचारू परिवर्तनों के उत्तर में अलग-अलग परिवर्तनों से गुजर सकता है, जिसका अर्थ है कि किसी बिंदु के निकटवर्तीय के आधार पर कोई भी उद्देश्य फलन <math>f(\cdot)</math> टुकड़े-टुकड़े-स्थिर होगा, और इसलिए अलग-अलग नहीं होगा।
अतः किसी दिए गए दूरी मापन के साथ उसके <math>k</math>-निकटतम निकटवर्तीय की सहमति से एकल डेटा बिंदु के वर्ग लेबल की भविष्यवाणी करने पर विचार करें। इसे लीव-वन-आउट वर्गीकरण के रूप में जाना जाता है। यद्यपि, सभी बिंदुओं को एक रैखिक परिवर्तन से गुज़रने के बाद निकटतम-निकटवर्तीय <math>C_i</math> का समूह अत्यधिक भिन्न हो सकता है। इस प्रकार से विशेष रूप से, किसी बिंदु के लिए निकटवर्तीय का समूह <math>A</math> के अवयवों में सुचारू परिवर्तनों के उत्तर में अलग-अलग परिवर्तनों से गुजर सकता है, जिसका अर्थ है कि किसी बिंदु के निकटवर्तीय के आधार पर कोई भी उद्देश्य फलन <math>f(\cdot)</math> टुकड़े-टुकड़े-स्थिर होगा, और इसलिए अलग-अलग नहीं होगा।


=== हल ===
=== हल ===
हम [[स्टोकेस्टिक ग्रेडिएंट डिसेंट|प्रसंभाव्य प्रवणता अवरोहण]] से प्रेरित दृष्टिकोण का उपयोग करके इस जटिलता को हल कर सकते हैं। एलओओ-वर्गीकरण में प्रत्येक परिवर्तित बिंदु पर <math>k</math>-निकटतम निकटवर्तीय पर विचार करने के अतिरिक्त, हम संपूर्ण रूपांतरित डेटा समूह को प्रसंभाव्य निकटतम निकटवर्तीय के रूप में मानेंगे। हम किसी दिए गए एलओओ-वर्गीकरण बिंदु और रूपांतरित स्थान में दूसरे बिंदु के बीच वर्गित [[यूक्लिडियन दूरी]] के [[सॉफ्टमैक्स सक्रियण फ़ंक्शन|सॉफ्टमैक्स सक्रियण फलन]] का उपयोग करके इन्हें परिभाषित करते हैं:
अतः हम [[स्टोकेस्टिक ग्रेडिएंट डिसेंट|प्रसंभाव्य प्रवणता अवरोहण]] से प्रेरित दृष्टिकोण का उपयोग करके इस जटिलता को हल कर सकते हैं। इस प्रकार से एलओओ-वर्गीकरण में प्रत्येक परिवर्तित बिंदु पर <math>k</math>-निकटतम निकटवर्तीय पर विचार करने के अतिरिक्त, हम संपूर्ण रूपांतरित डेटा समूह को प्रसंभाव्य निकटतम निकटवर्तीय के रूप में मानेंगे। हम किसी दिए गए एलओओ-वर्गीकरण बिंदु और रूपांतरित स्थान में दूसरे बिंदु के बीच वर्गित [[यूक्लिडियन दूरी]] के [[सॉफ्टमैक्स सक्रियण फ़ंक्शन|सॉफ्टमैक्स सक्रियण फलन]] का उपयोग करके इन्हें परिभाषित करते हैं:


<math>p_{ij} =
<math>p_{ij} =
Line 22: Line 21:
</math>
</math>


डेटा बिंदु <math>i</math> को ठीक रूप से वर्गीकृत करने की प्रायिकता उसके प्रत्येक निकटवर्ती बिंदु को समान वर्ग <math>C_i</math> के साथ वर्गीकृत करने की प्रायिकता है::
डेटा बिंदु <math>i</math> को ठीक रूप से वर्गीकृत करने की प्रायिकता उसके प्रत्येक निकटवर्ती बिंदु को समान वर्ग <math>C_i</math> के साथ वर्गीकृत करने की प्रायिकता है:


<math>p_i = \sum_{j \in C_i} p_{ij} \quad </math> जहाँ <math>p_{ij}</math> बिंदु <math>i</math> के निकटवर्ती <math>j</math> को वर्गीकृत करने की प्रायिकता है।
<math>p_i = \sum_{j \in C_i} p_{ij} \quad </math> जहाँ <math>p_{ij}</math> बिंदु <math>i</math> के निकटवर्ती <math>j</math> को वर्गीकृत करने की प्रायिकता है।


एलओओ वर्गीकरण का उपयोग करके उद्देश्य फलन को परिभाषित करें, इस बार संपूर्ण डेटा समूह को प्रसंभाव्य निकटतम निकटवर्तीय के रूप में उपयोग करें:
इस प्रकार से एलओओ वर्गीकरण का उपयोग करके उद्देश्य फलन को परिभाषित करें, इस बार संपूर्ण डेटा समूह को प्रसंभाव्य निकटतम निकटवर्तीय के रूप में उपयोग करें:


<math>f(A) = \sum_i \sum_{j \in C_i} p_{ij} = \sum_i p_i</math>
<math>f(A) = \sum_i \sum_{j \in C_i} p_{ij} = \sum_i p_i</math>


ध्यान दें कि प्रसंभाव्य निकटतम निकटवर्तीय के अंतर्गत, एक बिंदु <math>i</math> के लिए सर्वसम्मति वर्ग अपने निकटवर्तीय <math>j \in C_i</math> अर्थात: <math>P(Class(X_i) = Class(X_j)) = p_{ij}</math> पर वितरण से खींचे गए प्रतिदर्शों की अनंत संख्या की सीमा में एक बिंदु के वर्ग का अपेक्षित मान है। इस प्रकार अनुमानित वर्ग प्रत्येक दूसरे बिंदु के वर्गों का संयोजन है, जिसे प्रत्येक <math>j \in C_j</math> के लिए सॉफ्टमैक्स फलन द्वारा भारित होता है जहाँ <math>C_j</math> अब संपूर्ण परिवर्तित डेटा समूह है।
ध्यान दें कि प्रसंभाव्य निकटतम निकटवर्तीय के अंतर्गत, एक बिंदु <math>i</math> के लिए सर्वसम्मति वर्ग अपने निकटवर्तीय <math>j \in C_i</math> अर्थात: <math>P(Class(X_i) = Class(X_j)) = p_{ij}</math> पर वितरण से खींचे गए प्रतिदर्शों की अनंत संख्या की सीमा में एक बिंदु के वर्ग का अपेक्षित मान है। अतः इस प्रकार अनुमानित वर्ग प्रत्येक दूसरे बिंदु के वर्गों का संयोजन है, जिसे प्रत्येक <math>j \in C_j</math> के लिए सॉफ्टमैक्स फलन द्वारा भारित होता है जहाँ <math>C_j</math> अब संपूर्ण परिवर्तित डेटा समूह है।


उद्देश्य फलन का यह विकल्प ठीक है क्योंकि यह <math>A</math> (<math>x_{ij} = x_i - x_j</math> को इंगित करें) के संबंध में भिन्न है:
इस प्रकार से उद्देश्य फलन का यह विकल्प ठीक है क्योंकि यह <math>A</math> (<math>x_{ij} = x_i - x_j</math> को इंगित करें) के संबंध में भिन्न है:


<math>
<math>
Line 42: Line 41:
</math>
</math>


<math>A</math> के लिए प्रवणता प्राप्त करने का अर्थ है कि इसे संयुग्मी प्रवणता विधि जैसे पुनरावृत्त हलकर्ता के साथ पाया जा सकता है। ध्यान दें कि व्यवहार में, रुचि के बिंदु से दूर के बिंदुओं के तीव्रता से घटते योगदान के कारण प्रवणता के अधिकांश आंतरिक शब्द महत्वहीन योगदान का मूल्यांकन करते हैं। इसका अर्थ यह है कि प्रवणता के आंतरिक योग को छोटा किया जा सकता है, जिसके परिणामस्वरूप बड़े डेटा समूह के लिए भी उचित गणना समय प्राप्त होता है।
<math>A</math> के लिए प्रवणता प्राप्त करने का अर्थ है कि इसे संयुग्मी प्रवणता विधि जैसे पुनरावृत्त हलकर्ता के साथ पाया जा सकता है। अतः ध्यान दें कि व्यवहार में, रुचि के बिंदु से दूर के बिंदुओं के तीव्रता से घटते योगदान के कारण प्रवणता के अधिकांश आंतरिक शब्द महत्वहीन योगदान का मूल्यांकन करते हैं। इसका अर्थ यह है कि प्रवणता के आंतरिक योग को छोटा किया जा सकता है, जिसके परिणामस्वरूप बड़े डेटा समूह के लिए भी उचित गणना समय प्राप्त होता है।


=== वैकल्पिक सूत्रीकरण ===
=== वैकल्पिक सूत्रीकरण ===


  "<math>f(\cdot)</math> को अधिकतम करना अनुमानित वर्ग वितरण और वास्तविक वर्ग वितरण के बीच <math>L_1</math>-दूरी को कम करने के बराबर है (अर्थात: जहां <math>A</math> द्वारा प्रेरित <math>p_i</math> सभी 1 के बराबर हैं)। प्राकृतिक विकल्प केएल-भिन्नता है, जो निम्नलिखित उद्देश्य फलन और प्रवणता को प्रेरित करता है:" (गोल्डबर्गर 2005)
  इस प्रकार से "<math>f(\cdot)</math> को अधिकतम करना अनुमानित वर्ग वितरण और वास्तविक वर्ग वितरण के बीच <math>L_1</math>-दूरी को कम करने के बराबर है (अर्थात: जहां <math>A</math> द्वारा प्रेरित <math>p_i</math> सभी 1 के बराबर हैं)। प्राकृतिक विकल्प केएल-भिन्नता है, जो निम्नलिखित उद्देश्य फलन और प्रवणता को प्रेरित करता है:" (गोल्डबर्गर 2005)


<math>
<math>
Line 56: Line 55:
</math>
</math>


व्यवहार में, इस फलन का उपयोग करके <math>A</math> का अनुकूलन से मूल के समान निष्पादन परिणाम देता है।
इस प्रकार से व्यवहार में, इस फलन का उपयोग करके <math>A</math> का अनुकूलन से मूल के समान निष्पादन परिणाम देता है।


==इतिहास और पृष्ठभूमि==
==इतिहास और पृष्ठभूमि==
निकटवर्ती के घटकों का विश्लेषण 2004 में टोरंटो विश्वविद्यालय के कंप्यूटर विज्ञान विभाग में जैकब गोल्डबर्गर, सैम रोविस, रुस्लान सलाखुदिनोव और ज्योफ हिंटन द्वारा विकसित किया गया था।
अतः इस प्रकार से निकटवर्ती के घटकों का विश्लेषण 2004 में टोरंटो विश्वविद्यालय के कंप्यूटर विज्ञान विभाग में जैकब गोल्डबर्गर, सैम रोविस, रुस्लान सलाखुदिनोव और ज्योफ हिंटन द्वारा विकसित किया गया था।


==यह भी देखें==
==यह भी देखें==
*[[ वर्णक्रमीय क्लस्टरिंग |वर्णक्रमीय क्लस्टरिंग]]
*[[ वर्णक्रमीय क्लस्टरिंग |वर्णक्रमीय क्लस्टरिंग]]
*बड़ा अंतर निकटतम निकटवर्ती
*बड़े अंतर निकटतम निकटवर्ती


== संदर्भ ==
== संदर्भ ==
Line 73: Line 72:
* [[स्किकिट-लर्न]] का [https://scikit-learn.org/stable/modules/generated/sklearn.neighbors.NeighborhoodComponentsAnaलिसिस.html NeighborhoodComponentsAnalyss] कार्यान्वयन ([[पायथन (प्रोग्रामिंग भाषा)]])
* [[स्किकिट-लर्न]] का [https://scikit-learn.org/stable/modules/generated/sklearn.neighbors.NeighborhoodComponentsAnaलिसिस.html NeighborhoodComponentsAnalyss] कार्यान्वयन ([[पायथन (प्रोग्रामिंग भाषा)]])


श्रेणी:सांख्यिकीय वर्गीकरण
[[Category: Machine Translated Page]]
[[Category:Created On 10/07/2023]]
[[Category:Created On 10/07/2023]]
[[Category:Machine Translated Page]]
[[Category:Templates Translated in Hindi]]
[[Category:Templates Vigyan Ready]]

Latest revision as of 15:39, 4 September 2023

निकटवर्ती घटकों का विश्लेषण सांख्यिकीय वर्गीकरण के लिए सुपरवाईस्ड लर्निंग की विधि है जो डेटा पर दिए गए मापन (गणित) के अनुसार अलग-अलग वर्गों में बहुभिन्नरूपी सांख्यिकी डेटा को विभाजित करता है। अतः कार्यात्मक रूप से, यह K-निकटतम निकटवर्तीय एल्गोरिदम के समान उद्देश्यों को पूर्ण करता है, और प्रसंभाव्य निकटतम निकटवर्तीय नामक संबंधित अवधारणा का प्रत्यक्ष उपयोग करता है।

परिभाषा

इस प्रकार से निकटवर्ती के घटकों के विश्लेषण का उद्देश्य इनपुट डेटा के रैखिक परिवर्तन को ढूंढकर दूरी मापन सीखना है ताकि औसत लीव-वन-आउट (एलओओ) वर्गीकरण निष्पादन परिवर्तित स्थान में अधिकतम हो। अतः एल्गोरिदम की मुख्य अंतर्दृष्टि यह है कि परिवर्तन के अनुरूप एक आव्यूह को के लिए एक अलग उद्देश्य फलन को परिभाषित करके पाया जा सकता है, इसके बाद संयुग्मित प्रवणता अवरोहण जैसे पुनरावृत्त हलकर्ता का उपयोग किया जा सकता है। इस एल्गोरिदम का एक लाभ यह है कि वर्ग की संख्या को एक अदिश स्थिरांक तक के फलन के रूप में निर्धारित किया जा सकता है। इसलिए, एल्गोरिदम का यह उपयोग मॉडल चयन के समस्या को संबोधित करता है।

स्पष्टीकरण

इस प्रकार से को परिभाषित करने के लिए, हम परिवर्तित स्थान में वर्गीकरण यथार्थता का वर्णन करने वाले एक उद्देश्य फलन को परिभाषित करते हैं और को निर्धारित करने का प्रयास करते हैं ताकि यह उद्देश्य फलन अधिकतम हो।

लीव-वन-आउट (एलओओ) वर्गीकरण

अतः किसी दिए गए दूरी मापन के साथ उसके -निकटतम निकटवर्तीय की सहमति से एकल डेटा बिंदु के वर्ग लेबल की भविष्यवाणी करने पर विचार करें। इसे लीव-वन-आउट वर्गीकरण के रूप में जाना जाता है। यद्यपि, सभी बिंदुओं को एक रैखिक परिवर्तन से गुज़रने के बाद निकटतम-निकटवर्तीय का समूह अत्यधिक भिन्न हो सकता है। इस प्रकार से विशेष रूप से, किसी बिंदु के लिए निकटवर्तीय का समूह के अवयवों में सुचारू परिवर्तनों के उत्तर में अलग-अलग परिवर्तनों से गुजर सकता है, जिसका अर्थ है कि किसी बिंदु के निकटवर्तीय के आधार पर कोई भी उद्देश्य फलन टुकड़े-टुकड़े-स्थिर होगा, और इसलिए अलग-अलग नहीं होगा।

हल

अतः हम प्रसंभाव्य प्रवणता अवरोहण से प्रेरित दृष्टिकोण का उपयोग करके इस जटिलता को हल कर सकते हैं। इस प्रकार से एलओओ-वर्गीकरण में प्रत्येक परिवर्तित बिंदु पर -निकटतम निकटवर्तीय पर विचार करने के अतिरिक्त, हम संपूर्ण रूपांतरित डेटा समूह को प्रसंभाव्य निकटतम निकटवर्तीय के रूप में मानेंगे। हम किसी दिए गए एलओओ-वर्गीकरण बिंदु और रूपांतरित स्थान में दूसरे बिंदु के बीच वर्गित यूक्लिडियन दूरी के सॉफ्टमैक्स सक्रियण फलन का उपयोग करके इन्हें परिभाषित करते हैं:

डेटा बिंदु को ठीक रूप से वर्गीकृत करने की प्रायिकता उसके प्रत्येक निकटवर्ती बिंदु को समान वर्ग के साथ वर्गीकृत करने की प्रायिकता है:

जहाँ बिंदु के निकटवर्ती को वर्गीकृत करने की प्रायिकता है।

इस प्रकार से एलओओ वर्गीकरण का उपयोग करके उद्देश्य फलन को परिभाषित करें, इस बार संपूर्ण डेटा समूह को प्रसंभाव्य निकटतम निकटवर्तीय के रूप में उपयोग करें:

ध्यान दें कि प्रसंभाव्य निकटतम निकटवर्तीय के अंतर्गत, एक बिंदु के लिए सर्वसम्मति वर्ग अपने निकटवर्तीय अर्थात: पर वितरण से खींचे गए प्रतिदर्शों की अनंत संख्या की सीमा में एक बिंदु के वर्ग का अपेक्षित मान है। अतः इस प्रकार अनुमानित वर्ग प्रत्येक दूसरे बिंदु के वर्गों का संयोजन है, जिसे प्रत्येक के लिए सॉफ्टमैक्स फलन द्वारा भारित होता है जहाँ अब संपूर्ण परिवर्तित डेटा समूह है।

इस प्रकार से उद्देश्य फलन का यह विकल्प ठीक है क्योंकि यह ( को इंगित करें) के संबंध में भिन्न है:

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

वैकल्पिक सूत्रीकरण

इस प्रकार से " को अधिकतम करना अनुमानित वर्ग वितरण और वास्तविक वर्ग वितरण के बीच -दूरी को कम करने के बराबर है (अर्थात: जहां  द्वारा प्रेरित  सभी 1 के बराबर हैं)। प्राकृतिक विकल्प केएल-भिन्नता है, जो निम्नलिखित उद्देश्य फलन और प्रवणता को प्रेरित करता है:" (गोल्डबर्गर 2005)

इस प्रकार से व्यवहार में, इस फलन का उपयोग करके का अनुकूलन से मूल के समान निष्पादन परिणाम देता है।

इतिहास और पृष्ठभूमि

अतः इस प्रकार से निकटवर्ती के घटकों का विश्लेषण 2004 में टोरंटो विश्वविद्यालय के कंप्यूटर विज्ञान विभाग में जैकब गोल्डबर्गर, सैम रोविस, रुस्लान सलाखुदिनोव और ज्योफ हिंटन द्वारा विकसित किया गया था।

यह भी देखें

संदर्भ

बाहरी संबंध

सॉफ्टवेयर