Κοινή χρήση τεχνολογίας

Λογιστική παλινδρόμηση (καθαρή θεωρία)

2024-07-12

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina

1. Τι είναι η λογιστική παλινδρόμηση;

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

2. Γιατί χρειάζεται η μηχανική εκμάθηση να χρησιμοποιεί λογιστική παλινδρόμηση;

1. Δυαδική ταξινόμηση

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

Για παράδειγμα:

  • Προβλέψτε εάν ένας χρήστης θα κάνει κλικ σε μια διαφήμιση
  • Προσδιορίστε εάν ένα email είναι ανεπιθύμητο
  • Διαγνώστε εάν ένας ασθενής έχει κάποια ασθένεια

Αυτά τα παραδείγματα έχουν όλα ένα κοινό χαρακτηριστικό, δηλαδή, υπάρχουν μόνο δύο αποτελέσματα, true (1) και false (0)

2. Ταξινόμηση πολλαπλών κατηγοριών

Η λογιστική παλινδρόμηση μπορεί να επεκταθεί σε προβλήματα ταξινόμησης πολλών κατηγοριών μέσω μεθόδων όπως One-vs-Rest ή softmax

Για παράδειγμα:

  • Ταξινόμηση αντικειμένων στην αναγνώριση εικόνας
  • Ταξινόμηση κειμένων (ταξινόμηση ειδήσεων, ανάλυση συναισθημάτων κ.λπ.)

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

3. Πρόβλεψη πιθανοτήτων

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

Για παράδειγμα:

  • Προβλέψτε την πιθανότητα ο πελάτης να αγοράσει ένα προϊόν
  • Αξιολογήστε την πιθανότητα κινδύνου αθέτησης του αιτούντος δανείου

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

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

Φανταστείτε ότι είστε γιατρός και πρέπει να προσδιορίσετε εάν ένας ασθενής έχει μια συγκεκριμένη ασθένεια. Η λογιστική παλινδρόμηση είναι σαν ένας έξυπνος βοηθός για να σας βοηθήσει να κάνετε αυτή την κρίση. Ακριβώς όπως ένας γιατρός θα εξετάσει διάφορους δείκτες φυσικής εξέτασης ενός ασθενούς, η λογιστική παλινδρόμηση θα λάβει υπόψη πολλούς σχετικούς παράγοντες (τους ονομάζουμε χαρακτηριστικά). Ορισμένες μετρήσεις μπορεί να είναι πιο σημαντικές από άλλες. Η λογιστική παλινδρόμηση αποδίδει ένα «βάρος» σε κάθε παράγοντα, αντανακλώντας τη σημασία του. Τέλος, αντί να πει απλώς «ναι» ή «όχι», δίνει μια πιθανότητα. Για παράδειγμα, "Η πιθανότητα αυτός ο ασθενής να νοσήσει είναι 70%. Μπορείτε να ορίσετε ένα πρότυπο, για παράδειγμα, εάν υπερβαίνει το 50%, θεωρείται "ναι", διαφορετικά θεωρείται "όχι". Η λογιστική παλινδρόμηση «μαθαίνει» από μεγάλο αριθμό γνωστών περιπτώσεων. Ακριβώς όπως ένας γιατρός που αποκτά εμπειρία μέσα από ένα μεγάλο αριθμό περιπτώσεων.

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

3. Εντάξει, ας εισαγάγουμε τον τύπο της λογιστικής παλινδρόμησης

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

1. Τύπος γραμμικής παλινδρόμησης

y = b0 + b1x1 + b2x2 + ... + bn*xn

  • yείναι η εξαρτημένη μεταβλητή, η τιμή που θέλουμε να προβλέψουμε.
  • b0είναι η τομή, που υποδεικνύει την τιμή της εξαρτημένης μεταβλητής όταν όλες οι ανεξάρτητες μεταβλητές είναι 0
  • b1, b2, ..., bnείναι ο συντελεστής παλινδρόμησης, που υποδεικνύει το βαθμό επιρροής κάθε ανεξάρτητης μεταβλητής στην εξαρτημένη μεταβλητή
  • x1, x2, ..., xnείναι η ανεξάρτητη μεταβλητή, δηλαδή η τιμή που χρησιμοποιείται για την πρόβλεψη της εξαρτημένης μεταβλητής

Εδώ είναι ένα παράδειγμα γραμμικής παλινδρόμησης

Δεν έχει σημασία αν δεν καταλαβαίνετε τον κώδικα, απλά κοιτάξτε την εικόνα

  1. import matplotlib.pyplot as plt
  2. import numpy as np
  3. import matplotlib.font_manager as fm
  4. # Generate some simulated house data
  5. np.random.seed(0)
  6. area = np.random.rand(100) * 200 + 50 # House area (square meters)
  7. price = 2 * area + 5000 + np.random.randn(100) * 500 # House price (ten thousand yuan)
  8. # Fit the data using linear regression
  9. from sklearn.linear_model import LinearRegression
  10. model = LinearRegression()
  11. model.fit(area.reshape(-1, 1), price)
  12. # Get the regression coefficients
  13. b0 = model.intercept_
  14. b1 = model.coef_[0]
  15. # Plot the scatter plot
  16. plt.scatter(area, price, label="House Data")
  17. # Plot the regression line
  18. plt.plot(area, b0 + b1*area, color="red", label="Linear Regression")
  19. # Set the plot title and axis labels
  20. plt.title("Linear Regression of House Area and Price")
  21. # Set the font to SimSun (楷体)
  22. font_prop = fm.FontProperties(fname=r"C:WindowsFontssimkai.ttf", size=12) # Replace with your SimSun font path
  23. plt.xlabel("House Area (Square Meters)", fontproperties=font_prop)
  24. plt.ylabel("House Price (Ten Thousand Yuan)", fontproperties=font_prop)
  25. # Add legend
  26. plt.legend()
  27. # Show the plot
  28. plt.show()

1. Δημιουργήστε δεδομένα προσομοίωσης 100 σπιτιών

  1. np.random.seed(0)
  2. area = np.random.rand(100) * 200 + 50
  3. price = 2 * area + 5000 + np.random.randn(100) * 500

2. Χρησιμοποιήστε γραμμική παλινδρόμηση για να χωρέσετε τα δεδομένα

  1. from sklearn.linear_model import LinearRegression
  2. model = LinearRegression()
  3. model.fit(area.reshape(-1, 1), price)

3. Λάβετε τον συντελεστή παλινδρόμησης (b0 ~ bn)

  1. b0 = model.intercept_
  2. b1 = model.coef_[0]

4. Σχεδιάστε ένα διάγραμμα διασποράς

plt.scatter(area, price, label="House Data")

5. Σχεδιάστε τη γραμμή παλινδρόμησης

plt.plot(area, b0 + b1*area, color="red", label="Linear Regression")

6. Ορίστε τον τίτλο του άρθρου

plt.title("Linear Regression of House Area and Price")

7. Ορίστε τη γραμματοσειρά σε πλάγια γράμματα && μέγεθος γραμματοσειράς (εάν υπάρχει)

  1. font_prop = fm.FontProperties(fname=r"C:WindowsFontssimkai.ttf", size=12)
  2. plt.xlabel("House Area (Square Meters)", fontproperties=font_prop)
  3. plt.ylabel("House Price (Ten Thousand Yuan)", fontproperties=font_prop)

8. Προσθέστε ένα υπόμνημα

plt.legend()

9. Εμφάνιση γραφημάτων

plt.show()

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

Τα αποτελέσματα του τρεξίματος έχουν ως εξής:

Μερικοί άνθρωποι μπορεί να αναρωτηθούν: Γιατί παράγουμε τόσο μεγάλο όγκο δεδομένων;

Καλή ερώτηση~

Με αυτά τα δεδομένα μπορούμε να υπολογίσουμε χονδρικά y = b0 + b1x1 + b2x2 + ... + bn*xn Τι γίνεται με τον συντελεστή;

ΕΙΔΙΚΑ:

  • Το y αντιπροσωπεύει τη μεταβλητή στόχο που θέλουμε να προβλέψουμε, όπως οι τιμές των κατοικιών.
  • Τα x1, x2, ... xn αντιπροσωπεύουν παράγοντες που επηρεάζουν τη μεταβλητή-στόχο, όπως η περιοχή του σπιτιού, ο αριθμός των δωματίων, η γεωγραφική θέση κ.λπ.
  • Τα b0, b1, b2, ... bn αντιπροσωπεύουν τον βαθμό επιρροής κάθε παράγοντα στη μεταβλητή στόχο, που είναι ο συντελεστής που θέλουμε να υπολογίσουμε.

Συλλέγοντας μεγάλο όγκο δεδομένων, μπορούμε να χρησιμοποιήσουμε ένα μοντέλο γραμμικής παλινδρόμησης για να υπολογίσουμε αυτούς τους συντελεστές και να δημιουργήσουμε ένα μοντέλο πρόβλεψης.Αυτό το μοντέλο μπορεί να μας βοηθήσει να κατανοήσουμε την επίδραση διαφορετικών παραγόντων στη μεταβλητή στόχο και να προβλέψουμε την τιμή της μεταβλητής στόχου στο μέλλον (παρόμοια με το y = kx + b στα μαθηματικά. Με συγκεκριμένα k και b, μπορούμε να προβλέψουμε το y παίρνοντας x , η διαφορά είναι ότι υπάρχουν περισσότεροι συντελεστές k εδώ)

2.τύπος σιγμοειδούς συνάρτησης

σ(x) = 1 / (1 + exp(-x))

Η εικόνα της συνάρτησης sig μοιάζει με αυτό:

Ερώτηση 1: Γιατί να επιλέξετε τη σιγμοειδή συνάρτηση;

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

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

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

Κοιτάξτε τη συνάρτηση του sig όταν πλησιάζει το θετικό άπειρο, όταν πλησιάζει το 0 άπειρα.

Ερώτηση 2: Πώς ταξινομούνται οι σιγμοειδείς συναρτήσεις;

Τότε κάποιος θέλει να πει ξανά, τότε κάνετε λάθος Αν και λέγεται ότι οι δύο πλευρές μπορεί να είναι απείρως κοντά, η μέση δεν μπορεί να φτάσει για παράδειγμα, το 0,5 είναι μεταξύ 0 και 1, τότε λέτε ότι το 0,5 είναι κοντά στο 0. Ή πλησιάζει το 1;

Αν και λέγεται ότι οι αριθμοί στη μέση δεν μπορούν να είναι κοντά, μπορώ να το βάλω τεχνητά~

Για παράδειγμα, αν βάλω τους αριθμούς >= 0,5 στην κατηγορία 1 και τους αριθμούς < 0,5 στην κατηγορία 0, το πρόβλημα θα λυθεί~

Επομένως, το 0,5 δεν είναι ένα κρίσιμο σημείο, αλλά ένα κατώφλι που θέσαμε τεχνητά για ταξινόμηση.

3. Φόρμουλα λογιστικής παλινδρόμησης

p = σ(b0 + b1*x1 + b2*x2 + ... + bn*xn) = 1 / (1 + exp(-(b0 + b1*x1 + b2*x2 + ... + bn*xn) ))

Έχουμε πει τόσα πολλά πριν απλώς για να εισαγάγουμε αυτόν τον τύπο

Σου προκαλεί πονοκέφαλο και μόνο που το κοιτάς; Μου προκαλεί πονοκέφαλο και μόνο που το κοιτάζω, οπότε γιατί να μην το απλοποιήσουμε~

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

Αχαμ, παρεκκλίνομαι~ ΛοιπόνΗ λογιστική παλινδρόμηση είναι στην πραγματικότητα γραμμική παλινδρόμηση + σιγμοειδής συνάρτηση

Το z στη συνάρτηση σιγμοειδούς χρησιμοποιεί γραμμική παλινδρόμηση y = b0 + b1x1 + b2x2 + ... + bn*xn αντικαθιστώ

Τι κάνει λοιπόν αυτό;

Εντάξει, ας ρίξουμε μια ματιά~

4. Η ουσία και η λειτουργία της λογιστικής παλινδρόμησης

Η ουσία της λογιστικής παλινδρόμησης είναιΠροβλέψτε την πιθανότητα να συμβεί ένα συμβάν .Δεν ταξινομεί άμεσα τα δεδομένα, αλλά αντιστοιχίζει τα αποτελέσματα της γραμμικής παλινδρόμησης στο διάστημα 0~1 μέσω μιας συνάρτησης (Σιγμοειδές συνάρτηση Η τιμή σε αυτό το διάστημα αντιπροσωπεύει την πιθανότητα να συμβεί το συμβάν).

Η βάση της λογιστικής παλινδρόμησης είναι η γραμμική παλινδρόμηση. Η γραμμική παλινδρόμηση δημιουργεί ένα γραμμικό μοντέλο και προσπαθεί να προσαρμόσει τα δεδομένα με μια γραμμική συνάρτηση για να αποκτήσει μια προβλεπόμενη τιμή.Αυτή η προβλεπόμενη τιμή μπορεί να είναι οποιαδήποτε τιμή και δεν περιορίζεται από το διάστημα 0~1.

Η συνάρτηση Sigmoid είναι μια "μαγική" συνάρτηση που μετατρέπει την προβλεπόμενη τιμή που λαμβάνεται με γραμμική παλινδρόμηση στο διάστημα 0~1 και οι τιμές σε αυτό το διάστημα μπορούν να ερμηνευθούν ως η πιθανότητα να συμβεί το συμβάν.

Για να εκτελέσουμε δυαδική ταξινόμηση, πρέπει να ορίσουμε ένα όριο, συνήθως 0,5.Εάν η προβλεπόμενη πιθανότητα είναι μεγαλύτερη από το όριο, προσδιορίζεται ότι είναι θετική τάξη, διαφορετικά προσδιορίζεται ως αρνητική τάξη.

Για παράδειγμα:

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

Όλες οι εικόνες σε αυτό το άρθρο προέρχονται από[Μηχανική μάθηση] Η λογιστική παλινδρόμηση μπορεί να μάθει σε δέκα λεπτά, εύκολα κατανοητή (συμπεριλαμβανομένης της διαδικασίας λύσης σπινθήρα)_bilibili_bilibili