Μηχανική εκμάθηση με R
Η μηχανική μάθηση είναι το παρόν και το μέλλον! Από τη μηχανή προτάσεων του Netflix έως το αυτοκινούμενο αυτοκίνητο της Google, όλα είναι μηχανικά. Αυτό το ιστολόγιο σχετικά με τη Μηχανική Εκμάθηση με το R σας βοηθά να κατανοήσετε τις βασικές έννοιες της μηχανικής μάθησης ακολουθούμενες από διαφορετικούς αλγόριθμους μηχανικής μάθησης και εφαρμόζοντας αυτούς τους αλγόριθμους μηχανικής μάθησης με το R.
Αυτό το ιστολόγιο με θέμα 'Μηχανική εκμάθηση με R' περιλαμβάνει αυτές τις ενότητες:
- Κατανόηση της μηχανικής μάθησης
- Τύποι αλγορίθμων μηχανικής εκμάθησης
- Υλοποίηση αλγορίθμων μηχανικής εκμάθησης με R
Μηχανική εκμάθηση με R | Έντρεκα
τι είναι το φασόλι στην Ιάβα
Κατανόηση της μηχανικής μάθησης
Πώς ξέρετε ότι όλα αυτά είναι ψάρια;
Ως παιδί, μπορεί να έχετε συναντήσει μια εικόνα ενός ψαριού και θα σας είχαν πει από τους δασκάλους ή τους γονείς σας στο νηπιαγωγείο ότι αυτό είναι ένα ψάρι και έχει κάποια συγκεκριμένα χαρακτηριστικά που σχετίζονται με αυτό, όπως έχει πτερύγια, βράγχια, ένα ζευγάρι μάτια, ουρά και ούτω καθεξής. Τώρα, κάθε φορά που ο εγκέφαλός σας συναντά μια εικόνα με αυτά τα χαρακτηριστικά, τον καταγράφει αυτόματα ως ψάρι επειδή έχει ο εγκέφαλός σας έμαθα ότι είναι ένα ψάρι.
Έτσι λειτουργεί ο εγκέφαλός μας, αλλά τι γίνεται με μια μηχανή; Εάν η ίδια εικόνα τροφοδοτείται σε μια μηχανή, πώς θα αναγνωρίσει το μηχάνημα ότι είναι ένα ψάρι;
Εδώ είναι ο Μ μάθηση μπαίνει. Θα συνεχίσουμε να τροφοδοτούμε εικόνες ενός ψαριού σε έναν υπολογιστή με την ετικέτα 'fish' μέχρι το Η μηχανή μαθαίνει όλα τα χαρακτηριστικά που σχετίζονται με ψάρι.
Μόλις το μηχάνημα μάθει όλα τα χαρακτηριστικά που σχετίζονται με ένα ψάρι, θα το τροφοδοτήσουμε νέα δεδομένα για να προσδιορίσουμε πόσα έχει μάθει.
Με άλλα λόγια, Ακατέργαστα δεδομένα / Δεδομένα εκπαίδευσης δίνεται στο μηχάνημα, έτσι ώστε μαθαίνει όλα τα χαρακτηριστικά που σχετίζονται με το Δεδομένα εκπαίδευσης. Μόλις γίνει η μάθηση, δίνεται Νέα δεδομένα / Δεδομένα δοκιμής για να καθορίσει πόσο καλά έχει μάθει η μηχανή.
Ας προχωρήσουμε σε αυτό το μηχάνημα Machine Learning με R blog και να κατανοήσουμε τους τύπους της Machine Learning.
Τύποι μηχανικής μάθησης
Εποπτευόμενη μάθηση:
Ο αλγόριθμος εποπτευόμενης μάθησης μαθαίνει από ένα γνωστό σύνολο δεδομένων (Data Training) που έχει ετικέτες για να κάνει προβλέψεις.
Η παλινδρόμηση και η ταξινόμηση είναι μερικά παραδείγματα εποπτευόμενης μάθησης.
#Ταξινόμηση:
Η ταξινόμηση καθορίζει σε ποιο σύνολο κατηγοριών ανήκει μια νέα παρατήρηση, δηλαδή ένας αλγόριθμος ταξινόμησης μαθαίνει όλα τα χαρακτηριστικά και τις ετικέτες των δεδομένων εκπαίδευσης και όταν δίδονται νέα δεδομένα, πρέπει να εκχωρήσει ετικέτες στις νέες παρατηρήσεις ανάλογα με το τι έχει μάθει. από τα δεδομένα εκπαίδευσης.
Για αυτό το παράδειγμα, εάν στην πρώτη παρατήρηση δοθεί η ετικέτα 'Άνδρας' τότε ταξινομείται σωστά, αλλά εάν έχει την ετικέτα 'Γυναίκα', η ταξινόμηση είναι λανθασμένη. Ομοίως για τη δεύτερη παρατήρηση, εάν η ετικέτα που δίνεται είναι «Γυναίκα», είναι σωστά ταξινομημένη, αλλιώς η ταξινόμηση είναι λανθασμένη.
#Οπισθοδρόμηση:
Το Regression είναι ένας αλγόριθμος εποπτευόμενης μάθησης που βοηθά στον προσδιορισμό του τρόπου με τον οποίο μια μεταβλητή επηρεάζει μια άλλη μεταβλητή.
Εδώ, το 'living_area' είναι η ανεξάρτητη μεταβλητή και η 'τιμή' είναι η εξαρτώμενη μεταβλητή, δηλαδή καθορίζουμε πώς διαφέρει η 'τιμή' σε σχέση με το 'living_area'.
Μη επιτηρούμενη μάθηση:
Ο μη εποπτευόμενος αλγόριθμος μάθησης αντλεί συμπεράσματα από δεδομένα που δεν έχουν ετικέτες.
Ομαδοποίηση είναι ένα παράδειγμα μη εποπτευόμενης μάθησης. Τα «Κ-μέσα», «Ιεραρχικά», «Ασαφή C-Μέσα» είναι μερικά παραδείγματα αλγορίθμων ομαδοποίησης.
Σε αυτό το παράδειγμα, το σύνολο των παρατηρήσεων χωρίζεται σε δύο ομάδες. Η ομαδοποίηση γίνεται με βάση την ομοιότητα μεταξύ των παρατηρήσεων. Υπάρχει υψηλή ομοιότητα εντός του συμπλέγματος και χαμηλή ομοιότητα μεταξύ συστάδων, δηλαδή υπάρχει πολύ υψηλή ομοιότητα μεταξύ όλων των λεωφορείων αλλά χαμηλή ομοιότητα μεταξύ των λεωφορείων και των αυτοκινήτων.
Εκμάθηση Ενίσχυσης:
Το Reinforcement Learning είναι ένας τύπος αλγορίθμου μηχανικής μάθησης όπου το μηχανή / πράκτορας σε ένα περιβάλλον μαθαίνει την ιδανική συμπεριφορά προκειμένου να μεγιστοποιήσει την απόδοσή της. Απαιτείται απλή ανατροφοδότηση ανταμοιβής για να μάθει ο πράκτορας τη συμπεριφορά του, αυτό είναι γνωστό ως σήμα ενίσχυσης .
Ας πάρουμε ειρηνιστής για παράδειγμα. Όσο ο Pacman συνεχίζει να τρώει φαγητό, κερδίζει πόντους, αλλά όταν συγκρούεται με ένα τέρας χάνει τη ζωή του. Έτσι ο Pacman μαθαίνει ότι πρέπει να τρώει περισσότερο φαγητό και να αποφεύγει τα τέραταώστε να βελτιωθεί η απόδοσή του.
Υλοποίηση μηχανικής εκμάθησης με R:
Γραμμικής παλινδρόμησης:
Θα συνεργαστούμε με το σύνολο δεδομένων διαμαντιών για να εφαρμόσουμε τον αλγόριθμο γραμμικής παλινδρόμησης:
Περιγραφή του συνόλου δεδομένων:
Πριν από τη δημιουργία οποιουδήποτε μοντέλου στα δεδομένα, υποτίθεται ότι θα χωρίσουμε τα δεδομένα σε σύνολα «τρένο» και «δοκιμή». Το μοντέλο θα βασιστεί στο σετ 'τρένο' και η ακρίβειά του θα ελεγχθεί στο σετ 'δοκιμής'.
Πρέπει να φορτώσουμε το πακέτο 'caTools' για να χωρίσουμε τα δεδομένα σε δύο σύνολα.
βιβλιοθήκη (caTools)
Το πακέτο 'caTools' παρέχει μια λειτουργία 'sample.split ()' που βοηθά στη διάσπαση των δεδομένων.
sample.split (τιμή διαμαντιών $, SplitRatio = 0,65) -> split_index
Στο 65% των παρατηρήσεων από τη στήλη τιμών έχουν ανατεθεί η ετικέτα 'true' και το υπόλοιπο 35% έχει ετικέτα 'false'.
υποσύνολο (διαμάντια, split_index == T) -> τρένο υποσύνολο (διαμάντια, split_index == F) -> δοκιμή
Όλες οι παρατηρήσεις που έχουν 'αληθινή' ετικέτα έχουν αποθηκευτεί στο ' τρένο »αντικείμενο και αυτές οι παρατηρήσεις που έχουν 'ψευδείς' ετικέτες έχουν αντιστοιχιστεί στο σετ 'δοκιμής'.
Τώρα που έχει γίνει ο διαχωρισμός και έχουμε τα σύνολα 'τρένο' και 'δοκιμή', ήρθε η ώρα να χτίσουμε το μοντέλο γραμμικής παλινδρόμησης στο σετ προπόνησης.
Θα χρησιμοποιήσουμε τη συνάρτηση 'lm ()' για να δημιουργήσουμε το μοντέλο γραμμικής παλινδρόμησης στα δεδομένα 'τρένου'. Προσδιορίζουμε το τιμή των διαμαντιών σε σχέση με όλες τις άλλες μεταβλητές του συνόλου δεδομένων. Το ενσωματωμένο μοντέλο αποθηκεύεται στο αντικείμενο 'mod_regress'.
lm (τιμή ~., data = τρένο) -> mod_regress
Τώρα, που έχουμε δημιουργήσει το μοντέλο, πρέπει να κάνουμε προβλέψεις στο σετ δοκιμών. Η συνάρτηση 'προβλέπει ()' χρησιμοποιείται για τη λήψη προβλέψεων. Χρειάζονται δύο επιχειρήματα: το κατασκευασμένο μοντέλο και το σύνολο δοκιμών. Τα προβλεπόμενα αποτελέσματα αποθηκεύονται στο αντικείμενο 'result_regress'.
πρόβλεψη (mod_regress, test) -> result_regress
Ας συνδέσουμε τις πραγματικές τιμές τιμών από το σύνολο δεδομένων 'δοκιμή' και τις προβλεπόμενες τιμές σε ένα μεμονωμένο σύνολο δεδομένων χρησιμοποιώντας τη συνάρτηση 'cbind ()'. Το νέο πλαίσιο δεδομένων αποθηκεύεται στο 'Final_Data'
cbind (Πραγματική = δοκιμαστική τιμή $, Προβλεπόμενη = αποτέλεσμα_απόκλιση) -> Final_Data
as.data.frame (Final_Data) -> Final_Data
Μια ματιά στο 'Final_Data' που περιλαμβάνει πραγματικές τιμές και προβλεπόμενες τιμές:
Ας βρούμε το σφάλμα αφαιρώντας τις προβλεπόμενες τιμές από τις πραγματικές τιμές και προσθέστε αυτό το σφάλμα ως νέα στήλη στο 'Final_Data':
(Final_Data $ Actual- Final_Data $ Prediction) -> σφάλμα
cbind (Final_Data, σφάλμα) -> Final_Data
Μια ματιά στο 'Final_Data' που περιλαμβάνει επίσης το σφάλμα στην πρόβλεψη:
Τώρα, θα προχωρήσουμε και θα υπολογίσουμε ' Σφάλμα Root Mean Square ' το οποίο δίνει ένα συνολικό σφάλμα για όλες τις προβλέψεις
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':
πώς να δημιουργήσετε power dashboard
cbind (Πραγματική = δοκιμαστική τιμή $, Προβλεπόμενη = αποτέλεσμα_regress2) -> Final_Data2
as.data.frame (Final_Data2) -> Final_Data2
Ας προσθέσουμε επίσης το σφάλμα στην πρόβλεψη στο 'Final_Data2'
(Final_Data2 $ Actual- Final_Data2 $ Prediction) -> σφάλμα2
cbind (Final_Data2, error2) -> Final_Data2
Μια ματιά στο 'Final_Data2':
Εύρεση του Root Mean Square Error για να λάβετε το συνολικό σφάλμα:
rmse2<-sqrt(mean(Final_Data2$error^2))
Βλέπουμε ότι το 'rmse2' είναι οριακά μικρότερο από το 'rmse1' και ως εκ τούτου το δεύτερο μοντέλο είναι οριακά καλύτερο από το πρώτο μοντέλο.
πώς να ρυθμίσετε το classpath σε java χρησιμοποιώντας τη γραμμή εντολών
Ταξινόμηση:
Θα συνεργαστούμε με το σύνολο δεδομένων 'car_purchase' για εφαρμογή αναδρομική διαμέριση που είναι ένας αλγόριθμος ταξινόμησης.
Ας χωρίσουμε τα δεδομένα σε σύνολα “train” και “test” χρησιμοποιώντας τη συνάρτηση “sample.split ()” από το πακέτο “caTools”.
βιβλιοθήκη (caTools)
Στο 65% των παρατηρήσεων από τη στήλη «Αγορά» θα εκχωρηθούν ετικέτες «ΑΛΗΘΕΣ» και το υπόλοιπο θα εκχωρηθούν ετικέτες «ΛΑΘΟΣ».
sample.split (car_purchase $ Purchased, SplitRatio = 0,65) -> split_values
Όλες οι παρατηρήσεις που έχουν ετικέτα 'TRUE' θα αποθηκευτούν σε δεδομένα 'τρένου' και αυτές οι παρατηρήσεις με ετικέτα 'FALSE' θα αντιστοιχιστούν σε δεδομένα 'δοκιμής'.
υποσύνολο (car_purchase, split_values == T) -> train_data
υποσύνολο (car_purchase, split_values == F) -> test_data
Ώρα να δημιουργήσετε τον αλγόριθμο Recursive Partitioning:
Θα ξεκινήσουμε φορτώνοντας το πακέτο 'rpart':
βιβλιοθήκη (τμήμα)
Η στήλη 'Αγορά' θα είναι η εξαρτημένη μεταβλητή και όλες οι άλλες στήλες είναι οι ανεξάρτητες μεταβλητές, δηλαδή προσδιορίζουμε εάν το άτομο έχει αγοράσει το αυτοκίνητο ή όχι σε σχέση με όλες τις άλλες στήλες. Το μοντέλο βασίζεται στο 'train_data' και το αποτέλεσμα αποθηκεύεται στο 'mod1'.
rpart (Αγορά ~., data = train_data) -> mod1
Ας σχεδιάσουμε το αποτέλεσμα:
οικόπεδο (mod1, περιθώριο = 0,1)
κείμενο (mod1, όμορφο = T, cex = 0,8)
Τώρα, ας προχωρήσουμε και προβλέψουμε τα αποτελέσματα στο 'test_data'. Δίνουμε το ενσωματωμένο μοντέλο rpart 'mod1' ως το πρώτο όρισμα, το τεστ που 'test_data' ως το δεύτερο όρισμα και τον τύπο πρόβλεψης ως 'κλάση' για το τρίτο όρισμα. Το αποτέλεσμα αποθηκεύεται στο αντικείμενο 'result1'.
πρόβλεψη (mod1, test_data, type = 'class') -> αποτέλεσμα1
Ας αξιολογήσουμε την ακρίβεια του μοντέλου χρησιμοποιώντας τη λειτουργία 'confusionMatrix ()' από το πακέτο caret.
βιβλιοθήκη (caret)
confusionMatrix (πίνακας (test_data $ Αγορά, αποτέλεσμα 1))
Ο πίνακας σύγχυσης μάς λέει ότι από τις 90 παρατηρήσεις όπου το άτομο δεν αγόρασε το αυτοκίνητο, 79 παρατηρήσεις έχουν σωστά ταξινομηθεί ως 'Όχι' και 11 έχουν κατηγοριοποιηθεί λανθασμένα ως 'ΝΑΙ'. Ομοίως, από τις 50 παρατηρήσεις όπου το άτομο αγόρασε πραγματικά το αυτοκίνητο, οι 47 έχουν σωστά ταξινομηθεί ως 'ΝΑΙ' και 3 έχουν χαρακτηριστεί λανθασμένα ως 'ΟΧΙ'.
Μπορούμε να βρούμε την ακρίβεια του μοντέλου διαιρώντας τις σωστές προβλέψεις με τις συνολικές προβλέψεις, δηλαδή (79 + 47) / (79 + 47 + 11 + 3).
Ομαδοποίηση K-Means:
Θα συνεργαστούμε με το σύνολο δεδομένων 'iris' για να εφαρμόσουμε την ομαδοποίηση k-means:
Ας καταργήσουμε τη στήλη 'Είδη' και να δημιουργήσουμε ένα νέο σύνολο δεδομένων που περιλαμβάνει μόνο τις τέσσερις πρώτες στήλες από το σύνολο δεδομένων 'ίριδας'.
ίριδα [1: 4] -> iris_k
Ας πάρουμε τον αριθμό των συμπλεγμάτων να είναι 3. Η συνάρτηση 'Kmeans ()' λαμβάνει τα δεδομένα εισόδου και τον αριθμό των συστάδων στις οποίες πρόκειται να συγκεντρωθούν τα δεδομένα. Η σύνταξη είναι: kmeans (δεδομένα, k) όπου k είναι ο αριθμός των κέντρων συμπλέγματος.
kmeans (iris_k, 3) -> k1
Ανάλυση της ομαδοποίησης:
str (k1)
Η συνάρτηση str () δίνει τη δομή των kmeans που περιλαμβάνει διάφορες παραμέτρους όπως ininss, betweenss κ.λπ., αναλύοντας τις οποίες μπορείτε να μάθετε την απόδοση των kmeans.
betweenss: Μεταξύ του αθροίσματος των τετραγώνων, δηλ. ομοιότητα Intracluster
withinss: Εντός του αθροίσματος του τετραγώνου, δηλαδή ομοιότητα Intercluster
totwithinss: Άθροισμα όλων των ininss όλων των συστάδων, δηλαδή. Ολική ομοιότητα εντός του συμπλέγματος
Μια καλή ομαδοποίηση θα έχει χαμηλότερη τιμή 'tot.withinss' και υψηλότερη τιμή 'betweenss' που εξαρτάται από τον αριθμό των συμπλεγμάτων 'k' που επιλέχθηκαν αρχικά.
Ήρθε η ώρα να γίνετε ειδικός στη Μηχανική Εκμάθηση για να επωφεληθείτε από νέες ευκαιρίες που έρχονται στο δρόμο σας. Αυτό μας φέρνει στο τέλος αυτού του « Μηχανική εκμάθηση με R Blog. Ελπίζω ότι αυτό το blog ήταν ενημερωτικό.
Το Edureka έχει μια ειδική επιμέλεια που σας βοηθά να αποκτήσετε εμπειρία σε αλγόριθμους μηχανικής εκμάθησης, όπως ομαδοποίηση K-Means, δέντρα απόφασης, τυχαίο δάσος, Naive Bayes. Θα μάθετε τις έννοιες της Στατιστικής, της Χρονικής Σειράς, της Εξόρυξης Κειμένων και μια εισαγωγή στη Βαθιά Μάθηση. Νέες παρτίδες για αυτό το μάθημα ξεκινούν σύντομα !!