Ένας περιεκτικός οδηγός για την ενίσχυση των αλγορίθμων μηχανικής εκμάθησης



Αυτό το ιστολόγιο εστιάζει εξ ολοκλήρου στο πώς λειτουργεί η Ενίσχυση της Μηχανικής Μάθησης και πώς μπορεί να εφαρμοστεί για να αυξήσει την αποτελεσματικότητα των μοντέλων Μηχανικής Μάθησης.

Με τόσες πολλές εξελίξεις στον τομέα της υγειονομικής περίθαλψης, του μάρκετινγκ, των επιχειρήσεων και ούτω καθεξής, έχει γίνει ανάγκη να αναπτυχθεί πιο προηγμένη και περίπλοκη . Το Boosting Machine Learning είναι μια τέτοια τεχνική που μπορεί να χρησιμοποιηθεί για την επίλυση πολύπλοκων, βασισμένων σε δεδομένα, πραγματικών προβλημάτων. Αυτό το ιστολόγιο επικεντρώνεται εξ ολοκλήρου στο πώς λειτουργεί η Ενίσχυση της Μηχανικής Μάθησης και πώς μπορεί να εφαρμοστεί για να αυξήσει την αποτελεσματικότητα των μοντέλων Μηχανικής Μάθησης.

Για να αποκτήσετε σε βάθος γνώση της Τεχνητής Νοημοσύνης και της Μηχανικής Μάθησης, μπορείτε να εγγραφείτε ζωντανά από την Edureka με υποστήριξη 24/7 και πρόσβαση σε όλη τη διάρκεια ζωής.





Ακολουθεί μια λίστα θεμάτων που θα καλυφθούν σε αυτό το ιστολόγιο:

  1. Γιατί χρησιμοποιείται η ενίσχυση;
  2. Τι είναι η ενίσχυση;
  3. Πώς λειτουργεί ο αλγόριθμος ενίσχυσης;
  4. Τύποι ενίσχυσης
  5. Διαδήλωση

Γιατί χρησιμοποιείται η ενίσχυση;

Για την επίλυση των περίπλοκων προβλημάτων απαιτούμε πιο προηγμένες τεχνικές. Ας υποθέσουμε ότι, δεδομένου ενός συνόλου δεδομένων εικόνων που περιέχουν εικόνες γατών και σκύλων, σας ζητήθηκε να δημιουργήσετε ένα μοντέλο που μπορεί να ταξινομήσει αυτές τις εικόνες σε δύο ξεχωριστές τάξεις. Όπως κάθε άλλο άτομο, θα ξεκινήσετε προσδιορίζοντας τις εικόνες χρησιμοποιώντας κάποιους κανόνες, όπως δίνονται παρακάτω:



  1. Η εικόνα έχει μυτερά αυτιά: Cat

  2. Η εικόνα έχει μάτια σε σχήμα γάτας: Cat

  3. Η εικόνα έχει μεγαλύτερα άκρα: Σκύλος



  4. Η εικόνα έχει ακονισμένα νύχια: Cat

  5. Η εικόνα έχει μια ευρύτερη δομή στόματος: Σκύλος

Όλοι αυτοί οι κανόνες μας βοηθούν να προσδιορίσουμε εάν μια εικόνα είναι ένας σκύλος ή μια γάτα, ωστόσο, εάν θέλαμε να ταξινομήσουμε μια εικόνα με βάση έναν μεμονωμένο (μόνο) κανόνα, η πρόβλεψη θα ήταν λανθασμένη. Κάθε ένας από αυτούς τους κανόνες, μεμονωμένα, ονομάζεται αδύναμος μαθητής επειδή αυτοί οι κανόνες δεν είναι αρκετά ισχυροί για να ταξινομήσουν μια εικόνα ως γάτα ή σκύλο.

Επομένως, για να βεβαιωθούμε ότι η πρόβλεψή μας είναι ακριβέστερη, μπορούμε να συνδυάσουμε την πρόβλεψη από καθέναν από αυτούς τους αδύναμους μαθητές χρησιμοποιώντας τον κανόνα πλειοψηφίας ή τον σταθμισμένο μέσο όρο. Αυτό κάνει ένα δυνατό μοντέλο μαθητευόμενου.

Στο παραπάνω παράδειγμα, έχουμε ορίσει 5 αδύναμους μαθητές και η πλειοψηφία αυτών των κανόνων (δηλαδή 3 στους 5 μαθητές προβλέπουν την εικόνα ως γάτα) μας δίνει την πρόβλεψη ότι η εικόνα είναι μια γάτα. Επομένως, η τελική μας παραγωγή είναι μια γάτα.

Αυτό μας φέρνει στο ερώτημα,

Τι είναι η ενίσχυση;

Το Boosting είναι μια τεχνική μάθησης σύνολο που χρησιμοποιεί ένα σύνολο αλγορίθμων Μηχανικής Μάθησης για να μετατρέψει τον ασθενή μαθητή σε ισχυρούς μαθητές προκειμένου να αυξήσει την ακρίβεια του μοντέλου.

What-Is-Boosting-Boosting-Machine-Learning-Edureka

Τι είναι η ενίσχυση - Ενίσχυση της μηχανικής μάθησης - Edureka

Όπως ανέφερα το Boosting είναι μια μέθοδος μάθησης σύνολο, αλλά τι ακριβώς είναι το σύνολο μαθημάτων;

java δημιουργήστε μια σειρά αντικειμένων

Τι είναι το σύνολο στη μηχανική εκμάθηση;

Το Ensemble learning είναι μια μέθοδος που χρησιμοποιείται για να βελτιώσει την απόδοση του μοντέλου Machine Learning συνδυάζοντας αρκετούς μαθητές. Σε σύγκριση με ένα μόνο μοντέλο, αυτός ο τύπος μάθησης δημιουργεί μοντέλα με βελτιωμένη απόδοση και ακρίβεια. Αυτός είναι ο λόγος για τον οποίο οι μέθοδοι ensemble χρησιμοποιούνται για να κερδίσουν κορυφαίους διαγωνισμούς όπως ο διαγωνισμός σύστασης Netflix, οι διαγωνισμοί Kaggle και ούτω καθεξής.

Τι είναι το σύνολο της μάθησης - Ενίσχυση της μηχανικής μάθησης - Edureka

Παρακάτω έχω συζητήσει επίσης τη διαφορά μεταξύ Boosting και Bagging.

Ενίσχυση εναντίον Bagging

Το σύνολο των μαθημάτων μπορεί να πραγματοποιηθεί με δύο τρόπους:

  1. Διαδοχικό σύνολο, ευρέως γνωστό ως ενίσχυση , εδώ οι αδύναμοι μαθητές παράγονται διαδοχικά κατά τη φάση της προπόνησης. Η απόδοση του μοντέλου βελτιώνεται αποδίδοντας υψηλότερο βάρος στα προηγούμενα, λανθασμένα ταξινομημένα δείγματα. Ένα παράδειγμα ενίσχυσης είναι ο αλγόριθμος AdaBoost.

  2. Παράλληλο σετ , γνωστό ως σακκόπανο , εδώ οι αδύναμοι μαθητές παράγονται παράλληλα κατά τη φάση της προπόνησης. Η απόδοση του μοντέλου μπορεί να αυξηθεί με την παράλληλη εκπαίδευση ορισμένων αδύναμων μαθητών σε σετ δεδομένων. Ένα παράδειγμα της συσκευασίας είναι το τυχαίο δάσος αλγόριθμος.

Σε αυτό το ιστολόγιο, θα επικεντρωθώ στη μέθοδο Boosting, οπότε στην παρακάτω ενότητα θα καταλάβουμε πώς λειτουργεί ο αλγόριθμος ενίσχυσης.

Πώς λειτουργεί ο αλγόριθμος ενίσχυσης;

Η βασική αρχή πίσω από τη λειτουργία του αλγορίθμου ενίσχυσης είναι η δημιουργία πολλαπλών ασθενών μαθητών και ο συνδυασμός των προβλέψεών τους για τη διαμόρφωση ενός ισχυρού κανόνα. Αυτοί οι αδύναμοι κανόνες δημιουργούνται με την εφαρμογή βασικών αλγορίθμων Machine Learning σε διαφορετικές διανομές του συνόλου δεδομένων. Αυτοί οι αλγόριθμοι δημιουργούν αδύναμους κανόνες για κάθε επανάληψη. Μετά από πολλές επαναλήψεις, οι αδύναμοι μαθητές συνδυάζονται για να σχηματίσουν έναν ισχυρό μαθητή που θα προβλέψει ένα πιο ακριβές αποτέλεσμα.

Πώς λειτουργεί ο αλγόριθμος ενίσχυσης - Ενίσχυση της μηχανικής μάθησης - Edureka

Δείτε πώς λειτουργεί ο αλγόριθμος:

Βήμα 1: Ο αλγόριθμος βάσης διαβάζει τα δεδομένα και αποδίδει ίσο βάρος σε κάθε παρατήρηση δείγματος.

Βήμα 2: Αναγνωρίζονται ψευδείς προβλέψεις από τον βασικό μαθητή. Στην επόμενη επανάληψη, αυτές οι ψευδείς προβλέψεις ανατίθενται στον επόμενο βασικό μαθητή με υψηλότερη στάθμιση σε αυτές τις εσφαλμένες προβλέψεις.

Βήμα 3: Επαναλάβετε το βήμα 2 έως ότου ο αλγόριθμος μπορεί να ταξινομήσει σωστά την έξοδο.

Επομένως, ο κύριος στόχος της ενίσχυσης είναι να επικεντρωθούμε περισσότερο σε προβλέψεις με ταξινομημένες απώλειες.

Τώρα που γνωρίζουμε πώς λειτουργεί ο αλγόριθμος ενίσχυσης, ας κατανοήσουμε τους διαφορετικούς τύπους τεχνικών ενίσχυσης.

Τύποι ενίσχυσης

Υπάρχουν τρεις βασικοί τρόποι με τους οποίους μπορεί να πραγματοποιηθεί η ενίσχυση:

  1. Adaptive Boosting ή AdaBoost

  2. Ενίσχυση κλίσης

  3. XGBoost

Θα συζητήσω τα βασικά για κάθε έναν από αυτούς τους τύπους.

Προσαρμοστική ενίσχυση

  • Το AdaBoost υλοποιείται συνδυάζοντας αρκετούς αδύναμους μαθητές σε έναν μόνο ισχυρό μαθητή.

  • Οι αδύναμοι μαθητές στο AdaBoost λαμβάνουν υπόψη ένα χαρακτηριστικό εισόδου και σχεδιάζουν ένα δέντρο διαχωρισμού αποφάσεων που ονομάζεται κολόβωμα αποφάσεων. Κάθε παρατήρηση ζυγίζεται εξίσου ενώ συντάσσει το πρώτο κολόβωμα απόφασης.

  • Τα αποτελέσματα από το πρώτο κούτσουρο της ανάλυσης αναλύονται και εάν τυχόν παρατηρήσεις ταξινομηθούν λανθασμένα, τους αποδίδονται υψηλότερα βάρη.

  • Δημοσιεύστε αυτό, σχεδιάζεται ένα νέο κούτσουρο θεωρώντας τις παρατηρήσεις με υψηλότερα βάρη ως πιο σημαντικές.

  • Και πάλι, εάν τυχόν παρατηρήσεις δεν ταξινομηθούν σωστά, τους δίνεται υψηλότερο βάρος και αυτή η διαδικασία συνεχίζεται έως ότου όλες οι παρατηρήσεις πέσουν στη σωστή τάξη.

  • Το Adaboost μπορεί να χρησιμοποιηθεί τόσο για ταξινόμηση όσο και για προβλήματα παλινδρόμησης, ωστόσο χρησιμοποιείται πιο συχνά για σκοπούς ταξινόμησης.

Ενίσχυση κλίσης

Το Gradient Boosting βασίζεται επίσης στη διαδοχική μάθηση του συνόλου. Εδώ οι βασικοί μαθητές δημιουργούνται διαδοχικά με τέτοιο τρόπο ώστε ο παρών μαθητής βάσης να είναι πάντα πιο αποτελεσματικός από τον προηγούμενο, δηλαδή το συνολικό μοντέλο βελτιώνεται διαδοχικά με κάθε επανάληψη.

Η διαφορά σε αυτόν τον τύπο ενίσχυσης είναι ότι τα βάρη για εσφαλμένα ταξινομημένα αποτελέσματα δεν αυξάνονται, αντ 'αυτού, η μέθοδος Gradient Boosting προσπαθεί να βελτιστοποιήσει τη λειτουργία απώλειας του προηγούμενου εκπαιδευόμενου προσθέτοντας ένα νέο μοντέλο που προσθέτει αδύναμους μαθητές προκειμένου να μειωθεί η λειτουργία απώλειας.

Η βασική ιδέα εδώ είναι να ξεπεραστούν τα λάθη στις προβλέψεις του προηγούμενου μαθητή. Αυτός ο τύπος ενίσχυσης έχει τρία κύρια συστατικά:

  1. Λειτουργία απώλειας που πρέπει να βελτιωθεί.

  2. Αδύναμος μαθητής για τον υπολογισμό προβλέψεων και τη δημιουργία ισχυρών μαθητών.

  3. Ενα Πρόσθετο μοντέλο που θα κανονικοποιήσει τη λειτουργία απώλειας.

Όπως το AdaBoost, το Gradient Boosting μπορεί επίσης να χρησιμοποιηθεί για προβλήματα ταξινόμησης και παλινδρόμησης.

XGBoost

Το XGBoost είναι μια προηγμένη έκδοση της μεθόδου ενίσχυσης Gradient, σημαίνει κυριολεκτικά το eXtreme Gradient Boosting. Το XGBoost που αναπτύχθηκε από την Tianqi Chen, εμπίπτει στην κατηγορία της Κοινότητας Κατανεμημένης Μηχανικής Μάθησης (DMLC).

Ο κύριος στόχος αυτού του αλγορίθμου είναι να αυξήσει την ταχύτητα και την αποτελεσματικότητα του υπολογισμού. Ο αλγόριθμος Gradient Descent Boosting υπολογίζει την έξοδο με πιο αργό ρυθμό, καθώς αναλύουν διαδοχικά το σύνολο δεδομένων, επομένως το XGBoost χρησιμοποιείται για να ενισχύσει ή να ενισχύσει εξαιρετικά την απόδοση του μοντέλου.

XGBoost - Ενίσχυση μηχανικής εκμάθησης - Edureka

Το XGBoost έχει σχεδιαστεί για να εστιάζει στην υπολογιστική ταχύτητα και την απόδοση του μοντέλου. Τα κύρια χαρακτηριστικά που παρέχει η XGBoost είναι:

  • Παράλληλα δημιουργεί δέντρα αποφάσεων.

  • Εφαρμογή κατανεμημένων υπολογιστικών μεθόδων για την αξιολόγηση μεγάλων και πολύπλοκων μοντέλων.

  • Χρησιμοποιώντας το Out-of-Core Computing για την ανάλυση τεράστιων συνόλων δεδομένων.

  • Εφαρμογή βελτιστοποίησης προσωρινής μνήμης για καλύτερη χρήση των πόρων.

Έτσι ήταντους διαφορετικούς τύπους αλγορίθμων Boosting Machine Learning. Για να κάνουμε τα πράγματα ενδιαφέροντα, στην παρακάτω ενότητα θα εκτελέσουμε μια επίδειξη για να δούμε πώς μπορούν να εφαρμοστούν οι αλγόριθμοι ενίσχυσης στο Python.

Ενίσχυση της μηχανικής εκμάθησης στο Python

Σύντομη αποποίηση ευθυνών: Θα χρησιμοποιήσω το Python για να τρέξω αυτό το demo, οπότε αν δεν γνωρίζετε την Python, μπορείτε να διαβάσετε τα ακόλουθα ιστολόγια:

  1. Πώς να μάθετε το Python 3 από το Scratch - Ένας οδηγός για αρχάριους

Τώρα είναι ώρα να βρώσετε τα χέρια σας και να αρχίσετε να κωδικοποιείτε.

Δήλωση προβλήματος: Για να μελετήσετε ένα σύνολο δεδομένων μανιταριών και να δημιουργήσετε ένα μοντέλο Machine Learning που μπορεί να χαρακτηρίσει ένα μανιτάρι είτε ως δηλητηριώδες είτε όχι, αναλύοντας τα χαρακτηριστικά του.

Περιγραφή συνόλου δεδομένων: Αυτό το σύνολο δεδομένων παρέχει μια λεπτομερή περιγραφή υποθετικών δειγμάτων σύμφωνα με 23 είδη μανιταριών. Κάθε είδος ταξινομείται είτε ως βρώσιμα μανιτάρια είτε ως μη βρώσιμα (δηλητηριώδη).

Λογική: Για να δημιουργήσετε ένα μοντέλο Machine Learning χρησιμοποιώντας έναν από τους αλγόριθμους Boosting προκειμένου να προβλέψετε εάν ένα μανιτάρι είναι βρώσιμο ή όχι.

Βήμα 1: Εισαγάγετε τα απαιτούμενα πακέτα

από sklearn.ensemble import AdaBoostClassifier από sklearn.preprocessing import LabelEncoder from sklearn.tree import DecisionTreeClassifier import pandas as pd # Import train_test_split function from sklearn.model_selection import train_test_split #Import scikit-learn metrics module για τον υπολογισμό της ακρίβειας

Βήμα 2: Εισαγάγετε το σύνολο δεδομένων

# Φόρτωση στο σύνολο δεδομένων δεδομένων = pd.read_csv ('C: //Users//NeelTemp//Desktop//mushroomsdataset.csv')

Βήμα 3: Επεξεργασία δεδομένων

# Ορίστε τα ονόματα στηλών dataset.columns = ['target', 'cap-σχήμα', 'cap-επιφάνεια', 'cap-color', 'μώλωπες', 'μυρωδιά', 'gill-attachment', 'gill-spacing ',' gill-size ',' gill-color ',' stalk-σχήμα ',' stalk-root ',' stalk-permukaan-above-ring ',' stalk-permukaan-under-ring ',' stalk-color ' -πάνω δαχτυλίδι »,« στέλεχος-χρώμα-κάτω-δαχτυλίδι »,« τύπος πέπλο »,« χρώμα πέπλο »,« αριθμός δαχτυλιδιού »,« τύπος δακτυλίου »,« σπορά-εκτύπωση-χρώμα »,« πληθυσμός ',' habitat '] για ετικέτα στο σύνολο δεδομένων. στήλες: σύνολο δεδομένων [label] = LabelEncoder (). fit (σύνολο δεδομένων [label]). transform (σύνολο δεδομένων [label]) # Εμφάνιση πληροφοριών σχετικά με το σύνολο δεδομένων εκτύπωσης (dataset.info ( )) Int64Index: 8124 καταχωρήσεις, 6074 έως 686 Στήλες δεδομένων (σύνολο 23 στηλών): στόχος 8124 μη-μηδενικό int32 cap-σχήμα 8124 non-null int32 cap-επιφάνεια 8124 non-null int32 cap-color 8124 non-null int32 μώλωπες 8124 non-null int32 odor 8124 non-null int32 insill-attachment 8124 non-null int32 gill-spacing 8124 non-null int32 gill-size 8124 non-null int32 gill-color 8124 non-null int32 stalk-σχήμα 8124 non-null int32 stalk-root 8124 non-null int32 μίσχος-επιφάνεια-πάνω-δακτύλιος 8124 μη-μηδέν int32 στέλεχος-επιφάνεια-κάτω-δακτύλιος 8124 μη-μηδέν int32 στελέχος-χρώμα-πάνω-δαχτυλίδι 8124 μη-μηδέν int32 μίσχος-χρώμα-κάτω-δαχτυλίδι 8124 μη-μηδέν int32 πέπλο- τύπος 8124 μη-null int32 πέπλο-χρώμα 8124 non-null int32 ring-number 8124 non-null int32 ring-type 8124 non-null int32 spore-print-color 8124 non-null int32 πληθυσμός 8124 non-null int32 habitat 8124 non- null int32 dtypes: int32 (23) χρήση μνήμης: 793,4 KB

Βήμα 4: Συγκέντρωση δεδομένων

X = dataset.drop (['target'], axis = 1) Y = σύνολο δεδομένων ['target'] X_train, X_test, Y_train, Y_test = train_test_split (X, Y, test_size = 0.3)

Βήμα 5: Δημιουργήστε το μοντέλο

μοντέλο = DecisionTreeClassifier (κριτήριο = 'εντροπία', max_depth = 1) AdaBoost = AdaBoostClassifier (base_estimator = μοντέλο, n_estimators = 400, learning_rate = 1)

Στο παραπάνω απόσπασμα κώδικα, έχουμε εφαρμόσει τον αλγόριθμο AdaBoost. Η συνάρτηση «AdaBoostClassifier» περιλαμβάνει τρεις σημαντικές παραμέτρους:

  • base_estimator: Ο βασικός εκτιμητής (αδύναμος μαθητής) είναι από προεπιλογή το Tree Trees
  • n_estimator: Αυτό το πεδίο καθορίζει τον αριθμό των βασικών μαθητών που θα χρησιμοποιηθούν.
  • learning_rate: Αυτό το πεδίο καθορίζει το ποσοστό εκμάθησης, το οποίο έχουμε ορίσει στην προεπιλεγμένη τιμή, δηλαδή 1.
# Τοποθετήστε το μοντέλο με εκπαιδευτικά δεδομένα boostmodel = AdaBoost.fit (X_train, Y_train)

Βήμα 6: Αξιολόγηση μοντέλου

# Αξιολογήστε την ακρίβεια του μοντέλου y_pred = boostmodel.predict (X_test) predictions = metrics.accuracy_score (Y_test, y_pred) # Υπολογισμός της ακρίβειας στην ποσοστιαία εκτύπωση ('Η ακρίβεια είναι:', προβλέψεις * 100, '%') είναι: 100,0%

Λάβαμε μια ακρίβεια 100% που είναι τέλεια!

Έτσι με αυτό, καταλήγουμε στο τέλος αυτού του Blog Learning Boosting Machine Learning. Αν θέλετε να μάθετε περισσότερα για τη Μηχανική Εκμάθηση, μπορείτε να διαβάσετε αυτά τα ιστολόγια:

Εάν επιθυμείτε να εγγραφείτε για ένα πλήρες μάθημα Τεχνητής Νοημοσύνης και Μηχανικής Μάθησης, η Edureka διαθέτει μια ειδικά επιμελημένη που θα σας κάνει ικανό σε τεχνικές όπως η εποπτευόμενη μάθηση, η μη εποπτευόμενη μάθηση και η επεξεργασία φυσικής γλώσσας. Περιλαμβάνει εκπαίδευση σχετικά με τις τελευταίες εξελίξεις και τεχνικές προσεγγίσεις στην Τεχνητή Νοημοσύνη & Μηχανική Μάθηση, όπως η Βαθιά Μάθηση, τα Γραφικά Μοντέλα και η Ενίσχυση της Μάθησης.