1

Je n'arrive pas à comprendre comment vectoriser les fonctions du cours Machine Learning disponible sur Coursera.Coursera Machine Learning: Gradient Descent vectorisation

Au cours, Andrew Ng explique que l'hypothèse peut être vectorisé à la transposition de thêta multiplié par x:

H(x) = theta' * X 

Mon premier problème est quand je mets en œuvre ce exercices. Pourquoi la vectorisation sur papier est-elle la transposition de thêta multipliée par x alors que sur Octave c'est X fois thêta?

theta'*X % leads to errors while multiplying 

Mon deuxième problème suit le premier.

Quand je veux vectoriser cette somme de la fonction de descente de gradient:

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

Je ne comprends pas vraiment comment vous arrivez à cette fois vectorisé:

X'*(h(x)-y) 

Quelqu'un pourrait expliquer cela?

+1

Pour répondre à cette question, il est important de connaître la taille des matrices (X, thêta, x, y ...). Btw, vous ne devriez pas utiliser '' 'comme transpose, utilisez' .'' – Andy

+0

Merci pour votre réponse. Actuellement, ma valeur de X est une matrice 47x3 remplie de valeurs et de valeurs disponibles ici: https://github.com/yhyap/machine-learning-coursera/blob/master/mlclass-ex1/ex1data2.txt. La troisième colonne est y (matrice 47x1). Thêta est [0; 0; 0]. Dans ce cas précis, savez-vous pourquoi nous pouvons le vecotiser de cette façon? – etiennefr

+0

Duplication possible de [Apprentissage automatique - Régression linéaire à l'aide de la descente par gradient de lot] (https://stackoverflow.com/questions/32274474/machine-learning-linear-regression-using-batch-gradient-descent) – rayryeng

Répondre

1

C'est une question de goût. La convention habituelle est d'avoir des multiplications matrice-vecteur, c'est-à-dire ce que vous préférez. Vous pouvez passer d'un mode à l'autre en transposant tout. Autrement dit, si votre multiplication X*theta fonctionne, la formule transposée est theta.' * X.'

En X*theta chacune des lignes de X contient les données (valeurs de la fonction noyau) d'un point d'échantillonnage. Dans la convention theta.'*X, ce sont les colonnes X qui contiennent les données de point d'échantillonnage.

Donc, cela dépend toujours du contexte, de ce qui est défini comme ligne et de ce qu'est un vecteur colonne et de la manière dont ils sont assemblés dans des objets ou des opérations plus grands.