Πώς μπορείτε να χρησιμοποιήσετε μοντέλα γραμμικής παλινδρόμησης για να προβλέψετε τετραγωνικές, ριζικές και πολυωνυμικές συναρτήσεις

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

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

Θα σας δείξω πώς μπορείτε να βελτιώσετε τις γραμμικές παλινδρομήσεις σας με τετραγωνικές, ριζικές και εκθετικές συναρτήσεις.

Λοιπόν, ποια είναι η λειτουργική μορφή;

Η λειτουργική φόρμα είναι η εξίσωση που θέλετε να εκτιμήσετε .

Ας ξεκινήσουμε με ένα παράδειγμα και σκεφτούμε πώς θα μπορούσαμε να περιγράψουμε τους μισθούς των επιστημόνων δεδομένων. Ας υποθέσουμε ότι ένας μέσος επιστήμονας δεδομένων ( i) λαμβάνει έναν μισθό εισόδου ( entry_level_salary) συν ένα μπόνους για κάθε έτος της εμπειρίας του ( experience_i).

Έτσι, ο μισθός του ( salary_i) δίνεται από την ακόλουθη λειτουργική μορφή:

salary_i = entry_level_salary + beta_1 * experience_i

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

Καθώς το μοντέλο μηχανικής εκμάθησης φροντίζει τον συντελεστή beta_1, το μόνο που χρειάζεται να εισαγάγετε στο R ή σε οποιοδήποτε άλλο λογισμικό είναι:

model_1 <- lm(salary ~ entry_level_salary + experience)

Η γραμμικότητα στη λειτουργική μορφή απαιτεί να συνοψίσουμε κάθε καθοριστικό παράγοντα στη δεξιά πλευρά της εξίσωσης.

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

Πολλοί επίδοξοι επιστήμονες δεδομένων έχουν ήδη προβεί σε παρόμοιες προβλέψεις. Αλλά συχνά αυτό συμβαίνει μόνο με γραμμικά μοντέλα…

Πώς να εκτιμήσετε τα τετραγωνικά μοντέλα;

Όταν θέλουμε να εκτιμήσουμε ένα τετραγωνικό μοντέλο, δεν μπορούμε να πληκτρολογήσουμε κάτι σαν αυτό:

model_2 <- lm(salary ~ entry_level_salary + experience^2)
>> This will reject an error message

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

Σημείωση: Πρέπει να υπολογίσετε experience^²πριν την προσθέσετε στο μοντέλο σας. Έτσι, θα εκτελέσετε:

# First, compute the square values of experienceexperience_2 <- experience^2
# Then add them into your regressionmodel_2 <- lm(salary ~ entry_level_salary + experience_2)

Σε αντάλλαγμα, έχετε μια ωραία τετραγωνική συνάρτηση:

Υπολογίστε τις λειτουργίες ρίζας με γραμμικά μοντέλα

Συχνά παρατηρούμε τιμές που αυξάνονται γρήγορα στην αρχή και ευθυγραμμίζονται με κάποιο επίπεδο μετά. Ας τροποποιήσουμε το παράδειγμά μας και να εκτιμήσουμε μια τυπική καμπύλη μάθησης.

Στην αρχή μια καμπύλη μάθησης τείνει να είναι πολύ απότομη και επιβραδύνεται μετά από μερικά χρόνια.

Υπάρχει μια λειτουργία που διαθέτει μια τέτοια τάση, τη rootσυνάρτηση. Έτσι χρησιμοποιούμε το square rootγια experienceνα αποτυπώσουμε αυτήν τη σχέση:

# First, compute the square root values of experiencesqrt_experience <- sqrt(experience)
# Then add them into your regressionmodel_3 <- lm(knowledge ~ sqrt_experience)

Και πάλι, βεβαιωθείτε ότι έχετε υπολογίσει την τετραγωνική ρίζα πριν την προσθέσετε στο μοντέλο σας:

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

Μάθηση γραμμικών μοντέλων

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

# First, compute polynomialsexperience_2 <- experience^2experience_3 <- experience^3
# Then add them into your regressionmodel_4 <- lm(salary ~ experience + experience_2 + experience_3)

Δύο περιπτώσεις όπου πρέπει να χρησιμοποιήσετε άλλα μοντέλα

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

1. Πιθανότητες:

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

2. Καταμέτρηση μεταβλητών

Τέλος, κατά την εκτίμηση μιας μεταβλητής μέτρησης θέλετε να χρησιμοποιήσετε ένα μοντέλο Poisson. Οι μεταβλητές μέτρησης είναι μεταβλητές που μπορούν να είναι μόνο ακέραιοι όπως 1, 2, 3, 4.

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

Τι να αφαιρέσετε από αυτό το άρθρο

Υπάρχουν δύο πράγματα που θέλω να θυμάστε:

  1. Βελτιώστε τα γραμμικά μοντέλα σας και δοκιμάστε τετραγωνικές, ριζικές ή πολυωνυμικές συναρτήσεις.
  2. Να μεταμορφώνετε πάντα τα δεδομένα σας προτού τα προσθέσετε στην παλινδρόμηση.

Μεταφόρτωσα τον κωδικό R για όλα τα παραδείγματα στο GitHub. Μη διστάσετε να τα κατεβάσετε, να παίξετε μαζί τους ή να τα μοιραστείτε με τους φίλους και τους συναδέλφους σας.

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