למידת מכונה ב- R למתחילים עם דוגמה



בלוג זה בנושא למידת מכונה עם R עוזר לך ללמוד מושגי ליבה של למידת מכונה ולהטמיע אלגוריתמים שונים של למידת מכונה עם R.

למידה מכונה עם ר

לימוד מכונה הוא ההווה והעתיד! ממנוע ההמלצות של נטפליקס למכונית הנהגת עצמית של גוגל, הכל למידת מכונה. בלוג זה בנושא Machine Learning with R עוזר לך להבין את מושגי הליבה של למידת מכונה ואחריו אלגוריתמים שונים של למידת מכונה ויישום אלגוריתמים אלה של למידת מכונה עם R.

בלוג זה בנושא 'למידת מכונה עם R' כולל חלקים אלה:





למידה מכונה עם R | אדוריקה

הבנת למידת מכונה

Fish1- למידת מכונה עם R - Edureka



איך יודעים שכל אלה דגים?



כילד אולי היית נתקל בתמונה של דג והיית אומר לך הגננות או ההורים שלך שזהו דג ויש לו כמה מאפיינים ספציפיים הקשורים אליו כאילו יש לו סנפירים, זימים, זוג עיניים, זנב וכן הלאה. עכשיו, בכל פעם שהמוח שלך נתקל בתמונה עם קבוצה זו של תכונות, הוא רושם אותה באופן אוטומטי כדג מכיוון שיש למוח שלך מְלוּמָד שזה דג.

כך המוח שלנו מתפקד אבל מה עם מכונה? אם אותה תמונה מוזנת למכונה, כיצד המכונה תזהה שהיא דג?

כאן מ ' למידת כאבים נכנס. נמשיך להאכיל תמונות של דג למחשב עם התווית 'דג' עד שה- המכונה לומדת את כל התכונות המשויכות עם דג.

לאחר שהמכונה תלמד את כל התכונות המשויכות לדג, נאכיל אותו בנתונים חדשים כדי לקבוע כמה היא למדה.

במילים אחרות, נתונים גולמיים / נתוני הדרכה ניתן למכונה, כך שהיא לומד כל התכונות המשויכות ל- נתוני הדרכה. ברגע שהלמידה נעשית, היא ניתנת נתונים חדשים / נתוני בדיקה כדי לקבוע עד כמה המכונה למדה היטב.

הבה נתקדם בבלוג Machine Learning with R ונבין על סוגי למידה ממוחשבת.

סוגי למידת מכונה

  • למידה מפוקחת:

אלגוריתם למידה מפוקח לומד ממערך נתונים ידוע (Training Data) המכיל תוויות לחיזוי.

רגרסיה וסיווג הם כמה דוגמאות ללמידה בפיקוח.

#מִיוּן:

הסיווג קובע לאיזו קבוצת קטגוריות שייכת תצפית חדשה כלומר אלגוריתם סיווג לומד את כל התכונות והתוויות של נתוני האימון וכאשר ניתן לו נתונים חדשים, עליו להקצות תוויות לתצפיות החדשות בהתאם למה שלמד. מנתוני האימונים.

לדוגמא זו, אם לתצפית הראשונה ניתן התווית 'גבר' אז היא מסווגת בצדק, אך אם היא זוכה לתווית 'אישה', הסיווג שגוי. באופן דומה לתצפית השנייה, אם התווית שניתנה היא 'אישה', היא מסווגת בצדק, אחרת הסיווג שגוי.

#נְסִיגָה:

רגרסיה היא אלגוריתם למידה מפוקח המסייע בקביעת השפעה על משתנה אחד על משתנה אחר.

כאן, 'אזור חי' הוא המשתנה הבלתי תלוי ו'מחיר 'הוא המשתנה התלוי כלומר אנו קובעים כיצד' מחיר 'משתנה ביחס ל'שטח חי'.

  • למידה ללא פיקוח:

אלגוריתם למידה ללא פיקוח שואב מסקנות מנתונים שאין להם תוויות.

אשכולות הוא דוגמה ללמידה ללא פיקוח. 'K- פירושו', 'היררכי', 'אמצעי C מטושטשים' הם כמה דוגמאות לאלגוריתמי אשכולות.

בדוגמה זו מערך התצפיות מחולק לשני אשכולות. אשכולות נעשים על בסיס דמיון בין התצפיות. יש דמיון בין אשכולות גבוה ודמיון בין אשכולות נמוך כלומר יש דמיון גבוה מאוד בין כל האוטובוסים אך דמיון נמוך בין האוטובוסים למכוניות.

  • לימוד עם חיזוקים:

למידת חיזוק הוא סוג של אלגוריתם למידת מכונה בו מכונה / סוכן ב סביבה לומד התנהגות אידיאלית על מנת למקסם את ביצועיה. נדרש משוב מתגמול פשוט כדי שהסוכן ילמד את התנהגותו, זה מכונה אות חיזוק .

בוא ניקח פקמן לדוגמה. כל עוד פקמן ממשיך לאכול אוכל, הוא צובר נקודות אבל כשהוא מתרסק על מפלצת הוא מאבד את החיים. כך פקמן לומד שהוא צריך לאכול יותר אוכל ולהימנע ממפלצותכדי לשפר את הביצועים שלו.

יישום למידת מכונה עם R:

רגרסיה לינארית:

נעבוד עם מערך הנתונים של היהלומים כדי ליישם אלגוריתם רגרסיה לינארית:

תיאור מערך הנתונים:

לפני בניית מודל כלשהו על הנתונים, אנו אמורים לפצל את הנתונים לערכות 'רכבת' ו'מבחן '. הדגם יבנה על סט 'הרכבת' ודיוקו ייבדק על סט ה'מבחן '.

עלינו לטעון את חבילת 'caTools' כדי לפצל את הנתונים לשתי קבוצות.

ספרייה (caTools)

החבילה 'caTools' מספקת פונקציה 'sample.split ()' המסייעת בפיצול הנתונים.

sample.split (מחיר יהלומים $, SplitRatio = 0.65) -> split_index

ל -65% מהתצפיות בעמודת המחירים הוקצה התווית 'נכון' ולשאר 35% הוענק תווית 'שקר'.

תת קבוצה (יהלומים, split_index == T) -> רכבת תת-קבוצה (יהלומים, split_index == F) -> מבחן

כל התצפיות עם התווית 'האמיתית' אוחסנו בתווית ' הרכבת ”אובייקט ואותן תצפיות עם תווית 'שקר' הוקצו למערך 'הבדיקה'.

כעת, לאחר שהפיצול נעשה ויש לנו את ערכות 'הרכבת' וה'מבחן 'שלנו, הגיע הזמן לבנות את מודל הרגרסיה הליניארית על מערך האימונים.

נשתמש בפונקציה 'lm ()' לבניית מודל הרגרסיה הליניארית על נתוני 'הרכבת'. אנו קובעים את מחיר של היהלומים ביחס לכל שאר המשתנים של מערך הנתונים. המודל הבנוי מאוחסן באובייקט 'mod_regress'.

lm (מחיר ~., נתונים = רכבת) -> mod_regress

כעת, לאחר שבנינו את המודל, עלינו לחזות את ערכת ה'מבחן '. פונקציית 'לחזות ()' משמשת לקבלת חיזויים. נדרשים שני טיעונים: מודל בנוי וה ערכת בדיקות. התוצאות החזויות נשמרות באובייקט 'result_regress'.

לחזות (mod_gression, test) -> תוצאה_gression

בואו נקשר את ערכי המחירים בפועל מערך הנתונים 'הבדיקה' והערכים החזויים לערכת נתונים אחת באמצעות הפונקציה 'cbind ()'. מסגרת הנתונים החדשה מאוחסנת ב- 'Final_Data'

cbind (בפועל = test $ price, Predicted = result_regress) -> Final_Data 
as.data.frame (Final_Data) -> Final_Data

הצצה אל 'Final_Data' המורכב מערכים בפועל וערכים חזויים:

בואו נמצא את השגיאה על ידי הפחתת הערכים החזויים מהערכים בפועל ונוסיף שגיאה זו כעמודה חדשה ל'סופי_דאטה ':

(Final_Data $ בפועל- Final_Data $ חזוי) -> שגיאה
cbind (Final_Data, error) -> Final_Data

מבט על 'Final_Data' המורכב גם משגיאת החיזוי:

עכשיו נמשיך ונחשב ' שגיאת שורש הריבועי ממוצעת' אשר נותן שגיאה מצטברת לכל התחזיות

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

בהמשך, בואו נבנה מודל אחר, כדי שנוכל להשוות את הדיוק של שני המודלים הללו ולקבוע איזה הוא טוב יותר.

אנו בונים מודל רגרסיה ליניארי חדש על מערך 'הרכבת', אך הפעם נפיל את עמודות 'x' ו- 'y' מהמשתנים הבלתי תלויים, כלומר 'המחיר' של היהלומים נקבע על ידי כל עמודות למעט 'x' ו- 'y'.

הדגם שנבנה מאוחסן ב- “mod_regress2”:

lm (מחיר ~.-y-z, נתונים = רכבת) -> mod_regress2

התוצאות החזויות נשמרות ב- 'result_regress2'

לחזות (mod_regress2, test) -> result_regress2

ערכים אמיתיים וחזויים משולבים ומאוחסנים ב- 'Final_Data2':

cbind (בפועל = test $ price, Predicted = result_regress2) -> Final_Data2 
as.data.frame (Final_Data2) -> Final_Data2

בואו נוסיף גם את השגיאה בחיזוי ל- 'Final_Data2'

(Final_Data2 $ בפועל- Final_Data2 $ חזוי) -> שגיאה 2
cbind (Final_Data2, error2) -> Final_Data2

הצצה אל 'Final_Data2':

מציאת שגיאת ריבוע ממוצע שורש כדי לקבל את השגיאה המצרפית:

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

אנו רואים כי 'rmse2' הוא פחות שולית מ- 'rmse1' ומכאן שהדגם השני טוב יותר באופן שולי מהדגם הראשון.

מִיוּן:

נעבוד עם מערך הנתונים 'רכב_רכישה' ליישום מחיצה רקורסיבית שהוא אלגוריתם סיווג.

בואו נחלק את הנתונים לקבוצות 'רכבת' ו'מבחן 'באמצעות פונקציית' sample.split () 'מחבילת' caTools '.

ספרייה (caTools)

65% מהתצפיות בעמודה 'נרכש' יוקצו לתוויות 'TRUE' ולשאר יוקצו תוויות 'FALSE'.

sample.split (car_purchase $ נרכש, SplitRatio = 0.65) -> split_values

כל אותן תצפיות עם תווית 'TRUE' יאוחסנו בנתוני 'הרכבת' ותצפיות עם התווית 'FALSE' יוקצו לנתוני 'בדיקה'.

תת קבוצה (רכישת רכב, ערכי פיצול == T) -> נתוני רכבת
קבוצת משנה (רכישת רכב, פיצול_ערכים == F) -> נתוני מבחן

הגיע הזמן לבנות את האלגוריתם למחיצות רקורסיביות:

נתחיל בטעינה של חבילת 'rpart':

ספרייה (rpart)

העמודה 'נרכש' תהיה המשתנה התלוי וכל העמודות האחרות הן המשתנים הבלתי תלויים כלומר אנו קובעים אם האדם קנה את המכונית או לא ביחס לכל שאר העמודים. המודל בנוי על 'train_data' והתוצאה נשמרת ב- 'mod1'.

rpart (נרכש ~., נתונים = train_data) -> mod1

בואו נתווה את התוצאה:

עלילה (mod1, שוליים = 0.1) טקסט (mod1, יפה = T, cex = 0.8)

עכשיו, בואו נמשיך ונחזה את התוצאות ב- 'test_data'. אנו נותנים למודל ה- rpart הבנוי 'mod1' כארגומנט הראשון, את הגדרת הבדיקה 'test_data' כארגומנט השני וסוג החיזוי כ- 'class' עבור הארגומנט השלישי. התוצאה נשמרת באובייקט 'result1'.

לחזות (mod1, test_data, type = 'class') -> result1

בואו נעריך את דיוק המודל באמצעות פונקציית 'confusionMatrix ()' מחבילת הקרטה.

ספרייה (טיפול) confusionMatrix (טבלה (test_data $ נרכש, תוצאה 1))

מטריצת הבלבול מספרת לנו כי מתוך 90 התצפיות בהן האדם לא קנה את המכונית, 79 תצפיות סווגו בצדק כ'לא 'ו -11 סווגו בטעות כ'כן'. באופן דומה, מתוך 50 התצפיות בהן האדם קנה את המכונית בפועל, 47 סווגו בצדק כ- 'כן' ו- 3 סווגו בטעות כ'לא '.

אנו יכולים למצוא את הדיוק של המודל על ידי חלוקת התחזיות הנכונות עם סך התחזיות כלומר (79 + 47) / (79 + 47 + 11 + 3).

אשכולות K-Means:

נעבוד עם מערך נתונים 'קשתית העין' כדי ליישם אשכולות k-means:

בואו נסיר את העמודה 'מינים' וניצור מערך נתונים חדש שיכלול רק את ארבע העמודות הראשונות מתוך מערך הנתונים 'אירוס'.

קשתית העין [1: 4] -> קשתית העין

בואו ניקח את מספר האשכולות להיות 3. הפונקציה 'Kmeans ()' לוקחת את נתוני הקלט ואת מספר האשכולות שבהם הנתונים צריכים להיות מקובצים. התחביר הוא: kmeans (data, k) כאשר k הוא מספר מרכזי האשכול.

kmeans (iris_k, 3) -> k1

ניתוח האשכולות:

str (k1)

הפונקציה str () מעניקה את מבנה הקימאנים הכוללת פרמטרים שונים כמו ininss, betweenss וכו ', וניתוח מהם תוכלו לגלות את הביצועים של kmeans.

בין שני הצדדים: בין סכום הריבועים כלומר דמיון בין-מוחץ

withinss: בתוך סכום הריבוע כלומר דמיון בין-מקבצי

totwithinss: סכום כל ה- withinss של כל האשכולות כלומר דמיון פנים-אשכול כולל.

סוג נתונים לתאריך ב- SQL

לאשכולות טובים יהיה ערך נמוך יותר של 'tot.withinss' וערך גבוה יותר של 'betweenss' אשר תלוי במספר האשכולות 'k' שנבחרו בתחילה.

הזמן בשל להיות מומחה בתחום למידת מכונה כדי לנצל הזדמנויות חדשות שנקרות בדרכך. זה מביא אותנו לסוף זה ' למידה מכונה עם ר 'בלוג. אני מקווה שהבלוג הזה היה פורה אינפורמטיבי.

אדוריקה יש אוצר במיוחד אשר מסייע לך לצבור מומחיות באלגוריתמים של למידת מכונה כמו K-Means Clustering, Trees Decision, Random Forest, Naive Bayes. תלמדו את המושגים סטטיסטיקה, סדרות זמן, כריית טקסטים וגם מבוא ללמידה עמוקה. קבוצות חדשות לקורס זה מתחילות בקרוב !!