Letztes Mal Kurs für maschinelles Lernen an der Tsukuba University: Lernen Sie sklearn, während Sie das Python-Skript in die Aufgabe aufnehmen (14) https://github.com/legacyworld/sklearn-basic
Kommentar auf Youtube ist der 8. (1) pro 20 Minuten Die Aufgabe selbst war so einfach, dass ich selbst etwas mehr programmiere, um die logistische Regression zu verstehen. Das Problem, $ E (w) $ für jede Trainingsprobe zu finden ($ x_ {1i}, x_ {2i}, i = (1,2, \ cdots, 10) $). $ E (w) $ wird wie folgt ausgedrückt.
E(w) = -\sum_{n=1}^{N}{t_n\,ln\hat t_n + (1-t_n)\,ln(1-\hat t_n)}
In diesem Beispiel
Nachdem wir $ E (w) $ gefunden haben, verwenden wir auch die logistische Regression, um $ w $ zu finden. Klicken Sie hier für den Quellcode
python:Homework_6.6.py
import numpy as np
from sklearn.linear_model import LogisticRegression
#Sigmaid-Funktion
def sigmoid(w,x):
return 1/(1+np.exp(-np.dot(w,x)))
#Kreuzentropieverlust
def cross_entropy_loss(w,x,y):
y_sig = sigmoid(w,x)
return -np.sum(y*np.log(y_sig)+(1-y)*np.log(1-y_sig),axis=1)
X = np.array([[1.5,-0.5],[-0.5,-1.0],[1.0,-2.5],[1.5,-1.0],[0.5,0.0],[1.5,-2.0],[-0.5,-0.5],[1.0,-1.0],[0.0,-1.0],[0.0,0.5]])
X = np.concatenate([X,np.ones(10).reshape(-1,1)],1)
y = np.array([1,0,0,1,1,1,0,1,0,0])
w = np.array([[6,3,-2],[4.6,1,-2.2],[1,-1,-2]])
print(f"E(w1) = {cross_entropy_loss(w,X.T,y)[0]:.3f} E(w2) = {cross_entropy_loss(w,X.T,y)[1]:.3f} E(w3) = {cross_entropy_loss(w,X.T,y)[2]:.3f}")
for c_value in [10**(a-2) for a in range(5)]:
clf = LogisticRegression(C=c_value).fit(X,y)
w = np.array([[clf.coef_[0][0],clf.coef_[0][1],clf.intercept_[0]]])
print(f"C = {c_value} w = {w} E(w) = {cross_entropy_loss(w,X.T,y)}")
Ausführungsergebnis
E(w1) = 1.474 E(w2) = 1.832 E(w3) = 6.185
C = 0.01 w = [[ 0.02956523 0.00018875 -0.01756914]] E(w) = [6.84341713]
C = 0.1 w = [[ 0.26242317 0.01451582 -0.1445077 ]] E(w) = [6.19257501]
C = 1 w = [[ 1.38391039 0.32530732 -0.55198479]] E(w) = [3.91381807]
C = 10 w = [[ 3.9100986 1.36910424 -1.28870173]] E(w) = [1.77721899]
C = 100 w = [[ 9.40098848 3.40849535 -3.23672119]] E(w) = [0.57516562]
Bei der logistischen Regression wird der L2-Regularisierungsparameter von 0,01 auf 100 verschoben, und der Kreuzentropieverlust wird auch für jedes berechnete $ w $ angezeigt. Es ist ersichtlich, dass der absolute Wert von $ w $ natürlich zunimmt, wenn die Regularisierung nicht sehr effektiv ist (C ist groß).
Übrigens, wenn es nicht reguliert wird, wird es wie folgt sein
Homework_6.6.py:13: RuntimeWarning: divide by zero encountered in log
return -np.sum(y*np.log(y_sig)+(1-y)*np.log(1-y_sig),axis=1)
Homework_6.6.py:13: RuntimeWarning: invalid value encountered in multiply
return -np.sum(y*np.log(y_sig)+(1-y)*np.log(1-y_sig),axis=1)
No regularization w = [[57.89037518 20.53048228 -9.91476711]] E(w) = [nan]
Der absolute Wert von $ w $ wird zu groß und 1 wird bei der Berechnung der Sigmoidfunktion zurückgegeben, was die Berechnung des Protokolls unmöglich macht und einen Fehler verursacht.
Kurs für maschinelles Lernen an der Tsukuba University: Lernen Sie sklearn, während Sie das Python-Skript in die Aufgabe aufnehmen (1) Kurs für maschinelles Lernen an der Tsukuba University: Lernen Sie sklearn, während Sie das Python-Skript in die Aufgabe aufnehmen (2) Kurs für maschinelles Lernen an der Tsukuba University: Lernen Sie sklearn, während Sie das Python-Skript in die Aufgabe aufnehmen (3) Kurs für maschinelles Lernen an der Tsukuba University: Lernen Sie sklearn, während Sie das Python-Skript in die Aufgabe aufnehmen (4) Kurs für maschinelles Lernen an der Tsukuba University: Lernen Sie sklearn, während Sie das Python-Skript in die Aufgabe aufnehmen (5) Kurs für maschinelles Lernen an der Tsukuba University: Lernen Sie sklearn, während Sie das Python-Skript in die Aufgabe aufnehmen (6) Kurs für maschinelles Lernen an der Tsukuba University: Lernen Sie sklearn, während Sie das Python-Skript zu einem Teil der Aufgabe machen (7) Erstellen Sie Ihre eigene Methode für den steilsten Abstieg Kurs für maschinelles Lernen an der Tsukuba University: Lernen Sie sklearn, während Sie das Python-Skript zu einem Teil der Aufgabe machen. (8) Erstellen Sie Ihre eigene stochastische Methode für den steilsten Abstieg. Kurs für maschinelles Lernen an der Tsukuba University: Lernen Sie sklearn, während Sie das Python-Skript in die Aufgabe aufnehmen (9) Kurs für maschinelles Lernen an der Tsukuba University: Lernen Sie sklearn, während Sie das Python-Skript in die Aufgabe aufnehmen (10) Kurs für maschinelles Lernen an der Tsukuba University: Lernen Sie sklearn, während Sie das Python-Skript in die Aufgabe aufnehmen (11) Kurs für maschinelles Lernen an der Tsukuba University: Lernen Sie sklearn, während Sie das Python-Skript in die Aufgabe aufnehmen (12) Kurs für maschinelles Lernen an der Tsukuba University: Lernen Sie sklearn, während Sie das Python-Skript in die Aufgabe aufnehmen (13) https://github.com/legacyworld/sklearn-basic https://ocw.tsukuba.ac.jp/course/systeminformation/machine_learning/
Recommended Posts