Il s'agit de jp_Pythonia, élève de première année au collège. Ravi de vous rencontrer. Comme cet article a été bourdonné et que la quantité d'informations est importante, j'en ai fait une version fractionnée.
Qu'est-ce que l'apprentissage automatique? Tom Mitchell définit:
Le programme informatique est basé sur une norme de performance P pour une tâche T.
Si la performance pour T est mesurée par la référence P et s'améliore avec l'expérience E
On peut dire que nous avons appris de l'expérience E.
Il existe deux principaux types d'apprentissage automatique. Dans les deux prochaines sections, nous aborderons deux d'entre eux, ** «Apprentissage enseigné» ** et ** «Apprentissage non supervisé» **.
L'apprentissage supervisé est le problème ** le plus courant ** d'apprentissage automatique.
Comme caractéristique principale
Il y a deux points.
→ Dans l'apprentissage supervisé, il y a une «réponse correcte» dans chaque jeu de données donné.
e.g.)
Nous avons développé un algorithme qui prédit le temps, détermine s'il sera pluvieux ou ensoleillé demain et le produit.
Toutes les données météorologiques que nous avons apprises indiquaient s'il pleuvait ou s'il faisait beau ce jour-là.
Dans le cas de l'exemple ci-dessus, il est appelé ** "apprentissage supervisé". ** **
En effet, la «bonne réponse» pour l'algorithme, l'étiquette pluie ou ensoleillé, a été attachée aux données dès le début.
Il existe deux principaux genres d'apprentissage supervisé.
Ce sont le «problème de classification» et le «problème de retour».
L'algorithme de prédiction du temps montré précédemment. Cela s'applique aux problèmes de classification. En effet, ** la pluie ou le soleil ** est ** «classé» **.
À propos, les données de pluie ou de temps ensoleillé sont appelées «valeur discrète».
Au contraire, le problème de la régression est une sorte de problème qui concerne la «valeur continue».
e.g.)
Nous avons développé un algorithme pour prédire la température de demain.
Les données apprises sont un lien entre la météo et la température.
Dans l'exemple ci-dessus, la température des données de sortie est une "valeur continue", c'est pourquoi on l'appelle un problème de régression.
Apprentissage non supervisé L'apprentissage non supervisé vous permet de résoudre des problèmes avec peu ou pas de compréhension de ce à quoi ressembleront les résultats. Vous pouvez dériver la structure à partir de données pour lesquelles l'effet de la variable n'est pas toujours connu. Cette structure peut être dérivée en regroupant les données en fonction des relations entre les variables dans les données. Avec un apprentissage non supervisé, il n'y a pas de rétroaction prédictive.
Extrait de https://www.coursera.org/learn/machine-learning/supplement/1O0Bk/unsupervised-learning
Comme mentionné ci-dessus, l'apprentissage non supervisé présente deux caractéristiques principales.
―― Contrairement à l'apprentissage supervisé, il n'y a pas de données «correctes» --Utilisez un algorithme de clustering
Qu'est-ce qu'un algorithme de clustering?
--Toutes les étiquettes de données sont identiques --Il n'y a pas d'étiquette de données en premier lieu
Un algorithme utile lorsque vous travaillez avec des données. L'algorithme de clustering trouve des règles, des genres, etc. dans les données données, crée un cluster par lui-même et le classe à cet endroit.
J'ai préparé un ensemble de données. c'est ici.
Cas | Aire d'atterrissage(x) | Prix du terrain(y) |
---|---|---|
1 | 2104 | 460 |
2 | 1416 | 232 |
3 | 1534 | 315 |
4 | 852 | 178 |
・ ・ ・ | ・ ・ ・ | ・ ・ ・ |
8 | 680 | 143 |
Nous définirons les ** caractères ** que nous utiliserons désormais.
Créez une expression qui exprime l'hypothèse h. Voilà.
hθ(x) = θ0 + θ1x
Au fait, cela semble difficile à première vue, mais pouvez-vous voir que c'est très similaire à la formule de fonction linéaire Y = B + AX que font les élèves du premier cycle du secondaire? Parce que la fonction linéaire est un graphique comme celui ci-dessous
Vous pouvez voir que c'est juste.
** Et h θ </ sub> (x) montre une ligne droite. ** **
** C'est l'endroit le plus facile pour rester coincé, donc je veux que vous mémorisiez uniquement ici. ** **
En continuant à partir de la représentation du modèle ci-dessus, nous définirons les fonctions objectives, mais en premier lieu, ces objectifs sont de tracer des lignes optimisées pour un ensemble de données donné (tracé). Par exemple, il y a un chiffre comme celui-ci. (Les données ont été tracées)
À ce stade, le but est de trouver la ligne rouge et de minimiser le carré de la distance au point bleu.
Afin d'atteindre l'objectif introduit en 5-1, il est nécessaire d'utiliser la formule qui fonctionne pour minimiser. Cependant, je ne le comprends pas simplement en regardant la formule, donc je vais donner une explication qui mène à une compréhension intuitive.
En premier lieu, les paramètres sont des noms tels que θ 0 </ sub> et θ 1 </ sub>. La direction de la ligne rouge dans le graphique ci-dessus changera en fonction du type de nombre qui y est appliqué. Ce n'est pas grave si vous avez fait une fonction linéaire lorsque vous étiez au collège.
e.g.)
Lorsque θ 0 </ sub> = 1,5 et θ 1 </ sub> = 0:
Ce sera.
Lorsque θ 0 </ sub> = 1 et θ 1 </ sub> = 0,5:
Ce sera.
Après tout, ce que vous voulez faire est de baser la valeur de θ 0 </ sub> (axe y) sur la valeur de θ 1 </ sub> x (axe x) donnée. Il vous suffit de l'éteindre.
Faisons une formule.
5-3-1 Step 1
(hθ(x) - y)2
Je vais expliquer la formule ci-dessus.
La formule de l'étape 1 est mise au carré en soustrayant la valeur de y de la ligne droite rouge h θ </ sub> (x) dans le graphique ci-dessus.
5-3-2 Step 2
Rappelez-vous 4-1? Vous avez pu spécifier la i-ème valeur x avec X i </ sub>.
Dans la formule de l'étape 1, aucun échantillon n'est spécifié et il est très abstrait, je vais donc ajouter pour obtenir tous les échantillons. Le voici
mΣi=1 (hθ(x( i )) - y( i ))2
mΣi = 1 signifie le débit total entre le moment de i = 1 (cas numéro 1) et m (le nombre de tous les cas).
En outre, (h θ </ sub> (x) --y) 2 </ sup> → (h θ </ sub> (x (i) </ sup>) --y (i) </ sup>) 2 </ sup> a été remplacé, ce qui signifie soustraire le i-th y du i-th x.
5-3-3 Step 3
Enfin, multipliez par 1 / 2m pour simplifier le calcul.
1/2m mΣi=1 (hθ(x( i )) - y( i ))2
Cependant, 1/2 et 1 / m ne sont que ** simplifiés car le résultat ne change pas **, il n'y a donc pas de signification particulière.
Comme je l'ai écrit en 5-1, j'ai décidé du nombre de θ 0 </ sub> et θ 1 </ sub>, et l'une des fonctions minimisées qui correspond exactement aux données tracées est la fonction de coût. Donc, j'ai introduit la formule de sélection des paramètres.
Eh bien, après tout, la fonction de coût est ** J (θ 0 </ sub>, θ 1 </ sub>) **. Ainsi, lorsque nous montrons la fonction de coût,
** J (θ 0 </ sub>, θ 1 </ sub>) = 1 / 2m mΣi = 1 (h θ </ sub> (x (i) < / sup>) --y (i) </ sup>) Peut être exprimé comme 2 </ sup>. ** **
Par conséquent, à partir de maintenant, la fonction de coût sera représentée par J.
Jusqu'à présent, nous avons utilisé h θ </ sub> (x) = θ 0 </ sub> + θ 1 </ sub> x.
hθ( x ) = θ1x
Il est exprimé comme.
C'est comme dire θ 0 </ sub> = 0.
Puisqu'il n'y a qu'un seul paramètre, la formule de la fonction de coût J est
J( θ1 ) = 1/2m mΣ i=1 (hθ(x( i )) - y( i ))2
Peut être exprimé comme.
Simplifié comme 6-1 car B = θ 0 </ sub> = 0 dans le graphe de fonction linéaire Y = AX + B, la fonction objectif (fonction de coût) J passera par l'origine. ..
D'ailleurs, l'hypothèse h θ </ sub> (x) est la fonction correspondant à x. En effet, si θ 1 </ sub> a déjà été déterminé, ce sera une expression correspondant à x.
Par contre, la fonction de coût J est une fonction correspondant à θ 1 </ sub>. Vous pouvez le voir en regardant 6-1.
Tout d'abord, supposons que les données se trouvent respectivement aux positions (1,1), (2,2), (3,3).
La ligne droite de l'hypothèse change car θ 0 </ sub> = 0 est fixé en fonction de la valeur de θ 1 </ sub> de l'hypothèse h θ </ sub> (x). Je vais.
Maintenant, sur la base de l'hypothèse ci-dessus, nous allons calculer la valeur numérique à tracer sur la fonction objectif J.
Tout d'abord, la ligne violette. Étant donné que le cercle vert est l'emplacement des données, la différence est de 0,5, 1,0, 1,5 par ordre croissant.
Maintenant, appliquons ces trois à la formule de la fonction de coût J.
J( θ1 ) = 1/2m mΣ i=1 (hθ(x( i )) - y( i ))2
Si vous calculez cela,
J (θ 1 </ sous>) = 1/6 (3,5) = 0,58 ...
De même, sur la ligne de couleur magenta (rose),
J(θ1) = 0
Dans la ligne rouge
J (θ 1 </ sous>) = 2,33 ...
Tracez ensuite les trois valeurs que vous venez d'obtenir.
Le résultat est là.
La couleur de la ligne et la couleur du cercle correspondent. Le graphique ci-dessus montre la fonction objective J.
Fonction objective J définie en 5-4. La section 7 décrit un algorithme appelé ** méthode de descente la plus raide ** qui minimise J.
La méthode de descente la plus raide est celle-ci. ![Capture d'écran 2020-01-25 15.24.52.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/448030/8d4f647e-aa35-056a-ab16- 965eaeb03156.png)
Cité de https://linky-juku.com/simple-regression-analysis3/
Cité de https://linky-juku.com/simple-regression-analysis3/
Cependant, comme une faiblesse, comme le montre le graphique ci-dessus, ce qu'on appelle une ** solution locale ** (pas une solution optimale, pas une réponse souhaitable) peut être la réponse.
C'est la formule à utiliser.
Step 1
La partie :: = signifie que le côté droit est affecté au côté gauche et mis à jour.
Step 2
α fait référence au taux d'apprentissage. La méthode de descente la plus raide atteint la valeur minimale en plusieurs étapes comme indiqué dans la figure ci-dessous. Plus α est grand, plus le pas est grand.
Step 3
Te souviens tu. Fonction de coût. En fait, J (θ 0 </ sub>, θ 1 </ sub>) est une fonction de coût. Comme vous le savez.
Vous pouvez donc le convertir comme ceci:
J(θ0,θ1)=1/2mmΣi=1(hθ(x(i))-y(i))2=1/2mmΣi=1(θ0+θ1x(i)-y(i)) 2
Ensuite, considérez les modèles de θ 0 </ sub> et θ 1 </ sub>.
θ0 ( j = 0) : ∂/∂θ0 J(θ0, θ1 ) = 1/m mΣi=1 (hθ(x( i )) - y( i ))2
θ1 ( j = 0) : ∂/∂θ1 J(θ0, θ1 ) = 1/m mΣi=1 (hθ(x( i )) - y( i ))2
ok。
En fait, comme vous avez vu la formule de la méthode de descente la plus raide, il y a un facteur très important.
Il ** met à jour θ 0 </ sub> et θ 1 </ sub> en même temps **.
Temp0: = θ 0 </ sub> -![Capture d'écran 2020-01-25 15.44.43.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com /0/448030/eaab3438-8dd9-131e-77eb-7b1293c2fc37.png)
Temp 1: = θ 1 </ sub> -![Capture d'écran 2020-01-25 15.44.43.png](https: //qiita-image-store.s3.ap-northeast-1.amazonaws. com / 0/448030 / eaab3438-8dd9-131e-77eb-7b1293c2fc37.png)
θ0 := Temp0
θ1 := Temp1
Dans la formule ci-dessus, une fois![Screenshot 2020-01-25 15.44.43.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/448030/eaab3438- 8dd9-131e-77eb-7b1293c2fc37.png) est affecté aux variables Temp0,1 puis à θ 0 </ sub> et θ 1 </ sub>.
Alors ne fais pas ça
Et si vous aimez ça?
En fait, il y a un gros problème. Autrement dit, au moment de l'expression sur la deuxième ligne, θ 0 </ sub> a été remplacé par la variable Temp0, donc sur le côté droit de l'expression sur la troisième ligne, la nouvelle valeur est θ 0 </ strong>. Le fait est que sub> est censé être utilisé dans l'expression.
Veuillez noter que ** les mises à jour simultanées sont obligatoires **, que le problème se produise ou non.
En principe, la méthode de descente la plus raide fait partie de la fonction de coût.
Cité de (https://www.coursera.org/learn/machine-learning/lecture/kCvQc/gradient-descent-for-linear-regression)
Au fait, pourriez-vous voir les deux images ci-dessus?
Au fait, la figure de droite est![Screenshot 2020-01-25 14.51.52.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/448030/1da1ec0c -0a05-eefa-b571-2f1e04c9a53b.png) Ce diagramme de fonction de coût est dessiné avec des courbes de niveau afin qu'il soit visible en deux dimensions.
Dans la figure précédente, le déplacement de la ligne bleue montre le résultat de l'augmentation de la croix rouge. Comme vous le savez, la gauche est la régression linéaire et la droite est la fonction de coût. En changeant la direction de la ligne de l'hypothèse de régression linéaire, le résultat de la fonction de coût change également. C'est ce que je voulais transmettre en 7-4.
Par exemple, la méthode de descente la plus raide peut être utilisée pour l'empêcher de conduire à une solution localement optimale.
\begin{bmatrix}
a & b \\
c & d \\
e & f
\end{bmatrix}
Par exemple, celui ci-dessus est une matrice. 3 x 2
Un vecteur n'a qu'une seule ligne horizontalement
y =
\begin{bmatrix}
a \\
c \\
e
\end{bmatrix}
Représente une ligne n x 1 comme indiqué ci-dessus.
Il y a quelques règles.
Par exemple
y i </ sub> = i th </ sup> élément (a dans l'exemple ci-dessus)
** Cependant, vous devez faire attention si le numéro attribué à l'index commence par 0 ou 1. ** **
En gros, utilisez le vecteur d'index à partir de 1.
Fondamentalement, la plupart des gens utilisent des majuscules pour référencer un index. Ce sont souvent les données brutes stockées qui utilisent des lettres minuscules
Les règles d'ajout et de soustraction de matrices sont les suivantes:
** Uniquement les matrices de même dimension **
Il n'est pas possible d'ajouter ou de soustraire.
\begin{bmatrix}
1 & 0 \\
2 & 5 \\
3 & 4
\end{bmatrix}
+
\begin{bmatrix}
4 & 7 \\
2 & 9 \\
0 & 8
\end{bmatrix}
=
\begin{bmatrix}
5 & 7 \\
4 & 14 \\
3 & 12
\end{bmatrix}
Comme vous pouvez le voir ci-dessus, les deux éléments à ajouter et l'élément de réponse sont respectivement 3 x 2. Ensuite, les nombres avec les mêmes positions verticale et horizontale sont additionnés.
Scalar est exagéré, mais cela signifie un nombre réel. Alors
3 ×
\begin{bmatrix}
2 & 5 \\
3 & 4
\end{bmatrix}
=
\begin{bmatrix}
6 & 15 \\
9 & 12
\end{bmatrix}
C'est OK avec un sentiment.
Je me sens comme cela.
\begin{bmatrix}
2 & 5 \\
3 & 4
\end{bmatrix}
\begin{bmatrix}
6 \\
9
\end{bmatrix}
=
\begin{bmatrix}
57 \\
54
\end{bmatrix}
Nommez la matrice A, B, C dans l'ordre à partir de la gauche.
Étape 1: placez la gauche de la rangée supérieure de A sur la rangée supérieure de B et la droite de la rangée supérieure de A sur la rangée inférieure de B. (2 x 6 et 5 x 9 pour ce faire.)
Étape 2: Répétez 3 x 6 et 4 x 9 comme ci-dessus.
Au fait, A était 2 x 2 cette fois. B est 2 x 1 et C est 2 x 1. En fait, cela n'arrive pas. ** Il y a des règles solides **
A → m × n (2 × 2)
B →n × 1(2 × 1)
C → m × 1(2 × 1)
Veuillez noter que cette règle sera désormais utilisée.
** En fait, il existe un moyen d'éviter d'utiliser des algorithmes itératifs dans les algorithmes de régression linéaire, et cette section y mène également. ** ** Ce que je vais faire cette fois
\begin{bmatrix}
2 & 5 & 2 \\
3 & 4 & 7
\end{bmatrix}
×
\begin{bmatrix}
6 & 8\\
9 & 3\\
2 & 3
\end{bmatrix}
=
C'est la voie de. Commencez par diviser B en deux vecteurs. Comme ci-dessous
\begin{bmatrix}
2 & 5 & 2 \\
3 & 4 & 7
\end{bmatrix}
×
\begin{bmatrix}
6\\
9 \\
2
\end{bmatrix}
=
\begin{bmatrix}
2 & 5 & 2 \\
3 & 4 & 7
\end{bmatrix}
×
\begin{bmatrix}
8\\
3 \\
3
\end{bmatrix}
=
J'ai calculé chacun.
\begin{bmatrix}
2 & 5 & 2\\
3 & 4 & 7
\end{bmatrix}
×
\begin{bmatrix}
6\\
9 \\
2
\end{bmatrix}
=
\begin{bmatrix}
61\\
68
\end{bmatrix}
\begin{bmatrix}
2 & 5 & 2\\
3 & 4 & 7
\end{bmatrix}
×
\begin{bmatrix}
8\\
3 \\
3
\end{bmatrix}
=
\begin{bmatrix}
37\\
57
\end{bmatrix}
Et assembler le C divisé en deux
\begin{bmatrix}
61& 37 \\
68 & 57
\end{bmatrix}
c'est tout.
Bien sûr, vous ne devriez pas changer A x B en B x A, voir 8-6 pour une raison quelconque.
Je ne veux pas écrire uniquement des choses trop évidentes, alors j'écris simplement que vous devriez vous demander si l'ordre de multiplication est faux.
Le chiffre 1 représente l'unité, l'identité dans l'espace réel. Parce que multiplier par 1 est égal au nombre lui-même. Chaque nombre réel a un nombre inverse. Par exemple, l'inverse de 3 est 1/3.
Vous pouvez donc voir que dans l'espace réel, tous les nombres n'ont pas d'inverse. Par exemple, 0.
Ensuite, on l'appelle aussi l'inverse de la matrice, matrice inverse ou inverse, mais qu'est-ce que c'est? Terminons cet article avec cela.
Soit A une matrice m × m. Et supposons qu'il y ait une matrice inverse. Et représentons la matrice inverse comme A -1 </ sup>.
Parmi les matrices, seule la matrice m × m a une matrice inverse et est également appelée matrice carrée.
Par exemple, supposons que vous ayez une matrice carrée.
```math
\begin{bmatrix}
3& 4 \\
2 & 16
\end{bmatrix}
```
De plus, je connaissais la matrice inverse.
```math
\begin{bmatrix}
0.4& -0.1 \\
-0.05 & 0.075
\end{bmatrix}
```
Et quand vous multipliez cette matrice,
```math
=
\begin{bmatrix}
1& 0 \\
0 & 1
\end{bmatrix}
```
= I 2 × 2 </ sous>. (I est un symbole représentant une matrice unitaire)
Bien sûr, il est possible de faire la matrice inverse à la main, mais personne ne le fait actuellement. Alors, comment le calculez-vous?
** J'utilise un logiciel appelé Octave **
Soyez assuré que la deuxième partie expliquera comment utiliser Octave.
Maintenant, résumons les termes.
Une matrice qui n'a pas de matrice inverse est appelée une matrice singulière ou une matrice réduite.
** Vraiment vraiment enfin, je vais vous dire comment calculer la translocation **.
```math
\begin{bmatrix}
1 & 2 & 0 \\
3 & 4 & 9
\end{bmatrix}
```
→
```math
\begin{bmatrix}
1 & 3 \\
2 & 5 \\
0 & 9
\end{bmatrix}
```
Ceux qui pensaient que c'était le seul. C'est vrai. seulement ça. Amenez simplement la rangée du haut à gauche et la rangée du bas à droite. c'est tout. Je vous remercie pour votre travail acharné.
Merci d'avoir lu jusqu'ici.
~~ Je publierai un lien lorsque la suite sera terminée, veuillez donc le lire. ~~ Partie 2 Je l'ai écrit.
Bienvenue. Allez à «Apprentissage automatique, partie 2 que même les élèves du premier cycle du secondaire peuvent pleinement comprendre». Si vous n'avez pas encore lu la partie 1, vous n'avez pas besoin de lire la première partie. (Jusqu'à la section 1)
1-1 Windows
Je suis désolé, mon environnement n'est pas Mac, je vais donc donner une brève explication et un lien.
Tout d'abord, utilisez le lien here pour installer.
En tant que site de référence, nous présenterons également ici.
1-2 Mac OS
** Nous avons confirmé l'opération sur Mac OS haute sierra. ** **
Vous pouvez vous référer à ici.
Step 1
Installez Homebrew
/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
Veuillez le mettre dans le terminal. (C'est une ligne)
Step 2
Inclut également Homebrew Cask.
brew tap caskroom/cask
Au fait, si vous obtenez une erreur, essayez de taper
brew cask '' . Si vous voyez
Voir aussi "man brew-cask"
``, c'est déjà dedans.
Step 3
Installez XQuartz
Installez en utilisant Homebrew Cask.
brew cask install xquartz
brew install octave
Attendons patiemment
Step 5
Démarrer Octave
Octave
Cela devrait commencer.
Octave:1>
C'est bon si ça sort
exit
Tapez pour quitter et cela fonctionnera comme une console normale.
** J'ai cité la méthode de l'étape 1-5 jusqu'à présent: **
https://blog.amedama.jp/entry/2017/04/28/232547
1-3 Linux
Pardon. Il est possible qu'il n'y ait pas d'environnement d'exploitation, mais (Zorin OS) Je ne le fais pas parce que c'est ennuyeux. Vérifie s'il te plaît.
Wow ... beaucoup de kanji ...
La section 2 examine une régression linéaire plus puissante qui fonctionne pour plusieurs variables.
Premièrement, dans la régression linéaire passée, y était prédit sur la base de l'information x, qui était appelée une seule caractéristique (variable unique) avec un seul x. Cependant, par exemple, lors de la prédiction du prix d'une maison, lors de la prédiction du cours de l'action de demain, il est difficile de prédire en se basant sur une seule information.
Par conséquent, nous utiliserons plusieurs éléments d'information en utilisant la régression linéaire multivariée.
Ensuite, je présenterai la base de données comme un exemple. c'est ici.
Auparavant, c'était un x, mais nous attribuons les numéros 1-4.
Cas No..( i ) | Taille(x1) | Nombre de chambres(x2) | Nombre d'étages(x3) | Quel âge(x4) | prix(y)Dix mille yens |
---|---|---|---|---|---|
1 | 2104 | 5 | 1 | 45 | 4600 |
2 | 1416 | 3 | 2 | 40 | 2320 |
3 | 1534 | 3 | 2 | 30 | 3150 |
4 | 852 | 2 | 1 | 36 | 1780 |
・ ・ ・ | ・ ・ ・ | ・ ・ ・ | ・ ・ ・ | ・ ・ ・ | ・ ・ ・ |
Ensuite, nous définirons les nombres prérequis.
n ・ ・ ・ 4. Indique le nombre de variables x.
x (i) </ sup> ・ ・ ・ La i-ième variable x est représentée par un vecteur. Si x (2) </ sup>,
\begin{bmatrix}
1416 \\
3 \\
2 \\
40
\end{bmatrix}
Ce sera. Cela ne signifie pas le carré de x. Et le vecteur supérieur est n dimensions (ici 4 dimensions, 4 x 1).
x j </ sub> (i) </ sup> ・ ・ ・ En fait, j et (i) sont alignés verticalement. Par exemple, dans le cas de x 3 </ sub> (2) </ sup>, la réponse est 2, ce qui correspond à la troisième variable du vecteur précédent.
Jusqu'à présent, c'était comme ça.
hθ(x) = θ0 + θ1x
Cependant, puisque x n'est plus un, la forme de l'expression change également. Voilà.
hθ(x) = θ0 + θ1x1 + θ2x2 + θ3x3 + θ4x4
Cependant, la formule ci-dessus pose un gros problème car elle croît à mesure que n augmente.
Autrement dit, écrire des formules avec démarque est étonnamment fatiguant. Alors simplifions la formule.
Ce qu'il faut faire est de définir l'indice de x comme 0 = 1.
Cela signifie que pour chaque cas i, il existe un vecteur de fonction x (i) </ sup>. Et à propos de x j </ sub> (i) </ sup> introduit dans 2-1 x 0 </ sub> (i) </ sup> Définir = 1. À ce stade, cela signifie que x 0 </ sub> = 1 dans le i-ème cas est défini, mais à l'origine x 0 </ sub> n'existe pas. Donc, en d'autres termes, dans le vecteur x (i) </ sup>, nous avons arbitrairement défini la 0ème caractéristique comme 1. Cela fait donc de x (i) </ sup> un vecteur dimensionnel n + 1. D'accord?
** Le contenu ci-dessus est difficile. Veuillez l'écrire sur un morceau de papier et le lire à plusieurs reprises. Au moment où vous le lirez environ trois fois, vous devriez être en mesure de le comprendre comme moi. ** **
Et nous considérons les paramètres comme des vecteurs.
θ =
\begin{bmatrix}
θ<sub>0</sub> \\
θ<sub>1</sub> \\
θ<sub>2</sub> \\
・\\
・\\
・\\
θ<sub>n</sub> \\
\end{bmatrix}
Et maintenant, vous pouvez transformer la forme de la formule.
hθ(x) = θ0 + θ1x1 + θ2x2 + θ3x3 + θ4x4
= hθ(x) = θ0x1 + θ1x1 + θ2x2 + θ3x3 + θ4x4
Au fait, transposez θ. En bref, il change de forme en tant que vecteur.
θ =
\begin{bmatrix}
θ0 \\
θ1 \\
θ2 \\
・\\
・\\
・\\
θn \\
\end{bmatrix}
=
\begin{bmatrix}
θ0 & θ1 & θ2 &・
&・
&・
& θn
\end{bmatrix}
Ce qui était 1 x n + 1 dimension est maintenant n + 1 x 1 dimension. C'est une translocation. Il est représenté par la lettre froissée T. Et multipliez cela par le vecteur de x
\begin{bmatrix}
θ0 & θ1 & θ2 &・
&・
&・
& θn
\end{bmatrix}
×
\begin{bmatrix}
xo \\
x1 \\
x2 \\
・\\
・\\
xn
\end{bmatrix}
=
= h θ </ sub> (x) = θ 0 </ sub> x 1 </ sub> + θ 1 </ sub> x 1 </ sub> > + θ 2 </ sub> x 2 </ sub> + θ 3 </ sub> x 3 </ sub> + θ 4 </ sub> x 4 </ sub> (la formule ci-dessus)
= θ Tx
Il s'agit de la régression linéaire de type variate. C'était le contenu le plus difficile que j'ai traité depuis la première partie ...
Dans la section précédente, nous avons discuté de l'idée de régression linéaire lorsqu'il y a plusieurs éléments. Dans cette section, nous examinerons comment ajuster les paramètres à l'hypothèse.
Sur la base de la section 2, nous transformerons la formule.
J(θ0, θ1, ... ,θn)= 1/2m mΣi=1 (hθ(x(i))-y(i))2
→ J(θ)= 1/2m mΣi=1 (hθ(x(i))-y(i))2
La raison de la formule ci-dessus est
θ =
\begin{bmatrix}
θ0 \\
θ1 \\
θ2 \\
・\\
・\\
・\\
θn \\
\end{bmatrix}
Voilà pourquoi.
prochain,
θj := θj - α ∂/∂θj J(θ0, θ1, ... ,θn)
→ θj := θj - α ∂/∂θj J(θ)
OK?
Et j'écrirai la méthode de descente la plus raide.
Si le groupe A n = 1:
** modèle 1 **
θ0 := θ0 - α 1/m mΣi=1(hθ(x(i)) - y(i))
** Motif 2 **
θ1 := θ1 - α 1/m mΣi=1(hθ(x(i)) - y(i))x(i)
Si le groupe B est supérieur à n = 1, alors:
** modèle 1 **
θ0 := θ0 - α 1/m mΣi=1(hθ(x(i)) - y(i))x0(i)
** Modèle 2 **
θ1 := θ1 - α 1/m mΣi=1(hθ(x(i)) - y(i))x1(i)
Tout d'abord, si vous comparez A-1 et B-1, vous remarquerez qu'ils sont identiques. C'est parce que la règle x 0 </ sub> (i) </ sup> = 1 ne fait aucune différence.
Il en va de même pour A-2 et B-2.
x (i) </ sup> = x 1 </ sub> (i) </ sup>.
Eh bien, vous n'avez pas besoin de connaître la formule jusqu'à présent, veuillez donc la lire attentivement.
Dans cette section 4, nous présenterons des idées pratiques pour bien utiliser la méthode de descente la plus raide.
Présentation de la mise à l'échelle future.
Par exemple, soit x 1 </ sub> la taille de votre maison, 0-2000m 2 </ sup>.
x 2 </ sub> est le nombre de chambres, entre 1 et 5.
À ce stade, il existe deux modèles dans le graphique de la méthode de descente la plus raide.
Quand,
est. (Tous deux cités sur https://www.coursera.org/learn/machine-learning/lecture/xx3Da/gradient-descent-in-practice-i-feature-scaling)
En premier lieu, que signifie cet anneau? Le type de bol de la fonction de coût montré dans 7-4 de Partie 1 est profilé. C'est une version bidimensionnelle utilisée. Le centre est donc la réponse. C'est l'une des méthodes de descente les plus raides.
Maintenant, la ligne rouge représente les étapes pour arriver à la réponse. Bien entendu, c'est le dernier du graphique qui est le plus proche d'un cercle qui peut atteindre efficacement la réponse en premier.
Alors, comment dessiner un graphique qui est proche d'un cercle? La réponse est simple. En bref, les valeurs de θ 0 </ sub> et θ 1 </ sub> (c'est-à-dire les variables x1, x2) doivent être plus proches.
Par exemple, dans cet exemple, x1 vaut 1/5 et x2 vaut 1/2000. En fait, le résultat est ce dernier. Le premier utilise les données telles quelles.
Et les actions ci-dessus sont appelées ** fortune-scaling **.
Alors, quelles sont les règles pour rapprocher les valeurs? Tout d'abord, par principe, si la plage de données elle-même est grande, il n'est pas nécessaire de la mettre à l'échelle. ** Comment décidez-vous de mettre à l'échelle ou non **
Un exemple valable est celui du professeur Andrew Ng de l'Université de Stanford.
-3 à 3 ・ ・ ・ OK
-1/3 à 1/3 ・ ・ ・ OK
-0,001 à 0,001 ・ ・ ・ NG (bâillon de mon père)
-100 à 100 ・ ・ ・ NG
En bref, c'est ** rugueux **.
Auparavant, j'ai divisé les données par la valeur maximale. Cependant, comme souvent utilisé par d'autres moyens,
Il existe quelque chose appelé ** normalisation moyenne **.
Cela prend x i </ sub> et tente de rapprocher la moyenne comprenant les autres variables x de 0.
Cependant, comme vous le savez, x 0 </ sub> vaut toujours 1, veuillez donc noter qu'il ne peut pas être utilisé pour x 0 </ sub>.
** Que faire est ceci **
x1 = taille-moyenne / maximum de x1 (ici x1 = taille-1000/2000)
x2 = nombre de chambres-moyen / maximum (ici x2 = nombre de chambres-2/5)
Cela le rapprochera de zéro. C'est étrange.
** La mise à l'échelle des fonctionnalités n'est pas stricte ** En gros, ça va
e.g.)
Par exemple, supposons que vous ayez deux fonctionnalités pour une maison.
x1 est la longueur de la façade (largeur face à la route)
x2 est la longueur de la profondeur
Bien sûr, il est naturel d'utiliser x1 et x2 tels quels, mais en supposant que la taille du terrain détermine le prix de la maison, comme troisième caractéristique,
x est x1 x x2
Tu pourrais dire ça.
Parce que x1 et x2 existaient en premier. Au fait, j'ai l'impression que je l'utilise souvent dans des compétitions d'apprentissage automatique telles que kaggle. (Mystère)
En définissant les fonctionnalités, je voudrais vous présenter ce que l'on appelle la ** régression polypoly **.
Il existe de nombreuses variations dans l'équation de régression linéaire. Par exemple, ici.
hθ + θ1x1 + θ2x2 + θ3x3
Et c'est
= θ 0 </ sub> + θ 1 </ sub> (taille) + θ 2 </ sub> (taille) 2 </ sup> + θ 3 Il peut également être exprimé par </ sub> (taille) 3 </ sup>.
x1 + (size)
x2 + (size)2
Si x 3 </ sub> + (taille) 3 </ sup>.
C'est une fonction cubique. Eh bien, ce n'est qu'un exemple, mais par exemple, un graphique représentant des données montrant la relation entre la superficie du logement et le prix.
Dans des moments comme celui-ci, une fonction cubique est bonne. Pourquoi pensez-vous
S'il s'agit d'une fonction linéaire, ce sera une ligne droite, et si c'est une fonction quadratique, elle sera à nouveau abaissée en arc. Il est difficile d'imaginer que le prix d'une maison baissera s'il y a trop de sites.
Et ** rappelez-vous, mise à l'échelle des fonctionnalités **. Je vais l'utiliser à partir de maintenant.
Si vous définissez ** taille: 1-1000 **,
x1 = 1-1000
x2 = 1-1,000,000
X3 = 1-1 000 000 000.
Comme prévu, c'est ... la mise à l'échelle des fonctionnalités entre en jeu.
Cependant, veuillez faire le calcul vous-même. Je n'ai pas fini mes devoirs d'école aujourd'hui (rires)
Eh bien, j'ai écrit plus tôt que la fonction quadratique ne peut pas être utilisée car elle finira par revenir à sa valeur d'origine et deviendra faible, mais de cette façon, elle peut être utilisée.
Si vous utilisez la formule ci-dessus, vous pouvez éviter que le graphique ne descende. La raison en est les devoirs du professeur (rires).
** Comment choisissez-vous un avenir après tout? **
Veuillez lire les parties 3, 4, ... et toutes les séries à partir de maintenant. Alors vous comprendrez sûrement.
(Je ne peux encore rien dire en écrivant la partie 3 ...)
Soit dit en passant, soyez assuré que ** l'algorithme le sélectionnera automatiquement ** à la fin. (Je le porte)
Les équations normales fournissent une meilleure façon de trouver le paramètre θ dans certains problèmes de régression linéaire.
Plus précisément, l'algorithme utilisé jusqu'à présent pour la régression linéaire a été la méthode de descente la plus raide.
La méthode de descente la plus raide était un algorithme qui converge en arrivant à la solution optimale en répétant plusieurs étapes et plusieurs fois.
En revanche, les ** équations normales sont les ** algorithmes les plus puissants ** qui peuvent atteindre la solution optimale à la fois sans avoir besoin d'exécuter des algorithmes itératifs ** pour fournir un moyen de résoudre θ analytiquement. (Plus tard, je remarque un gros inconvénient)
Tout d'abord, obtenons une compréhension intuitive.
Comme prémisse, nous supposons que θ est un nombre réel. Au fait, je ne pense pas que ce soit un vecteur. S'il vous plaît soyez prudente.
Expression comme celle-ci
J(θ) = αθ2 + bθ + c
En d'autres termes, considérons la fonction de coût J.
Mais avant cela, vous souvenez-vous que le θ dont nous avons affaire est un vecteur dimensionnel n + 1?
La formule ressemble à ceci.
J(θ0,θ1,...,θm)= 1/2m mΣi=1 (hθ(x( i ))-y ( i ))2
Le problème est de savoir comment minimiser la fonction de coût J, mais la réponse de la fonction de coût J est de prendre la différenciation partielle de J et de résoudre divers problèmes pour chaque paramètre θ j </ sub>. Il semble que cela puisse être dérivé, mais dans cette section, nous aborderons un point plus conceptuel.
Au fait, supposons que vous ayez un ensemble de données comme celui-ci.
Créez ensuite une colonne de x 0 </ sub> pour créer une matrice de x.
y est le même.
Le x ci-dessus est m x n + 1. y est un vecteur à m dimensions. À propos, m est le nombre d'observations dans l'ensemble de données et n est le nombre d'entités (variable x).
** Alors, qu'est-ce qu'une équation normale **
θ = (XTX)-1XTy
Je veux que tu te souviennes que la lettre T avec un wow est
Dans ce deuxième article, j'ai été frappé par le fait que j'ai accidentellement supprimé deux fois des données, ce qui m'a fait sérieusement penser à travailler sur une base cloud. Eh bien, lequel êtes-vous?
Le type A semble être difficile, alors je viens de faire défiler jusqu'à ce point
J'ai tout lu en me demandant ce qu'est le type B
Je pense qu'environ 90% et 5 minutes est de type A ...
Ravi de vous rencontrer!
** La troisième partie sortira vendredi à minuit. ** **
Week 3 Publié à 21h00 le 16
Week 4 Publié à 21h00 le 16
Week 5 Publié à 21h00 le 17
Week 6 Publié à 21h00 le 19
Week 7 Publié à 21h00 le 20
Week 8 Publié à 21h00 le 22
Week 9 Publié à 21h00 le 23
Week 10 Publié à 21h00 le 24
Week 11 Publié à 21h00 le 26
comment était-ce. La plupart de la table est maintenant, mais nous allons augmenter le contenu. La raison pour laquelle je fais de mon mieux est que le tutoriel pour les débutants du département informatique auquel j'appartiens consiste à créer des jeux en C #. Absolument à partir de maintenant, l'apprentissage automatique Python x est bon. Si vous aimez, veuillez l'aimer.