Python für maschinelles Lernen implementiert normale Gleichungen

Normale Gleichungen

Das Buch hängt mit dem oben Gesagten zusammen, und ich möchte Theta \theta in der Kostenfunktion berechnenDer Wert von θ kann durch das Verfahren der Normalgleichung gelöst werden. Der Ableitungsprozess wird hier nicht erweitert, und Interessierte können zur normalen Gleichungsableitung.

Hier ist die Formel direkt:

θ = ( XTX ) − 1 XT y \theta = (X^TX)^{-1}X^Tyich=( XT X)1X _T y

Aus der Formel ist ersichtlich, dass die Normalgleichung im Vergleich zum Gradientenabstiegsverfahren keine Lernrate wählen und θ θ nicht iterativ berechnen mussθ auch ohne Merkmalsskalierung.

Bevor Sie den Python-Code angeben, betonen Sie den Anwendungsbereich der normalen Gleichung.

  1. Wenn das Modell redundante Features hat (Features sind linear korreliert) oder es zu viele Features und zu wenige Samples gibt, wird der Term ( XTX ) − 1 (X^TX)^{-1}( XT X)1 ist irreversibel, beides kann nicht berechnet werden. (Dieses Problem kann durch Screening von Proben und Regularisierung gelöst werden)
  2. Weil es ( XTX ) − 1 (X^TX)^{-1} berechnen muss( XT X)1 , wird der Algorithmus sehr langsam sein, wenn es viele Features gibt. (Laut Herrn Wu Enda können moderne Computer einfache Modelle mit weniger als 1000 Merkmalen ohne Druck verarbeiten, es sei denn, Ihr Modell ist sehr komplex. Wenn es zu viele Merkmale gibt oder das Modell zu komplex ist, können Sie die Gradientenabstiegsmethode verwenden.)

Der Python-Implementierungscode lautet wie folgt:

# 正规方程

import matplotlib.pyplot as plt
import numpy as np
# P = np.loadtxt("PV.csv", delimiter=",")


# y = 3x - 2k + 7z - 3
# X = np.array([[1,1,1,1],[2,1,2,1],[3,0,1,1],[0,1,2,1]])
# Y = np.array([[5],[15],[13],[9]])

# y = 2x + 4k + 7

# X = np.array([[1,1,1],[2,3,1],[4,2,1],[3,3,1],[2,2,1]])
# Y = np.array([[13],[23],[23],[25],[19]])


# y = -13 x + 9
X = np.array([[1,1],[0,1],[-1,1],[2,1]])
Y = np.array([[-4],[9],[22],[-17]])


theta = np.linalg.inv(X.T@X)@X.T@Y
print (theta)

das ist alles.

Guess you like

Origin blog.csdn.net/qq_41608408/article/details/127798822