1

Ich habe Probleme zu verstehen, wie Funktionen auf dem Machine Learning-Kurs, der auf Coursera verfügbar ist, zu vektorisieren.Coursera Maschinelles Lernen: Gradientenabstieg Vektorisierung

Im Kurs Andrew Ng erklärt, dass die Hypothese der transponierte Theta von x multipliziert vektorisiert werden kann:

H(x) = theta' * X 

Mein erstes Problem ist, wenn ich diese Übungen auf implementieren. Warum ist die Vektorisierung auf Papier die Transponierte von Theta multipliziert mit x, während auf Oktave X mal Theta ist?

theta'*X % leads to errors while multiplying 

Mein zweites Problem folgen dem ersten.

Wenn ich diese Summe der Gradientenabfallsaktualisierung Funktion vektorisieren wollen:

sum((h(x)-y)*x)) 

Ich verstehe nicht wirklich, wie Sie auf diese einmal vektorisiert erhalten:

X'*(h(x)-y) 

Jeder konnte das erklären?

+1

Um dies zu beantworten, ist es wichtig, die Größe der Matrizen zu kennen (X, Theta, X, Y ...). Btw, du solltest nicht '' 'als Transponieren verwenden' .'' – Andy

+0

Danke für deine Antwort. Derzeit ist mein Wert von X eine 47x3-Matrix, gefüllt mit Einsen und Werten, die hier verfügbar sind: https://github.com/yhyap/machine-learning-courera/blob/master/mlclass-ex1/ex1data2.txt. Die dritte Spalte ist y (47x1-Matrix). Theta ist [0; 0; 0]. Wissen Sie in diesem speziellen Fall, warum wir es auf diese Weise bewerten können? – etiennefr

+0

Mögliches Duplikat von [Maschinelles Lernen - Lineare Regression mit Batch-Gradienten-Abstieg] (https://stackoverflow.com/questions/32274474/machine-learning-linearre-regression-using-batch-gradient-descent) – rayryeng

Antwort

1

Es ist eine Frage des Geschmacks. Die übliche Konvention besteht darin, Matrix-Vektor-Multiplikationen zu haben, d. H. Was Sie bevorzugen. Sie können von einem Modus zum anderen wechseln, indem Sie alles transponieren. Das heißt, wenn Ihre Multiplikation X*theta funktioniert, dann die transponierte Formel theta.' * X.'

In X*theta jeder der Reihen von X ist enthält die Daten (Kernel-Funktionswerte) eines Probenpunkt.

In der theta.'*X Konvention sind es die Spalten von X, die die Daten der Stichprobe enthalten.

Es kommt also immer auf den Kontext an, was als Zeile und was als Spaltenvektor definiert ist und wie sie in größeren Objekten oder Operationen zusammengefügt werden.