Εισαγωγή
Η ενασχόληση με τη μηχανική μάθηση είναι ένας αρκετά ενδιαφέρον αλλά μακρύς δρόμος. Οι περισσότεροι μαθαίνουν κάποιες βασικές έννοιες και στη συνέχεια προσπαθούν να μάθουν - εφαρμόσουν με κάποια απλή μέθοδο. Μία από τις πρώτες προσεγγίσεις που συναντάμε είτε σε οδηγούς εκμάθησης, είτε στη σχολή είναι η λογιστική παλινδρόμηση, γραμμική παλινδρόμηση κ.α. Αυτά είναι κάποιες απλές τεχνικές που γίνονται εύκολα αντιληπτές για το πώς δουλεύουν και προσφέρουν μία αποδεκτή ακρίβεια. Πλέον σπάνια χρησιμοποιούνται από μόνες τους για να εξάγουμε κάποια συμπεράσματα, μιας και υπάρχουν αξιόλογες εναλλακτικές που μπορούν να μας δώσουν μεγαλύτερα ποσοστά ακρίβειας. Μία από αυτές είναι οι αλγορίθμοι ενίσχυσης βαθμίδας (Gradient Boosting Machines - GBMs). Οι συγκεκριμένοι αλγόριθμοι βελτιώνουν σε μεγάλο βαθμό το μοντέλο μας και δεν είναι ιδιαίτερα δύσκολη η χρήση αυτών. Φυσικά πριν κάνουμε χρήση των μοντέλων αυτών (π.χ. με το πακέτο tidymodels), θα πρέπει να εγκαταστήσουμε τα σχετικά λογισμικά. Επομένως, σε αυτό το άρθρο θα συνοψίσω όλες τις σχετικές πληροφορίες για την εγκατάσταση αυτών.
Show the code
library(highcharter)
library(gtrendsR)
library(dplyr)
googleTrendsData = gtrendsR::gtrends(keyword = c("LightGBM", "CatBoost", "XGBoost"), gprop = "web", onlyInterest = TRUE)
interestOverTime = googleTrendsData[["interest_over_time"]] %>%
dplyr::mutate(date = lubridate::ymd(date)) %>%
dplyr::mutate(Year = lubridate::year(date)) %>%
select(Year, keyword, hits) %>%
group_by(Year, keyword) %>%
summarise(Average = round(mean(hits), digits = 1))
highchart() %>%
hc_chart(type = "line") %>%
hc_title(text = "Ενδιαφέρον αναζήτησης σε μηχανές αναζήτησης") %>%
hc_subtitle(text = "Ποιος από τους αλγόριθμούς ενίσχυσης βαθμίδας (GBMs) έχει περισσότερες
αναζητήσεις.") %>%
hc_xAxis(categories = unique(interestOverTime$Year)) %>%
hc_yAxis(title = list(text = "Τάση")) %>%
hc_add_series(
name = "XGBoost",
data = interestOverTime %>% filter(keyword == "XGBoost") %>% pull(Average)
) %>%
hc_add_series(
name = "CatBoost",
data = interestOverTime %>% filter(keyword == "CatBoost") %>% pull(Average)
) %>%
hc_add_series(
name = "LightGBM",
data = interestOverTime %>% filter(keyword == "LightGBM") %>% pull(Average)
)LightGBM
Επιλογή 1. Εγκατάσταση του πακέτου R
Αν διαβάζετε αυτή την ιστοσελίδα πιθανότατα γνωρίζετε ήδη ότι προγραμματίζω κυρίως με R. Είναι προφανές ότι θα ξεκινήσω με μία λύση για τους R χρήστες. Στη συγκεκριμένη περίπτωση εγκαθιστώ το αντίστοιχο πακέτο της R, lightgbm, έτσι ώστε να το χρησιμοποιήσουμε.
R code
start_time_lightgbm <- Sys.time()
install.packages("lightgbm", repos = "https://cran.r-project.org")
end_time_lightgbm <- Sys.time()Επιλογή 2. Εγκατάσταση μέσω του CMAKE
Στη σελίδα τεκμηρίωσης του LightGBM αναφέρονται περισσότερες λεπτομέρειες, ωστόσο οι βασικές εντολές για εγκατάσταση μέσω του terminal είναι οι εξής:
Terminal
sudo apt install cmakeTerminal
git clone --recursive https://github.com/microsoft/LightGBM
cd LightGBM
mkdir build
cd build
cmake ..
make -j4CatBoost
Για το CatBoost μπορούμε να βρούμε εδώ τις εκδόσεις του λογισμικού. Στη δική μου περίπτωση όταν προσπάθησα να εγκαταστήσω τη βιβλιοθήκη devtools προέκυψε ένα σφάλμα που δεν μου επέτρεψε την εγκατάσταση του πακέτου. Σύμφωνα με το μήνυμα σφάλματος στον υπολογιστή μου (στον οποίο τρέχω Ubuntu 22) μου έλειπαν οι βιβλιοθήκες libharfbuzz-dev και libfribidi-dev. Αφού πρόσθεσα τα παραπάνω πακέτα και επανεκκίνησα το RStudio, η διαδικασία ολοκληρώθηκε κανονικά. Αφού εγκαταστήσω το devtools μπορώ να χρησιμοποιήσω την εντολή install_url, καθώς δεν υπάρχει (ή τουλάχιστον δεν γνωρίζω) αντίστοιχη βιβλιοθήκη στο CRAN. Έτσι χρησιμοποιώ έναν σύνδεσμο αναλόγως της έκδοσης που χρειάζομαι από την επίσημη σελίδα του CatBoost project στο GitHub.

XGBoost
Τέλος, μας έχει απομείνει πιθανώς το πιο γνωστό πακέτο μεταξύ των gradient boosting. Η συγκεκριμένη υλοποίηση είναι ίσως αυτή που βελτιώνει περισσότερο τις εκτιμήσεις μας σε μεθόδους μηχανικής μάθησης. Σταθερά σε πάρα πολλά προβλήματα ξεπερνάει σε απόδοση τις υπόλοιπες συμβατές μεθόδους (λογιστική / γραμμική παλινδρόμηση, Naive Bayes κτλ.). Βέβαια όταν προσπαθήσω να κατασκευάσω ένα μοντέλο μηχανικής μάθησης με το XGBoost, ενδεχομένως να είναι το πιο χρονοβόρο σε σχέση με τις υπόλοιπες υλοποιήσεις. Η προσθήκη βιβλιοθηκών είναι αντίστοιχα εύκολη με αυτή του lightgbm, μέσω του xgboost.
R code
start_time_xgboost <- Sys.time()
install.packages("xgboost")
end_time_xgboost <- Sys.time()Σύνοψη
Οι αλγόριθμοι ενίσχυσης βαθμίδας μας δίνουν προβλεπτικά μοντέλα με αυξημένη απόδοση (προβλεπτική ικανότητα) σε σχέση με άλλες συμβατικές μεθόδους μηχανικής μάθησης. Σε αυτό το άρθρο διαπιστώθηκε ότι η R κατά κύριο λόγο έχει εύκολους τρόπους για να εγκαταστήσουμε και εν τέλει να χρησιμοποιήσουμε σχετικούς αλγόριθμους. Θα ήθελα να κλείσω με ένα μικρό πείραμα που έκανα. Παρατήρησα ότι η εγκατάσταση αυτών των πακέτων είναι ιδιαίτερα χρονοβόρα και σκέφτηκα να χρονομετρήσω τη διάρκεια. Έτσι λοιπόν, κατέγραψα ότι η εγκατάσταση του πακέτου LightGBM διήρκησε περισσότερο, κάνοντας σχεδόν 8 λεπτά, ακολουθούμενο από το XGBoost, και τέλος το CatBoost, με μόλις 2 λεπτά!
| Μοντέλο | Μέθοδος εγκατάστασης | Χρόνος εγκατάστασης |
|---|---|---|
| LightGBM | R πακέτο | 7.79 λεπτά |
| CatBoost | Σύνδεσμος έκδοσης | 2.1 λεπτά |
| XGBoost | R πακέτο | 6.16 λεπτά |
Αναφορά
@online{2022,
author = {, stesiam},
title = {Εγκατάσταση αλγορίθμων ενίσχυσης βαθμίδας στο Linux},
date = {2022-11-13},
url = {https://stesiam.com/el/posts/install-gbm-in-ubuntu/},
langid = {el}
}