उदाहरण के साथ शुरुआती के लिए आर में मशीन लर्निंग



R के साथ मशीन लर्निंग का यह ब्लॉग आपको मशीन लर्निंग की मुख्य अवधारणाओं को सीखने और R के साथ अलग-अलग मशीन लर्निंग एल्गोरिदम को लागू करने में मदद करता है।

मशीन लर्निंग विथ आर

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

'आर के साथ मशीन लर्निंग' पर यह ब्लॉग इन वर्गों के शामिल हैं:





मशीन लर्निंग विथ आर | Edureka

मशीन लर्निंग को समझना

Fish1- मशीन लर्निंग विथ आर - एडुर्का



आप कैसे जानते हैं कि वे सभी मछली हैं?



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

यह हमारा मस्तिष्क कैसे कार्य करता है लेकिन एक मशीन के बारे में क्या है? यदि एक ही छवि एक मशीन को खिलाया जाता है, तो मशीन मछली की पहचान कैसे करेगी?

जावा में सेम क्या है

यह वह जगह है जहां एम सीखने की उपलब्धि तब तक आता है, जब तक हम 'मछली' टैग वाले कंप्यूटर की मछलियों की छवियों को खिलाते रहेंगे मशीन सभी संबंधित सुविधाओं को सीखती है के साथ मछली।

एक बार मशीन एक मछली से जुड़ी सभी विशेषताओं को सीख लेती है, तो हम यह निर्धारित करने के लिए कि यह कितना सीखा है, यह नया डेटा खिलाएगा।

दूसरे शब्दों में, कच्चा डेटा / प्रशिक्षण डेटा मशीन को दिया जाता है, ताकि यह सीखता है सभी सुविधाओं के साथ जुड़े प्रशिक्षण जानकारी। एक बार, सीखने के लिए किया जाता है, यह दिया जाता है नया डेटा / परीक्षण डेटा यह निर्धारित करने के लिए कि मशीन ने कितनी अच्छी तरह सीखा है।

आइए हम इस मशीन लर्निंग में आर ब्लॉग के साथ आगे बढ़ते हैं और मशीन लर्निंग के प्रकारों के बारे में समझते हैं।

मशीन लर्निंग के प्रकार

  • पर्यवेक्षित अध्ययन:

पर्यवेक्षित शिक्षण एल्गोरिथ्म एक ज्ञात डेटा-सेट (प्रशिक्षण डेटा) से सीखता है जिसमें भविष्यवाणियां करने के लिए लेबल होते हैं।

प्रतिगमन और वर्गीकरण पर्यवेक्षित अधिगम के कुछ उदाहरण हैं।

# जमाव:

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

इस उदाहरण के लिए, यदि पहले अवलोकन को 'मैन' लेबल दिया जाता है, तो इसे सही तरीके से वर्गीकृत किया जाता है, लेकिन यदि इसे 'वुमन' लेबल दिया जाता है, तो वर्गीकरण गलत है। इसी तरह दूसरे अवलोकन के लिए, यदि दिया गया लेबल 'वुमन' है, तो इसे सही तरीके से वर्गीकृत किया गया है, अन्यथा वर्गीकरण गलत है।

#Regression:

प्रतिगमन एक पर्यवेक्षित शिक्षण एल्गोरिथ्म है जो यह निर्धारित करने में मदद करता है कि एक चर दूसरे चर को कैसे प्रभावित करता है।

यहाँ पर, 'living_area' स्वतंत्र चर है और 'price' निर्भर चर है, अर्थात हम यह निर्धारित कर रहे हैं कि 'Living_area' के संबंध में 'मूल्य' कैसे भिन्न होता है।

  • अप्रशिक्षित शिक्षण:

अनपुर्ज़िज्ड लर्निंग अल्गोरिथम उन डेटा से इंफ़ॉर्म करता है जिसमें लेबल नहीं होते हैं।

क्लस्टरिंग अप्रमाणित शिक्षा का एक उदाहरण है। 'K-mean', 'Hierarchical', 'Fuzzy C-Means' क्लस्टरिंग एल्गोरिदम के कुछ उदाहरण हैं।

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

  • सुदृढीकरण सीखना:

सुदृढीकरण सीखना मशीन लर्निंग एल्गोरिदम का एक प्रकार है जहाँ मशीन / एजेंट में वातावरण अपने प्रदर्शन को अधिकतम करने के लिए आदर्श व्यवहार सीखता है। एजेंट को उसके व्यवहार को जानने के लिए सरल इनाम प्रतिक्रिया की आवश्यकता होती है, इसे इस रूप में जाना जाता है सुदृढीकरण संकेत

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

आर के साथ मशीन लर्निंग लागू करना:

रेखीय प्रतिगमन:

हम रैखिक प्रतिगमन एल्गोरिथ्म को लागू करने के लिए हीरे के डेटा-सेट के साथ काम करेंगे:

डेटा-सेट का विवरण:

डेटा पर कोई भी मॉडल बनाने से पहले, हमें डेटा को 'ट्रेन' और 'टेस्ट' सेट में विभाजित करना चाहिए। मॉडल 'ट्रेन' सेट पर बनाया जाएगा और इसकी सटीकता 'परीक्षण' सेट पर जाँच की जाएगी।

हमें डेटा को दो सेटों में विभाजित करने के लिए 'caTools' पैकेज को लोड करने की आवश्यकता है।

पुस्तकालय (caTools)

'CaTools' पैकेज एक फ़ंक्शन 'sample.split ()' प्रदान करता है जो डेटा को विभाजित करने में मदद करता है।

नमूना.प्लिट (हीरे $ मूल्य, स्प्लिट अनुपात = 0.65) -> स्प्लिट_इंडेक्स

मूल्य स्तंभ से टिप्पणियों के 65% को 'सही' लेबल सौंपा गया है और बाकी 35% को 'गलत' लेबल सौंपा गया है।

सबसेट (हीरे, स्प्लिट_इंडेक्स == टी) -> ट्रेन सबसेट (हीरे, स्प्लिट_इंडेक्स == एफ) -> परीक्षण

'सच' लेबल वाले सभी अवलोकन 'में संग्रहीत किए गए हैं' ट्रेन ”वस्तु और 'अवलोकन' लेबल वाले उन टिप्पणियों को 'परीक्षण' सेट पर सौंपा गया है।

अब जबकि विभाजन हो चुका है और हमारे पास 'ट्रेन' और 'परीक्षण' सेट हैं, प्रशिक्षण सेट पर रैखिक प्रतिगमन मॉडल बनाने का समय है।

जावा में दो नंबर जोड़ें

हम 'ट्रेन' डेटा पर रैखिक प्रतिगमन मॉडल बनाने के लिए 'एलएम ()' फ़ंक्शन का उपयोग कर रहे हैं। हम निर्धारित कर रहे हैं कीमत हीरे के डेटा-सेट के अन्य सभी चर के संबंध में। निर्मित मॉडल ऑब्जेक्ट 'mod_regress' में संग्रहीत है।

एलएम (मूल्य ~।, डेटा = ट्रेन) -> mod_regress

अब, हमने मॉडल बनाया है, हमें 'परीक्षण' सेट पर भविष्यवाणियाँ करने की आवश्यकता है। 'प्रेडिक्शन ()' फ़ंक्शन का उपयोग भविष्यवाणियों को प्राप्त करने के लिए किया जाता है। यह दो तर्क देता है: द निर्मित मॉडल और यह टेस्ट सेट। अनुमानित परिणाम 'result_regress' ऑब्जेक्ट में संग्रहीत हैं।

भविष्यवाणी (mod_regress, परीक्षण) -> result_regress

चलो 'परीक्षण' डेटा-सेट और 'cbind ()' फ़ंक्शन का उपयोग करके एकल डेटा-सेट में अनुमानित मूल्यों से वास्तविक मूल्य मानों को बांधें। नया डेटा-फ्रेम 'Final_Data' में संग्रहीत है

cbind (वास्तविक = परीक्षण $ मूल्य, अनुमानित = परिणाम_प्रगति) -> अंतिम_डाटा 
as.data.frame (Final_Data) -> Final_Data

'Final_Data' पर एक नज़र जिसमें वास्तविक मूल्य और अनुमानित मूल्य शामिल हैं:

आइए वास्तविक मानों से अनुमानित मानों को घटाकर त्रुटि को ढूंढें और इस त्रुटि को एक नए कॉलम के रूप में 'Final_Data' में जोड़ें:

(Final_Data $ वास्तविक- Final_Data $ अनुमानित) -> त्रुटि
cbind (Final_Data, error) -> अंतिम_डाटा

'Final_Data' पर एक नज़र जिसमें भविष्यवाणी में त्रुटि भी शामिल है:

अब, हम आगे बढ़ेंगे और गणना करेंगे मीन वर्ग त्रुटि को रूट करें' जो सभी भविष्यवाणियों के लिए एक समग्र त्रुटि देता है

rmse1<-sqrt(mean(Final_Data$error^2)) 
rmse1

आगे बढ़ते हुए, एक और मॉडल बनाते हैं, ताकि हम इन दोनों मॉडलों की सटीकता की तुलना कर सकें और निर्धारित कर सकें कि कौन सा बेहतर है।

हम 'ट्रेन' सेट पर एक नए रैखिक प्रतिगमन मॉडल का निर्माण करेंगे, लेकिन इस बार, हम स्वतंत्र चर से 'x' और 'y' कॉलम को छोड़ देंगे अर्थात हीरे की 'कीमत' सभी द्वारा निर्धारित की जाती है। कॉलम 'x' और 'y' को छोड़कर।

बनाया गया मॉडल 'mod_regress2' में संग्रहीत है:

एलएम (मूल्य ~।-वाई-जेड, डेटा = ट्रेन) -> mod_regress2

अनुमानित परिणाम 'result_regress2' में संग्रहीत हैं

भविष्यवाणी (mod_regress2, test) -> result_regress2

वास्तविक और अनुमानित मूल्य संयुक्त और 'Final_Data2' में संग्रहीत हैं:

cbind (वास्तविक = परीक्षण $ मूल्य, अनुमानित = परिणाम_प्रग्य 2) -> अंतिम_डाटा 2 
as.data.frame (Final_Data2) -> Final_Data2

चलिए 'फाइनल_डाटा 2' की भविष्यवाणी में त्रुटि भी जोड़ते हैं

(फ़ाइनल_डैट 2 $ वास्तविक- फ़ाइनल_डेटा 2 $ अनुमानित) -> त्रुटि 2
cbind (Final_Data2, error2) -> Final_Data2

'Final_Data2' पर एक नज़र:

कुल त्रुटि पाने के लिए रूट मीन स्क्वायर एरर खोजना:

rmse2<-sqrt(mean(Final_Data2$error^2))

हम देखते हैं कि 'rmse2' 'rmse1' से थोड़ा कम है और इसलिए दूसरा मॉडल पहले मॉडल की तुलना में थोड़ा बेहतर है।

वर्गीकरण:

हम लागू करने के लिए 'car_purchase' डेटा-सेट के साथ काम करेंगे पुनरावर्ती विभाजन जो एक वर्गीकरण एल्गोरिथ्म है।

चलो 'ट्रेन' और 'परीक्षण' में डेटा को विभाजित करें 'caTools' पैकेज से 'sample.split ()' फ़ंक्शन का उपयोग करते हुए।

पुस्तकालय (caTools)

Sed खरीदे गए कॉलम के अवलोकन में से 65% को 'TRUE' लेबल और शेष को 'FALSE' लेबल असाइन किया जाएगा।

sample.split (car_purchase $ खरीदी गई, भाजित अनुपात = 0.65) -> विभाजन_काले

जिन सभी टिप्पणियों में 'TRUE' लेबल है, उन्हें 'ट्रेन' डेटा में संग्रहीत किया जाएगा और 'FALSE' लेबल वाले उन टिप्पणियों को 'परीक्षण' डेटा को सौंपा जाएगा।

सबसेट (car_purchase, split_values ​​== T) -> train_data
सबसेट (car_purchase, split_values ​​== F) -> test_data

पुनरावर्ती विभाजन एल्गोरिथ्म के निर्माण का समय:

हम 'आरपार' पैकेज को लोड करके शुरू करेंगे:

पुस्तकालय (समकक्ष)

'खरीदे गए' कॉलम निर्भर चर होंगे और अन्य सभी कॉलम स्वतंत्र चर हैं यानी हम यह निर्धारित कर रहे हैं कि व्यक्ति ने अन्य सभी कॉलमों के संबंध में कार खरीदी है या नहीं। मॉडल 'train_data' पर बनाया गया है और परिणाम 'mod1' में संग्रहीत है।

rpart (खरीदी गई ~।, डेटा = train_data) -> mod1

परिणाम को प्लॉट करें:

प्लॉट (mod1, मार्जिन = 0.1) पाठ (mod1, pretty = T, cex = 0.8)

अब, आगे बढ़ो और 'test_data' पर परिणामों की भविष्यवाणी करें। हम निर्मित तर्क मॉडल 'mod1' को पहले तर्क के रूप में दे रहे हैं, परीक्षण सेट 'test_data' को दूसरे तर्क के रूप में और तीसरे तर्क के लिए 'वर्ग' के रूप में भविष्यवाणी प्रकार। परिणाम 1 result1 'ऑब्जेक्ट में संग्रहीत होता है।

भविष्यवाणी (mod1, test_data, प्रकार = 'वर्ग') -> result1

आइए कैरट पैकेज से 'कन्फ्यूजनमैट्रिक्स ()' फ़ंक्शन का उपयोग करके मॉडल की सटीकता का मूल्यांकन करें।

रोबोटिक प्रक्रिया स्वचालन उपकरण तुलना
पुस्तकालय (कार्यवाहक) confusionMatrix (तालिका (test_data $ खरीदा, परिणाम 1))

भ्रम मैट्रिक्स हमें बताता है कि 90 टिप्पणियों में से जहां व्यक्ति ने कार नहीं खरीदी थी, 79 टिप्पणियों को 'नहीं' के रूप में वर्गीकृत किया गया है और 11 को गलत तरीके से 'हां' के रूप में वर्गीकृत किया गया है। इसी तरह, 50 टिप्पणियों में से, जहां व्यक्ति ने वास्तव में कार खरीदी थी, 47 को 'यस' के रूप में वर्गीकृत किया गया है और 3 को गलत तरीके से 'NO' के रूप में वर्गीकृत किया गया है।

हम कुल भविष्यवाणियों यानी (79 + 47) / (79 + 47 + 11 + 3) के साथ सही भविष्यवाणियों को विभाजित करके मॉडल की सटीकता पा सकते हैं।

K- मीन्स क्लस्टरिंग:

हम 'आईरिस' के साथ काम करेंगे, जो k- साधन क्लस्टरिंग को लागू करने के लिए डेटा-सेट है:

चलो 'प्रजाति' कॉलम को हटा दें और एक नया डेटा-सेट बनाएं जिसमें-आईरिस ’डेटा-सेट से केवल पहले चार कॉलम शामिल हों।

iris [1: 4] -> iris_k

आइए हम क्लस्टर्स की संख्या को 3 लेते हैं। 'Kmeans ()' फंक्शन इनपुट डेटा लेता है और क्लस्टर्स की संख्या जिसमें डेटा को क्लस्टर किया जाना है। वाक्यविन्यास है: किमी (डेटा, के) जहां k क्लस्टर केंद्रों की संख्या है।

kmeans (iris_k, 3) -> k1

क्लस्टरिंग का विश्लेषण:

str (k1)

Str () फंक्शन किमीन्स की संरचना देता है जिसमें विभिन्न पैरामीटर जैसे विंस, बेटवेन्स आदि शामिल होते हैं, जिसका विश्लेषण करके आप किमी के प्रदर्शन का पता लगा सकते हैं।

betweenss: वर्गों के योग के बीच यानी इंट्राक्लस्टर समानता

withinss: वर्गाकार राशि के भीतर यानी इंटरक्लस्टर समानता

कुलदेवता: सभी समूहों के सभी योगों के योग अर्थात् पूर्ण अंतर-क्लस्टर समानता

एक अच्छी क्लस्टरिंग में 'tot.withinss' का कम मूल्य और 'betweenss' का उच्च मूल्य होगा, जो शुरू में चुने गए समूहों की संख्या पर निर्भर करता है।

समय आपके लिए आने वाले नए अवसरों का लाभ उठाने के लिए मशीन लर्निंग का विशेषज्ञ बनने का समय है। यह हमें इस के अंत में लाता है ” मशीन लर्निंग विथ आर ' ब्लॉग। मुझे उम्मीद है कि यह ब्लॉग जानकारीपूर्ण फलदायी था।

एडुर्का ने एक विशेष रूप से क्यूरेट किया है जो आपको K-Means Clustering, Decision Trees, Random Forest, Naive Bayes जैसे मशीन लर्निंग एल्गोरिदम में विशेषज्ञता हासिल करने में मदद करता है। आप सांख्यिकी, टाइम सीरीज़, टेक्स्ट माइनिंग और दीप लर्निंग से परिचय के बारे में जानेंगे। इस कोर्स के लिए नए बैच जल्द ही शुरू हो रहे हैं !!