τα στοιχεία επικοινωνίας μου
Ταχυδρομείο[email protected]
2024-07-12
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
γραμμικής παλινδρόμησης: Σε περιορισμένα δεδομένα, με προσαρμογή παραμέτρων, προσαρμόζεται μια ευθεία γραμμή και αυτή η ευθεία γραμμή (μοντέλο) χρησιμοποιείται για την εκτέλεση πειραμάτων σε άγνωστα δεδομένα.προλέγω。
Ευθείαγενική μορφή:
y = w × x + κατά = w φορές x + βy=w×Χ+σι
Η κατάσταση ολόκληρης της ευθείας δίνεται από w και bw και bwκαισιΑποφασίζω, wwwκαθορίστε την ευθεία γραμμήκλίση(δηλαδή η γωνία κλίσης), ΒΒσιΠροσδιορίστε την ευθεία στον άξονα Υαναχαιτίζω(Έλεγχος της πάνω και κάτω μετάφρασης μιας ευθείας γραμμής, γνωστή και ωςπροκατάληψη ).Επομένως, χρειάζεται μόνο να υπολογίσουμε wwwκαι ΒΒσιΗ τιμή του μπορεί να καθορίσει μια συγκεκριμένη ευθεία Στη συνέχεια, θα μελετήσουμε πώς να βρούμε wwwκαι ΒΒσι。
κατάλληλο ουσιαστικό
ουσιαστικό | Ορισμός |
---|---|
Σετ προπόνησης | Σύνολο δεδομένων που χρησιμοποιείται για την εκπαίδευση του μοντέλου |
σετ δοκιμής | Σύνολο δεδομένων που χρησιμοποιείται για τον έλεγχο της ποιότητας του μοντέλου |
Δείγμα εκπαίδευσης/Σημείο εκπαίδευσης (Δείγμα εκπαίδευσης) | Κάθε στοιχείο δεδομένων στο σετ εκπαίδευσης |
Χαρακτηριστικά | Τα δεδομένα που εισάγονται στο μοντέλο μπορεί να είναι αριθμητικές τιμές, ετικέτες κατηγορίας, τιμές εικονοστοιχείων εικόνας κ.λπ. |
Επιγραφή | Το μοντέλο πρέπει να προβλέψει την τιμή στόχο. Για προβλήματα ταξινόμησης, η ετικέτα είναι συνήθως το όνομα της κλάσης για προβλήματα παλινδρόμησης, η ετικέτα είναι μια συνεχής τιμή. |
Ας μελετήσουμε πρώτα τη μονομεταβλητή γραμμική παλινδρόμηση Η λεγόμενη μονομεταβλητή γραμμική παλινδρόμηση αναφέρεται σε μια γραμμική συνάρτηση με μία μόνο ανεξάρτητη μεταβλητή, όπως: y = w ⋅ x + by = wcdot x +by=w⋅Χ+σιΑυτό είναιΜονομεταβλητή ευθεία γραμμή, έχει μόνο μία μεταβλητή εισόδου xxΧ . Αυτή η ευθεία μπορεί να εκφραστεί σε ένα δισδιάστατο επίπεδο (ο οριζόντιος άξονας είναι Χ και ο κατακόρυφος άξονας είναι Υ).
Όταν λαμβάνουμε ένα σύνολο αδιαίρετων δεδομένων, συνήθως χωρίζουμε τα δεδομένα σε ένα σετ εκπαίδευσης και σε ένα σύνολο δοκιμής Μια απλή μέθοδος διαίρεσης είναι: πάρτε το πρώτο 80% των δειγμάτων ως σύνολο εκπαίδευσης και το υπόλοιπο 20% ως. το σετ δοκιμής.
Ας υποθέσουμε ότι το μάθαμε wwwκαι ΒΒσι, τότε έχουμε καθορίσει μια ευθεία γραμμή και μπορούμε να χρησιμοποιήσουμε αυτή την ευθεία για να κάνουμε προβλέψεις προκειμένου να διευκολύνουμε την κρίση της τιμής που προβλέπουμεεσυμε πραγματική αξίαyμεταξύλάθοςΠόσο, θέλουμε να ορίσουμε *"ένας χάρακας"*, που χρησιμοποιείται για τη μέτρηση της προβλεπόμενης τιμής εσυy′με αληθινή αξία εεεy σφάλμα μεταξύ.Εδώ χρησιμοποιούμεμέσο τετραγωνικό σφάλμανα ορίσεισυνάρτηση κόστους:
J ( w , b ) = 1 2 m ∑ i = 1 m ( fw , b ( x ( i ) ) − y ( i ) ) 2 J(w,b) = frac{1}{2m}sumlimits_{i = 1}^m(f_{w,b}(x^{(i)}) - y^{(i)})^2J(w,σι)=2Μ1Εγώ=1∑Μ(φάw,σι(Χ(Εγώ))−y(Εγώ))2
Αποσυναρμολόγηση φόρμουλας:
fw , b ( x ( i ) ) − y ( i ) f_{w,b}(x^{(i)}) - y^{(i)}φάw,σι(Χ(Εγώ))−y(Εγώ):σε fw , b ( x ( i ) ) f_{w,b}(x^{(i)})φάw,σι(Χ(Εγώ))αντιπροσωπεύει την τιμή που προβλέπεται χρησιμοποιώντας το εκπαιδευμένο μοντέλο, ενώ y (i ) y^{(i)}y(Εγώ)αντιπροσωπεύει το πραγματικό αποτέλεσμα κάθε δείγματος εκπαίδευσης και η διαφορά μεταξύ των δύο αντιπροσωπεύει το σφάλμα μεταξύ της τιμής που προβλέπεται από το μοντέλο και της πραγματικής τιμής.
Γιατί τετράγωνο το σφάλμα;
Σε όλα τα δείγματα, κάθε σφάλμα μπορεί να είναι θετικό ή αρνητικό και θα υπάρχει μια ορισμένη πιθανότητα μετατόπισης κατά τη διαδικασία άθροισης. Αυτό θα οδηγήσει όταν το σφάλμα κάθε στοιχείου είναι πολύ μεγάλο (όπως: -100, + 90, -25, +30), μετά την άθροιση, προκύπτει μια μικρή τιμή (-5) και τελικά προκύπτει μια λανθασμένη κρίση.
1 2 m frac{1}{2m}2Μ1: Αντιπροσωπεύει τον μέσο όρο του αθροίσματος όλων των σφαλμάτων δεδομένων (αυτός ο μέσος όρος μπορεί να αντιπροσωπεύει το σφάλμα ολόκληρου του μοντέλου κατά μία έννοια) και λαμβάνει το μέσο τετραγωνικό σφάλμα.
Γιατί διαιρέστε με 2?
Επειδή όταν εκτελείται αργότερα η βαθμίδα, η παραγωγή θα διαιρέσει τον δείκτη 2 σε συντελεστές, επειδή για μεγάλο όγκο δεδομένων, μια σταθερά έχει μικρή επίδραση στο μοντέλο Για να εισαγάγετε τον τύπο παραγωγής, διαιρέστε τον με το 2 εκ των προτέρων. , για μεταγενέστερη μετατόπιση.
Γνωρίζοντας τη συνάρτηση κόστους, χρειάζεται μόνο να βρούμε τρόπους για να μειώσουμε το κόστος, τόσο πιο κοντά είναι η προβλεπόμενη αξία μας στην πραγματική αξία.
Παρατηρώντας τη συνάρτηση κόστους σφάλματος, μπορούμε να δούμε ότι η συνάρτηση κόστους σφάλματος είναι μια τετραγωνική συνάρτηση, δηλαδή μιακυρτή συνάρτηση, μια ιδιότητα της κυρτής συνάρτησης είναι:Το ακραίο σημείο είναι το μέγιστο σημείο , δεδομένου ότι η συνάρτηση κόστους είναι μια τετραγωνική συνάρτηση που ανοίγει προς τα πάνω (ο τύπος μπορεί να επεκταθεί και μπορείτε διαισθητικά να αισθανθείτε ότι ο συντελεστής του τετραγωνικού όρου είναι μεγαλύτερος από 0), επομένως η κυρτή συνάρτηση έχει μόνο μια ελάχιστη τιμή, και εμείς μόνο πρέπει να βρείτε το Η ελάχιστη τιμή είναι η ελάχιστη τιμή.Για τη συνάρτηση κόστους σφάλματος J ( w , b ) J(w,b)J(w,σι) , η επέκταση του τύπου του μπορεί να γραφτεί ως:
J ( w , b ) = 1 2 m ∑ i = 1 m ( ( wx ( i ) + b ) − y ( i ) ) 2 J(w,b) = frac{1}{2m}sumlimits_{i = 1 }^m((wx^{(i)}+b) - y^{(i)})^2J(w,σι)=2Μ1Εγώ=1∑Μ((wΧ(Εγώ)+σι)−y(Εγώ))2
JJJΤο μέγεθος εξαρτάται από τις παραμέτρους wwwκαι ΒΒσιΤο σχήμα της συνάρτησης κόστους είναι περίπου το εξής:
Η ιδέα της κλίσης κατάβασης τρέχει κυρίωςΒρείτε τη μερική παράγωγομέθοδος, η οποία σχετίζεται με τη βιολογικήμεταβλητές ελέγχουΗ μέθοδος είναι πολύ παρόμοια, όπως: στον έλεγχο ΒΒσιΕνημέρωση χωρίς αλλαγή www(Ορατός ΒΒσιείναι σταθερά), τύπος: w ′ = w − α ∂ J ( w ) ∂ ww' = w - άλφα frac{μερικό J(w)}{μερικό w}w′=w−α∂w∂J(w) Υποδεικνύει ότι έχει ενημερωθεί διαδοχικά www,σε α άλφαα αντιπροσωπεύειποσοστό μάθησης Χρησιμοποιείται για να αντιπροσωπεύει το μέγεθος του βήματος, το οποίο μπορεί επίσης να γίνει κατανοητό ως η ταχύτητα καθόδου, ∂ J ( w ) ∂ w frac{μερικό J(w)}{μερικό w}∂w∂J(w) εκφράζει δίκιο wwwΑναζητώντας τη μερική παράγωγο, παίρνουμε W − JW - JW−J(ΒάρηWκαι τιμήJσυνάρτηση) Μια εφαπτομένη σε μια κυρτή συνάρτηση, που χρησιμοποιείται για να αναπαραστήσει την ταχύτερα φθίνουσα τιμή συνάρτησηςκατεύθυνση, το γινόμενο των δύο αντιπροσωπεύειΜετακινηθείτε ένα βήμα προς την κατεύθυνση όπου η τιμή της συνάρτησης μειώνεται ταχύτερα .Αυτή η απόσταση πρέπει να ρυθμιστεί σύμφωνα με το σύνολο δεδομένων If α άλφααΕάν είναι πολύ μεγάλο (το μέγεθος του βήματος είναι πολύ μεγάλο), θα οδηγήσει σε wwwπηγαίνει απευθείας πάνω από το χαμηλότερο σημείο στο υψηλό σημείο στην άλλη πλευρά, έτσι ώστε να μην πλησιάσει ποτέ στο ελάχιστο, εάν α άλφααΕάν είναι πολύ μικρό (το μέγεθος του βήματος είναι πολύ μικρό), θα οδηγήσει σε wwwΓίνεται όλο και πιο αργό καθώς πλησιάζει το ελάχιστο, καταναλώνοντας υπολογιστικό κόστος.
ρυθμός μάθησης ( α άλφαα) μέθοδος προσαρμογής:
Ορίστε πρώτα ένα μικρότερο α άλφαα Όπως: 0,001.
Στη συνέχεια, αυξάνεται κατά 10 φορές κάθε φορά, έως 1 το πολύ.
Μετά τον προσδιορισμό μιας ορισμένης τιμής, όπως: 0,01.
Στη συνέχεια, εκτελέστε 3 φορές την επεξεργασία, όπως: 0,01 × 3 = 0,03, 0,03 × 3 = 0,09 0,01 φορές 3 = 0,03, 0,03 φορές 3 = 0,090.01×3=0.03,0.03×3=0.09 (Σκοπός αυτού είναι να γίνει πιο γρήγορη η σύγκλιση).
Η διαδικασία επίλυσης μερικών παραγώγων (εύρεση της κατεύθυνσης καθόδου της κλίσης):
ικετεύω ∂ J ( w ) ∂ w frac{μερικό J(w)}{μερικό w}∂w∂J(w) :
∂ J ( w ) ∂ w frac{μερικό J(w)}{μερικό w}∂w∂J(w) = ∂ ∂ w 1 2 m ∑ i = 1 m ( fw , b ( x ( i ) ) − y ( i ) ) 2 frac{partial}{partial w}frac{1}{2m}sumlimits_{i = 1}^ {m}(f_{w,b}(x^{(i)}) - y^{(i)})^2∂w∂2Μ1Εγώ=1∑Μ(φάw,σι(Χ(Εγώ))−y(Εγώ))2
= ∂ ∂ w 1 2 m ∑ i = 1 mwx ( i ) − y ( i ) ) 2 frac{partial}{partial w}frac{1}{2m}sumlimits_{i = 1}^{m}wx^{( i)} - y^{(i)})^2∂w∂2Μ1Εγώ=1∑ΜwΧ(Εγώ)−y(Εγώ))2
= 1 2 m ∑ i = 1 m ( fw , b ( x ( i ) ) − y ( i ) ) ⋅ 2 x ( i ) frac{1}{2m}sumlimits_{i = 1}^{m}(f_{ w,b}(x^{(i)}) - y^{(i)})cdot2x^{(i)}2Μ1Εγώ=1∑Μ(φάw,σι(Χ(Εγώ))−y(Εγώ))⋅2Χ(Εγώ)
= 1 m ∑ i = 1 m ( fw , b ( x ( i ) ) − y ( i ) ) x ( i ) frac{1}{m}sumlimits_{i = 1}^{m}(f_{w,b }(x^{(i)}) - y^{(i)})x^{(i)}Μ1Εγώ=1∑Μ(φάw,σι(Χ(Εγώ))−y(Εγώ))Χ(Εγώ)
ικετεύω ∂ J ( w ) ∂ b frac{μερικό J(w)}{μερικό b}∂σι∂J(w) :
∂ J ( w ) ∂ b frac{μερικό J(w)}{μερικό b}∂σι∂J(w) = ∂ ∂ b 1 2 m ∑ i = 1 m ( fw , b ( x ( i ) ) − y ( i ) ) 2 frac{partial}{partial b}frac{1}{2m}sumlimits_{i = 1}^ {m}(f_{w,b}(x^{(i)}) - y^{(i)})^2∂σι∂2Μ1Εγώ=1∑Μ(φάw,σι(Χ(Εγώ))−y(Εγώ))2
= ∂ ∂ b 1 2 m ∑ i = 1 mwx ( i ) − y ( i ) ) 2 frac{partial}{partial b}frac{1}{2m}sumlimits_{i = 1}^{m}wx^{( i)} - y^{(i)})^2∂σι∂2Μ1Εγώ=1∑ΜwΧ(Εγώ)−y(Εγώ))2
= 1 2 m ∑ i = 1 m ( fw , b ( x ( i ) ) − y ( i ) ) ⋅ 2 frac{1}{2m}sumlimits_{i = 1}^{m}(f_{w,b} (x^{(i)}) - y^{(i)})cdot22Μ1Εγώ=1∑Μ(φάw,σι(Χ(Εγώ))−y(Εγώ))⋅2
= 1 m ∑ i = 1 m ( fw , b ( x ( i ) ) − y ( i ) ) frac{1}{m}sumlimits_{i = 1}^{m}(f_{w,b}(x^ {(i)}) - y^{(i)})Μ1Εγώ=1∑Μ(φάw,σι(Χ(Εγώ))−y(Εγώ))
Βρείτε συγκεκριμένα μέσα από επανάληψη βρόχου wwwαξία με ΒΒσιαξία:
while ( ) : while():wγειαμεγάλομι():
w ∗ = w − α ∂ ∂ w J ( w , b ) w^* = w - άλφα frac{partial}{partial w}J(w,b)w∗=w−α∂w∂J(w,σι)
b ∗ = b − α ∂ ∂ b J ( w , b ) b^* = b - alpha frac{partial}{partial b}J(w,b)σι∗=σι−α∂σι∂J(w,σι)
w = w ∗ w = w^*w=w∗
b = b ∗ b = b^*σι=σι∗
Στην αρχή, υπολογίζουμε τυχαία τα w και b και μετά κάνουμε επανάληψη wwwάθροισμα αξίας ΒΒσιαξία.
Η πολυμεταβλητή γραμμική παλινδρόμηση επεκτείνει τις διαστάσεις σε τρεις διαστάσεις και ακόμη και σε πολυδιάστατες καταστάσεις, όπως π.χ. y = w 1 x 1 + w 2 x 2 + κατά = w_1 x_1 + w_2 x_2 + by=w1Χ1+w2Χ2+σι μπορεί να γίνει κατανοητό ωςΧΆξονας καιΥΤα τσεκούρια είναι x 1 και x 2 x_1 και x_2Χ1καιΧ2 ΖΟ άξονας είναι εεεy, αυτή είναι μια τρισδιάστατη κατάσταση Κάθε δείγμα προπόνησης είναι ένα σημείο στον τρισδιάστατο χώρο.
Μέθοδος: Για κάθε μεταβλητή ξεχωριστά ( w 1 , w 2 , … , wn , b w_1,w_2,dots,w_n,bw1,w2,…,wn,σι) για επεξεργασία gradient descent
Κύρια σημεία: Για πολυμεταβλητή γραμμική παλινδρόμηση, τα εύρη τιμών των διαφορετικών τιμών χαρακτηριστικών είναι διαφορετικά, όπως: το εύρος τιμών του χαρακτηριστικού ηλικίας: 0 0 0 ~ 100 100 100, που καλύπτει περιοχή: 0 m 2 0m^20Μ2 ~ 10000 m 2 10000 m^210000Μ2 , μπορεί επίσης να υπάρχειΠαράξενο δείγμα, η ύπαρξη μεμονωμένων δειγμάτων δεδομένων θα προκαλέσει την αύξηση του χρόνου εκπαίδευσης και μπορεί επίσης να οδηγήσει σε αποτυχία σύγκλισης. Επομένως, όταν υπάρχουν δεδομένα μεμονωμένου δείγματος, είναι απαραίτητο να γίνει προεπεξεργασία των δεδομένων πριν από την εκπαίδευση.Κανονικοποιήθηκε Αντίθετα, όταν δεν υπάρχουν μοναδικά δεδομένα δείγματος, δεν χρειάζεται να γίνει κανονικοποίηση.Για να αντιμετωπίσουμε αυτό το πρόβλημα, πρέπει να εκτελέσουμεΤα χαρακτηριστικά είναι κλιμακωμένα (κανονικοποιημένα)。
Επεξεργασία κανονικοποίησης δεδομένων
ολοκληρώσειΚανονικοποίηση δεδομένωνΥπάρχουν τρεις μέθοδοι:
Ίδιο με τη διαίρεση με τη μέγιστη τιμή:
Όλες οι τιμές σε κάθε χαρακτηριστικό διαιρούνται με τη μέγιστη τιμή σε αυτό το χαρακτηριστικό.
Μέση κανονικοποίηση:
Αφαιρέστε την τιμή κάθε χαρακτηριστικού από την τιμή αυτού του χαρακτηριστικούσημαίνω, και στη συνέχεια διαιρείται με τη διαφορά μεταξύ της μέγιστης και της ελάχιστης τιμής του χαρακτηριστικού.
Ομαλοποίηση βαθμολογίας Z:
Υπολογίστε κάθε χαρακτηριστικότυπική απόκλισηκαισημαίνω
Αφαιρέστε την τιμή κάθε χαρακτηριστικού από όλες τις τιμές αυτού του χαρακτηριστικούμέση αξίακαι μετά διαιρείται με τα χαρακτηριστικάσημαίνω
Εάν δεν πραγματοποιηθεί η κανονικοποίηση, η συνάρτηση κόστους θα αλλάξει λόγω μεγάλων διαφορών στις τιμές των διαφορετικών χαρακτηριστικών στο διάνυσμα χαρακτηριστικών. "διαμέρισμα" .Με αυτόν τον τρόπο, όταν εκτελείτε κάθοδο με κλίση, η κατεύθυνση της κλίσης θα αποκλίνει από την κατεύθυνση της ελάχιστης τιμής και θα πάει πολύπαράκαμψη, γεγονός που θα κάνει τον χρόνο προπόνησης πολύ μεγάλο.
Μετά την κανονικοποίηση, η αντικειμενική συνάρτηση θα εμφανίσει μια σύγκριση "γύρος", ώστε η ταχύτητα προπόνησης να επιταχύνεται πολύ και να αποφεύγονται πολλές παρακάμψεις.
Οφέλη από την κανονικοποίηση δεδομένων:
J ( w , b ) = 1 2 m ∑ i = 1 m ( fw , b ( x ( i ) ) − y ( i ) ) 2 J(w,b) = frac{1}{2m}sumlimits_{i = 1}^m(f_{w,b}(x^{(i)}) - y^{(i)})^2J(w,σι)=2Μ1Εγώ=1∑Μ(φάw,σι(Χ(Εγώ))−y(Εγώ))2
Κάθοδος κλίσης για πολλαπλή γραμμική παλινδρόμηση:
w 1 = W 1 − α 1 m ∑ i = 1 m ( fw ⃗ , bx ⃗ ( i ) − y ( i ) ) x 1 ( i ) w_1 = W_1 - alpha frac{1}{m}sumlimits_{i = 1}^{m}(f_{vec{w},b}vec{x}^{(i)} - y^{(i)})x_1^{(i)}w1=W1−αΜ1Εγώ=1∑Μ(φάw,σιΧ(Εγώ)−y(Εγώ))Χ1(Εγώ)
⋮ vdots⋮
wn = W n − α 1 m ∑ i = 1 m ( fw ⃗ , bx ⃗ ( i ) − y ( i ) ) xn ( i ) w_n = W_n - alpha frac{1}{m}sumlimits_{i = 1} ^{m}(f_{vec{w},b}vec{x}^{(i)} - y^{(i)})x_n^{(i)}wn=Wn−αΜ1Εγώ=1∑Μ(φάw,σιΧ(Εγώ)−y(Εγώ))Χn(Εγώ)
b = b − α 1 m ∑ i = 1 m ( fw ⃗ , bx ⃗ ( i ) − y ( i ) ) b = b - alpha frac{1}{m}sumlimits_{i = 1}^{m}( f_{vec{w},b}vec{x}^{(i)} - y^{(i)})σι=σι−αΜ1Εγώ=1∑Μ(φάw,σιΧ(Εγώ)−y(Εγώ))
εξηγώ: w 1 ⋯ wn w_1cdots w_nw1⋯wn αντιπροσωπεύει τον συντελεστή κάθε μεταβλητής και το b αντιπροσωπεύει τον σταθερό όρο της γραμμικής συνάρτησης.
Παραλείπω...
Μαθηματική παραγωγή:
J = 1 2 m ∑ i = 1 m ( θ ⃗ ix ⃗ i − yi ) 2 J = frac{1}{2m}sumlimits_{i = 1}^{m}(vec{theta}_i vec{x}_i - y_i)^2J=2Μ1Εγώ=1∑Μ(θΕγώΧΕγώ−yΕγώ)2
= 1 2 m ∣ ∣ θ ⃗ x ⃗ − y ∣ ∣ 2 frac{1}{2m}||vec{theta} vec{x} - y||^22Μ1∣∣θΧ−y∣∣2
= 1 2 m ( θ ⃗ x ⃗ − y ) T ( θ ⃗ x ⃗ − y ) frac{1}{2m}(vec{theta} vec{x} - y)^T(vec{theta} vec{x} - y)2Μ1(θΧ−y)Τ(θΧ−y)
= 1 2 m ( θ ⃗ T x ⃗ T − y T ) ( θ ⃗ x ⃗ − y ) frac{1}{2m}(vec{θήτα}^T vec{x}^T - y^T)(vec{ θήτα} vec{x} - y)2Μ1(θΤΧΤ−yΤ)(θΧ−y)
= 1 2 m ( θ ⃗ T x ⃗ T x ⃗ θ ⃗ − y T x ⃗ θ ⃗ − θ ⃗ T x ⃗ T y + y T y ) frac{1}{2m}(vec{theta}^T vec{ x}^Tvec{x}vec{theta} - y^Tvec{x}vec{theta} -vec{theta}^Tvec{x}^Ty +y^Ty )2Μ1(θΤΧΤΧθ−yΤΧθ−θΤΧΤy+yΤy)
σωστά θ θήταθΒρείτε τη μερική παράγωγο: Δ = ∂ J ∂ θ = 1 2 m ( ∂ θ ⃗ T x ⃗ T x ⃗ θ ⃗ ∂ θ − ∂ y T x ⃗ θ ⃗ ∂ θ − ∂ θ ⃗ T x ⃗ T θ∂ y ⃗ θ ) Delta =frac{μερική J}{μερική θήτα}= frac{1}{2m}(frac{μερική vec{theta}^T vec{x}^Tvec{x}vec{theta}}{μερική θήτα} - frac{μερική y^Tvec{x}vec{θήτα}}{μερική θήτα} - frac{μερική vec{θήτα}^Tvec{x}^Ty}{μερική θήτα} + frac{y^Ty}{μερική θήτα})Δ=∂θ∂J=2Μ1(∂θ∂θΤΧΤΧθ−∂θ∂yΤΧθ−∂θ∂θΤΧΤy+∂θyΤy)
Κανόνας παραγωγής πίνακα:
∂ θ TA θ ∂ θ = ( A + AT ) θ frac{μερική θήτα^{T}Atheta}{μερική θήτα} = (A + A^T)θήτα∂θ∂θΤΕΝΑθ=(ΕΝΑ+ΕΝΑΤ)θ
∂ XTA ∂ X = A frac{μερικό X^{T}A}{μερικό X} = A∂Χ∂ΧΤΕΝΑ=ΕΝΑ
∂ AX ∂ X = AT frac{μερικό AX}{μερικό X} = A^T∂Χ∂ΕΝΑΧ=ΕΝΑΤ
∂ A ∂ X = 0 frac{μερικό A}{μερικό X} = 0∂Χ∂ΕΝΑ=0
Διαθέσιμος Δ = 1 2 m ( ∂ θ ⃗ T x ⃗ T x ⃗ θ ⃗ ∂ θ − ∂ y T x ⃗ θ ⃗ ∂ θ − ∂ θ ⃗ T x ⃗ T y ∂ θ + y T y ) = 1 m ⋅ ( 2 x T x θ − 2 x T y ) = 1 m ⋅ ( x T x θ − x T y ) Δέλτα = frac{1}{2m}(frac{μερικό vec{θήτα}^T vec{x }^Tvec{x}vec{theta}}{μερική θήτα} - frac{μερική y^Tvec{x}vec{theta}}{μερική θήτα} - frac{μερική vec{theta}^Tvec{x}^Ty} {partial theta} + frac{y^Ty}{partial theta}) = frac{1}{2m}cdot (2x^Txtheta - 2x^Ty) = frac{1}{m} cdot (x^Txtheta - x^ Ty)Δ=2Μ1(∂θ∂θΤΧΤΧθ−∂θ∂yΤΧθ−∂θ∂θΤΧΤy+∂θyΤy)=2Μ1⋅(2ΧΤΧθ−2ΧΤy)=Μ1⋅(ΧΤΧθ−ΧΤy)
πότε Δ = 0 Δέλτα = 0Δ=0 ώρα: x T x θ = x T yx^Tx θήτα = x^TyΧΤΧθ=ΧΤy , θ = ( x T x ) − 1 x T y θήτα = (x^Tx)^{-1}x^Tyθ=(ΧΤΧ)−1ΧΤy μπορεί να υπολογιστεί θ θήταθ αξία.
Σύγκριση βαθμίδας καθόδου και κανονικών εξισώσεων:
κλίση κάθοδος: Είναι απαραίτητο να επιλέξετε το ρυθμό εκμάθησης α, ο οποίος απαιτεί πολλαπλές επαναλήψεις Μπορεί επίσης να εφαρμοστεί καλύτερα όταν ο αριθμός των χαρακτηριστικών n είναι μεγάλος και είναι κατάλληλος για διάφορους τύπους μοντέλων.
κανονική εξίσωση: Δεν χρειάζεται να επιλέξετε το ποσοστό εκμάθησης α Υπολογίζεται μία φορά και πρέπει να υπολογιστεί. ( x T x ) − 1 (x^Tx)^{-1}(ΧΤΧ)−1 , εάν ο αριθμός των χαρακτηριστικών nnnΕάν είναι μεγαλύτερο, το κόστος λειτουργίας θα είναι υψηλότερο, επειδή η χρονική πολυπλοκότητα υπολογισμού της αντίστροφης μήτρας είναι O ( n 3 ) O(n^3)Ο(n3) , συνήθως όταν nnnΕίναι ακόμα αποδεκτό όταν είναι λιγότερο από 10.000.Διατίθεται μόνο για γραμμικά μοντέλα, δεν είναι κατάλληλο για άλλα μοντέλα, όπως μοντέλα λογιστικής παλινδρόμησης.
Δεδομένου ότι σε ορισμένες περιπτώσεις, είναι δύσκολο για τις ευθείες γραμμές να χωρέσουν όλα τα δεδομένα, χρειάζονται καμπύλες για να χωρέσουν τα δεδομένα, όπως τετραγωνικά μοντέλα, κυβικά μοντέλα κ.λπ.
Γενικά, η συνάρτηση παλινδρόμησης των δεδομένων είναι άγνωστη, ακόμη και αν είναι γνωστή, είναι δύσκολο να μετατραπεί σε γραμμικό μοντέλο με απλό μετασχηματισμό συνάρτησης, επομένως η κοινή προσέγγιση είναι.πολυωνυμική παλινδρόμηση(Πολυωνυμική παλινδρόμηση), δηλαδή χρήση πολυωνυμικής συνάρτησης για την προσαρμογή των δεδομένων.
Πώς να επιλέξετε το βαθμό ενός πολυωνύμου:
Υπάρχουν πολλοί τύποι πολυωνυμικών συναρτήσεων Γενικά, πρέπει πρώτα να παρατηρήσετε το σχήμα των δεδομένων και μετά να αποφασίσετε ποια μορφή πολυωνυμικής συνάρτησης θα χρησιμοποιήσετε για να λύσετε το πρόβλημα. Για παράδειγμα, από το διάγραμμα διασποράς των δεδομένων, εάν υπάρχει "στροφή ", μπορείτε να εξετάσετε το ενδεχόμενο να χρησιμοποιήσετε ένα τετραγωνικό πολυώνυμο (δηλαδή, να τετραγωνίσετε τα χαρακτηριστικά), υπάρχουν δύο "στροφή ", μπορείτε να εξετάσετε το ενδεχόμενο να χρησιμοποιήσετε ένα κυβικό πολυώνυμο (λαμβάνοντας την κυβική ισχύ του χαρακτηριστικού), υπάρχουν τρία "στροφή ”, στη συνέχεια σκεφτείτε να χρησιμοποιήσετε ένα πολυώνυμο τέταρτης τάξης (λαμβάνοντας την τέταρτη δύναμη του χαρακτηριστικού) και ούτω καθεξής.
Αν και η πραγματική συνάρτηση παλινδρόμησης δεν είναι απαραίτητα ένα πολυώνυμο συγκεκριμένου βαθμού, εφόσον η προσαρμογή είναι καλή, είναι εφικτό να χρησιμοποιηθεί ένα κατάλληλο πολυώνυμο για την προσέγγιση της πραγματικής συνάρτησης παλινδρόμησης.
Το παράρτημα στο τέλος του άρθρου περιέχει όλα τα αρχικά δεδομένα που χρησιμοποιήθηκαν στο πείραμα.ex1data1.txt
είναι η σχέση πληθυσμού και κέρδους, ex1data2.txt
Είναι η επίδραση του μεγέθους του σπιτιού και του αριθμού των υπνοδωματίων στην τιμή του σπιτιού.
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
path = "ex1data1.txt"
data = pd.read_csv(path,header = None,names=['Population','Profit'])
data.head() # 预览数据
data.describe() # 更加详细的数据描述
# 可视化训练数据
data.plot(kind = 'scatter',x = 'Population',y = 'Profit',figsize = (12,8))
plt.show()
def computerCost(X,y,theta): # 定义代价函数
inner = np.power(((X*theta.T)-y),2) # theta.T表示theta的转置
return np.sum(inner)/(2*len(X))
data.insert(0,"One",1) # 表示在第0列前面插入一列数,其表头为One,其值为1
Εισαγάγετε στην πρώτη στήλη του συνόλου δεδομένων 1 1 1Η λειτουργία είναι ναΔιευκολύνει τους υπολογισμούς μήτρας, όταν πολλαπλασιάζονται οι πίνακες, εμπλέκονται βάρη wwwκαι προκατάληψη ΒΒσι,επειδή ΒΒσιδεν πολλαπλασιάζεται με τη μεταβλητή, οπότε α 1 1 1, χρησιμοποιείται με ΒΒσιΠολλαπλασιάζω.
cols = data.shape[1]
X = data.iloc[:,0:cols - 1] #“,”前只有“:”,表示所有的行,“,”后表示抽取数据中第[0列~第cols-1列)(左闭右开),去掉最后一列,最后一列为预测值
y = data.iloc[:,cols - 1:cols] #只取最后一列的值,表示预测值
X.head()
y.head()
X = np.matrix(X.values)
y = np.matrix(y.values) #只将表格中的值装换为矩阵而不是包括序号与标题
#初始化theta
theta = np.matrix(np.array([0,0])) #先是一个一维的数据,然后在转换为一个二维的矩阵
theta
# => matrix([[0, 0]])
X.shape,theta.shape,y.shape # 此时theta为一行列,需要进行转置
# => ((97, 2), (1, 2), (97, 1))
computerCost(X,y,theta)
# => 32.072733877455676
def gradientDecent(X,y,theta,alpha,iters): #iters为迭代次数
temp = np.matrix(np.zeros(theta.shape)) #构造一个与theta大小一样的零矩阵,用于存储更新后的theta
parmaters = int (theta.ravel().shape[1]) #.ravel()的功能是将多维数组降至一维,用于求需要求的参数个数
cost = np.zeros(iters) #构建iters个0的数组,相当于对每次迭代的cost进行记录
for i in range(iters):
error = (X * theta.T - y) #记录误差值,结果为一个数组
for j in range(parmaters): #对每一个参数进行更新,j用于表示每一个参数
term = np.multiply(error,X[:,j]) #.multiply 是对矩阵当中的数对应相乘,这里表示与X矩阵的第j列相乘。
temp[0,j] = theta[0,j] - ((alpha/len(X))*np.sum(term)) #存储更行后的theta的值,.sum()表示将矩阵中的数进行求和
theta = temp #更新theta
cost[i] = computerCost(X,y,theta) #计算此时的代价,并记录在cost中。
return theta,cost
alpha = 0.01 # 学习率
iters = 1000 # 迭代次数
g,cost = gradientDecent(X,y,theta,alpha,iters)
g
# => matrix([[-3.24140214, 1.1272942 ]])
computerCost(X,y,g)
# => 4.515955503078914
x = np.linspace(data.Population.min(),data.Population.max(),100) #抽取100个样本 (从data数据集中的最小值到最大值之间抽取100个样本)
f = g[0,0] + (g[0,1] * x) #f = ax + b
fig,ax = plt.subplots(figsize = (12,8)) #figsize表示图的大小
ax.plot(x,f,'r',label = "Prediction") #绘制直线,横坐标,纵坐标,直线名称
ax.scatter(data.Population,data.Profit,label = 'Training data') #绘制点,横坐标,纵坐标,点的名称
ax.legend(loc = 4) #显示图例位置
ax.set_xlabel('Population') #设置x轴的名称
ax.set_ylabel('Profit') #设置y轴的名称
ax.set_title('Predicted Profit vs. Population Size') #设置标题的名称
plt.show()
fig,ax = plt.subplots(figsize = (12,8))
ax.plot(np.arange(iters),cost,'r')
ax.set_xlabel('Interations')
ax.set_ylabel('Cost')
ax.set_title("Error vs. Training Epoc")
plt.show()
path = "ex1data2.txt"
data2 = pd.read_csv(path,header = None,names=["Size","Bedroom","Price"])
data2.head()
data2 = (data2 - data2.mean())/data2.std()
data2.head()
data2.insert(0,'Ones',1) #在x的第一列插入1
clos = data2.shape[1] #存储第二维(列)的数据量
X2 = data2.iloc[:,0:clos-1] #对X2进行赋值
y2 = data2.iloc[:,clos-1:clos] #对y2进行赋值
X2 = np.matrix(X2.values) #将X2转为矩阵
y2 = np.matrix(y2.values) #将y2转为矩阵
theta2 = np.matrix(np.array([0,0,0])) #初始化theta2为0矩阵
computerCost(X2, y2, theta2)
# => 0.48936170212765967
g2,cost2 = gradientDecent(X2,y2,theta2,alpha,iters) #记录放回值g2(theta2)和cost2
g2
# => matrix([[-1.10868761e-16, 8.78503652e-01, -4.69166570e-02]])
computerCost(X2,y2,g2)
# => 0.13070336960771892
fig,ax = plt.subplots(figsize = (12,8))
ax.plot(np.arange(iters),cost2,'x')
ax.set_xlabel('Iterations')
ax.set_ylabel('Cost')
ax.set_title('Error vs. Training Epoch')
plt.show()
#正规方程
def normalEqn(X,y):
theta = np.linalg.inv(X.T@X)@X.T@y #.linalg中包含线性代数中的函数,求矩阵的逆(inv)、特征值等。@表示矩阵相乘
return theta
final_theta2 = normalEqn(X,y)
final_theta2
# => matrix([[-3.89578088], [ 1.19303364]])
Γενικά βήματα για την εκπαίδευση ενός μοντέλου:
ex1data1.txt
6.1101,17.592
5.5277,9.1302
8.5186,13.662
7.0032,11.854
5.8598,6.8233
8.3829,11.886
7.4764,4.3483
8.5781,12
6.4862,6.5987
5.0546,3.8166
5.7107,3.2522
14.164,15.505
5.734,3.1551
8.4084,7.2258
5.6407,0.71618
5.3794,3.5129
6.3654,5.3048
5.1301,0.56077
6.4296,3.6518
7.0708,5.3893
6.1891,3.1386
20.27,21.767
5.4901,4.263
6.3261,5.1875
5.5649,3.0825
18.945,22.638
12.828,13.501
10.957,7.0467
13.176,14.692
22.203,24.147
5.2524,-1.22
6.5894,5.9966
9.2482,12.134
5.8918,1.8495
8.2111,6.5426
7.9334,4.5623
8.0959,4.1164
5.6063,3.3928
12.836,10.117
6.3534,5.4974
5.4069,0.55657
6.8825,3.9115
11.708,5.3854
5.7737,2.4406
7.8247,6.7318
7.0931,1.0463
5.0702,5.1337
5.8014,1.844
11.7,8.0043
5.5416,1.0179
7.5402,6.7504
5.3077,1.8396
7.4239,4.2885
7.6031,4.9981
6.3328,1.4233
6.3589,-1.4211
6.2742,2.4756
5.6397,4.6042
9.3102,3.9624
9.4536,5.4141
8.8254,5.1694
5.1793,-0.74279
21.279,17.929
14.908,12.054
18.959,17.054
7.2182,4.8852
8.2951,5.7442
10.236,7.7754
5.4994,1.0173
20.341,20.992
10.136,6.6799
7.3345,4.0259
6.0062,1.2784
7.2259,3.3411
5.0269,-2.6807
6.5479,0.29678
7.5386,3.8845
5.0365,5.7014
10.274,6.7526
5.1077,2.0576
5.7292,0.47953
5.1884,0.20421
6.3557,0.67861
9.7687,7.5435
6.5159,5.3436
8.5172,4.2415
9.1802,6.7981
6.002,0.92695
5.5204,0.152
5.0594,2.8214
5.7077,1.8451
7.6366,4.2959
5.8707,7.2029
5.3054,1.9869
8.2934,0.14454
13.394,9.0551
5.4369,0.61705
ex1data2.txt
2104,3,399900
1600,3,329900
2400,3,369000
1416,2,232000
3000,4,539900
1985,4,299900
1534,3,314900
1427,3,198999
1380,3,212000
1494,3,242500
1940,4,239999
2000,3,347000
1890,3,329999
4478,5,699900
1268,3,259900
2300,4,449900
1320,2,299900
1236,3,199900
2609,4,499998
3031,4,599000
1767,3,252900
1888,2,255000
1604,3,242900
1962,4,259900
3890,3,573900
1100,3,249900
1458,3,464500
2526,3,469000
2200,3,475000
2637,3,299900
1839,2,349900
1000,1,169900
2040,4,314900
3137,3,579900
1811,4,285900
1437,3,249900
1239,3,229900
2132,4,345000
4215,4,549000
2162,4,287000
1664,2,368500
2238,3,329900
2567,4,314000
1200,3,299000
852,2,179900
1852,4,299900
1203,3,239500