[PYTHON] Apprentissage automatique que les élèves du premier cycle du secondaire comprennent parfaitement grâce à cela [mis à jour quotidiennement]

0 Préface

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.

Part 1 Part 2

1 Qu'est-ce que l'apprentissage automatique?

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é» **.

2 Qu'est-ce que l'apprentissage supervisé?

L'apprentissage supervisé est le problème ** le plus courant ** d'apprentissage automatique.

Comme caractéristique principale

Il y a deux points.

2-1-1 Il y a une réponse correcte dans l'ensemble de données donné

→ 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.

2-1-2 Peut être divisé en problèmes de classification et problèmes de régression

Il existe deux principaux genres d'apprentissage supervisé.

Ce sont le «problème de classification» et le «problème de retour».

2-2 Qu'est-ce qu'un problème de classification?

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».

2-3 Qu'est-ce qu'un problème de régression?

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.

3 Apprentissage non supervisé

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

3-1 Qu'est-ce qu'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.

4 Régression linéaire (représentation du modèle)

4-1 Oups ... avant ça

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.

4-2 Décidez comment exprimer l'hypothèse

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. ** **

5 Fonction de coût (fonction objectif)

5-1 En premier lieu: Objectif

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)

4d4dc8da6d0042fd77b72a773be7b8d7.png

À ce stade, le but est de trouver la ligne rouge et de minimiser le carré de la distance au point bleu.

5-2 Comment sélectionner les paramètres

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:

スクリーンショット 2020-01-25 10.05.14.png

Ce sera.

Lorsque θ 0 </ sub> = 1 et θ 1 </ sub> = 0,5:

スクリーンショット 2020-01-25 10.11.46.png

Ce sera.

5-3 Expression pour sélectionner les paramètres

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.

4d4dc8da6d0042fd77b72a773be7b8d7.png

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.

5-4 Qu'est-ce qu'une fonction de coût après tout?

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.

6 Fonction de coût (fonction objectif) # 2

6-1 Simplification

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.

6-2 Approfondir la compréhension

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.

6-3 Lien entre hypothèse et fonction de coût

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.

スクリーンショット 2020-01-25 13.13.22.png

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à.

スクリーンショット 2020-01-25 13.42.00.png

La couleur de la ligne et la couleur du cercle correspondent. Le graphique ci-dessus montre la fonction objective J.

7 La méthode de descente la plus raide (méthode de descente de gradient)

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.

7-1 Image

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/

スクリーンショット 2020-01-25 15.26.49.png

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.

7-2 Commentaire mathématique

C'est la formule à utiliser.

スクリーンショット 2020-01-25 15.29.42.png

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.

スクリーンショット 2020-01-25 15.37.17.png

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:

スクリーンショット 2020-01-25 16.22.06.pngJ(θ01)=スクリーンショット2020-01-2516.22.06.png1/2mmΣi=1(hθ(x(i))-y(i))2=スクリーンショット2020-01-2516.22.06.png1/2mmΣi=1(θ01x(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。

7-3 Points importants de la méthode de descente la plus raide (méthode de descente de gradient)

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

スクリーンショット 2020-01-25 15.56.33.png

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.

7-4 Résolution de la méthode de descente la plus raide avec régression linéaire

En principe, la méthode de descente la plus raide fait partie de la fonction de coût.

スクリーンショット 2020-01-25 17.00.20.png スクリーンショット 2020-01-25 17.00.31.png

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.

8 Matrice et vecteur

8-1 Qu'est-ce qu'une matrice?

\begin{bmatrix}
a & b \\
c & d \\
e & f
\end{bmatrix}

Par exemple, celui ci-dessus est une matrice. 3 x 2

8-2 Qu'est-ce qu'un vecteur?

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.

8-3 règles

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

8-4 Addition et soustraction de matrice

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.

8-5 multiplication scalaire

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.

8-6 Multiplier la matrice et le vecteur

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.

8-7 Multiplier deux matrices

** 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.

8-8 Ne vous trompez pas dans l'ordre de multiplication

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.

8-9 Inverse de la matrice

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é.

9 Merci

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.

À la semaine 2: Bienvenue

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 Installez Octave

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

exitTapez 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.

2 régression linéaire multivariée

2-1 Hypothèses

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.

2-2 Forme de régression linéaire

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 ...

3 La méthode de descente la plus raide pour plusieurs variables

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.

4 Mise à l'échelle future

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.

スクリーンショット 2020-01-28 17.38.08.png

Quand,

スクリーンショット 2020-01-28 17.38.18.png

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

5 Comment sélectionner la fonction (fonction x) à utiliser

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.

スクリーンショット 2020-01-28 18.57.06.png

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.

スクリーンショット 2020-01-28 19.07.55.png

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)

6 Équation normale

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(θ01,...,θ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.

スクリーンショット 2020-01-28 21.39.07.png

Créez ensuite une colonne de x 0 </ sub> pour créer une matrice de x.

スクリーンショット 2020-01-28 21.42.12.png

y est le même.

スクリーンショット 2020-01-28 21.43.40.png

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

8 Merci

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

Problème de classification

Expression d'hypothèse

Limite de décision

Fonction de coût

Fonction de coût et méthode de descente la plus raide (simple)

Optimisation avancée

Classement multi-classes: 1 contre tous

Problème de surajustement

Fonction de coût

Régression linéaire régularisée

Régression logistique régularisée

Week 4 Publié à 21h00 le 16

Hypothèse non linéaire

Neurone et cerveau

Représentation de modèle (1)

Représentation de modèle (2)

Échantillons et intuition (1)

Échantillons et intuition (2)

Classification multi-classes

Week 5 Publié à 21h00 le 17

Fonction de coût

Algorithme de propagation arrière

Propagation arrière intuitive

Note d'implémentation: extension des paramètres

Vérification du gradient

Initialisation aléatoire

Mettre ensemble

Week 6 Publié à 21h00 le 19

Décidé d'essayer ensuite

Comment évaluer l'hypothèse?

Sélection du modèle et train / vérification / ensemble de test

Diagnostic de biais et de dispersion

Régularisation et biais / dispersion

Courbe d'apprentissage

Repensez ce qu'il faut faire ensuite

Prioriser le contenu du travail

Erreur d'analyse

Indicateur d'erreur de classe déformée

Compromis institutionnels et de rappel

Données d'apprentissage automatique

Week 7 Publié à 21h00 le 20

Objectif de l'optimisation

Noyau (1)

Noyau (2)

Utiliser SVM

Week 8 Publié à 21h00 le 22

Apprendre sans enseignant (Introduction)

Algorithme K-Means

Objectif de l'optimisation

Initialisation aléatoire

Sélectionnez le nombre de clusters

Compression de données

Visualisation

Formulation du problème d'analyse en composantes principales

Algorithme d'analyse en composantes principales

Reconstruction à partir d'une représentation compressée

Sélection du nombre de composants principaux

Conseils sur l'application de l'ACP

Week 9 Publié à 21h00 le 23

Détectons une anomalie

Distribution gaussienne

algorithme

Développement et évaluation d'un système de détection d'anomalies

Détection d'anomalies et apprentissage supervisé

Sélectionnez la fonction à utiliser

Distribution gaussienne multivariée

Détection d'anomalies à l'aide d'une distribution gaussienne multivariée

Formulation du problème

Recommandations basées sur le contenu

Filtrage coopératif

Algorithme de filtrage coopératif

Vectorisation: décomposition matricielle de bas rang

Détails de mise en œuvre: normalisation moyenne

Week 10 Publié à 21h00 le 24

Apprendre avec de grands ensembles de données

Méthode probabiliste de descente la plus raide

Méthode de descente la plus raide en mini batch

Convergence probabiliste de la méthode de la plus forte descente

Apprentissage en ligne

Map Reduce et traitement parallèle des données

Week 11 Publié à 21h00 le 26

Description du problème et pipeline

Fenêtre coulissante

Acquérir une grande quantité de données et de données artificielles

Analyse du plafond: quelle partie du pipeline doit être abordée ensuite

Épilogue

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.

Recommended Posts

Apprentissage automatique que les élèves du premier cycle du secondaire comprennent parfaitement grâce à cela [mis à jour quotidiennement]
Modèle SIR que même les élèves du premier cycle du secondaire peuvent comprendre