[PYTHON] Les débutants en apprentissage automatique essaient la régression linéaire

introduction

C'est la troisième fois qui suit. Cette fois, je voudrais faire une régression linéaire. Comme d'habitude, il est implémenté en Python, une explication détaillée est impossible, alors allez sur un autre site (rires) J'ai l'impression que ça devient désordonné, mais s'il vous plaît regardez avec des yeux chauds.

Le point

Les termes sont les deux suivants.

Erreur quadratique moyenne

Dans le cas de la régression linéaire, une ligne de «y = Θ_1x + Θ_2» est tracée pour les données distribuées, et le dessin de cette ligne et en prenant l'erreur à partir des données réelles est appelé l'erreur quadratique moyenne.

Dans l'exemple, il est défini comme suit.

T.dot () est une fonction produit interne. Il s'agit de la somme des sections moins y des données réelles, au carré, totalisées et divisée par le nombre de données d'apprentissage (m).

#Fonction de coût
j = T.sum(T.sqr(t[0] + T.dot(data, t[1:]) - target)) / (2 * m)

L'image de la figure est Veuillez vous reporter à la série d'implémentation d'algorithmes d'apprentissage automatique [Régression linéaire]! !!

Méthode de gradient

La méthode du gradient est une méthode pour corriger Θ_1 et Θ_2 de y = Θ_1x + Θ_2 dans la direction qui sera la plus correcte.

Le code est comme suit. Il définit T.grad () qui différencie la variable partagée (np.array ([0,0])) appelée t (= theta = Θ). La fonction de l'erreur quadratique moyenne définie ci-dessus est partiellement différenciée par rapport à Θ1 et Θ2, respectivement. Définissez ensuite une fonction appelée train () et mettez à jour la valeur de t avec ʻupdates = ({}) `après chaque exécution.

#Différenciation partielle
dt = T.grad(cost=j, wrt=t)

#Méthode de gradient(Mise à jour de Θ)
train = theano.function(
    inputs  = [],
    outputs = [j],
    updates = ({t: t - (alpha*dt)})
    )

L'image est [4ème méthode de gradient (méthode de descente la plus raide)](https://github.com/levelfour/machine-learning-2014/wiki/%E7%AC%AC4%E5%9B%9E ---% E5 % 8B% BE% E9% 85% 8D% E6% B3% 95% EF% BC% 88% E6% 9C% 80% E6% 80% A5% E9% 99% 8D% E4% B8% 8B% E6% B3 Veuillez vous référer à% 95% EF% BC% 89)! !!

Échantillon (python)

Montrez-moi le code et mettez-le pour les gens. J'utilise une bibliothèque appelée theano pour l'implémentation, donc si vous ne comprenez pas, veuillez gg! Je n'applique pas le code par prédiction (je mettrai à jour le code si j'ai le temps)

# -*- coding: utf-8 -*-

import numpy as np
import theano
import theano.tensor as T

class Regression:

    def __init__(self):
        self.t = None


    def fit(self, data, target, alpha=0.1):
        #Calculer la longueur de la variable explicative
        if isinstance(data[0], (np.ndarray, np.generic)):
            m = len(data[0])
        else:
            m = len(data)

        #Variables partagées
        t = theano.shared(np.zeros(m+1), name='theta')

        #Fonction de coût
        j = T.sum(T.sqr(t[0] + T.dot(data, t[1:]) - target)) / (2 * m)
        #Différenciation partielle
        dt = T.grad(cost=j, wrt=t)
        #Méthode de gradient(Mise à jour de Θ)
        train = theano.function(
            inputs  = [],
            outputs = [j],
            updates = ({t: t - (alpha*dt)})
            )
        #Apprentissage
        for i in range(100):
            train()


if __name__ == '__main__':

    from sklearn import datasets

    iris = datasets.load_iris()

    reg = Regression()
    reg.fit(data=iris.data, target=iris.target)

référence

Le site suivant a été très utile

Recommended Posts

Les débutants en apprentissage automatique essaient la régression linéaire
Régression linéaire d'apprentissage automatique
Machine Learning: Supervision - Régression linéaire
Algorithme d'apprentissage automatique (généralisation de la régression linéaire)
<Cours> Machine learning Chapitre 1: Modèle de régression linéaire
Algorithme d'apprentissage automatique (résumé de régression linéaire et régularisation)
Régression logistique d'apprentissage automatique
EV3 x Python Machine Learning Partie 2 Régression linéaire
Un débutant en apprentissage automatique a essayé la RBM
Comprendre l'apprentissage automatique ~ régression de crête ~.
Machine learning supervisé (classification / régression)
Essayez le machine learning à la légère avec Kaggle
Modèle d'empilage d'apprentissage automatique (retour)
Algorithme d'apprentissage automatique (régression logistique)
Python Scikit-learn Analyse de régression linéaire Analyse de régression simple non linéaire Apprentissage automatique
Les débutants en apprentissage automatique essaient de créer un arbre de décision
Coursera Machine Learning Challenge en Python: ex1 (régression linéaire)
Essayez d'évaluer les performances du modèle d'apprentissage automatique / de régression
[Apprentissage automatique] Étudions l'arbre de décision
Résumé de l'apprentissage automatique par les débutants de Python
Algorithme d'apprentissage automatique (analyse de régression multiple)
Algorithme d'apprentissage automatique (analyse de régression unique)
Classification et régression dans l'apprentissage automatique
Apprentissage automatique
SVM essayant l'apprentissage automatique avec scikit-learn
Les débutants en apprentissage automatique tentent de contacter Naive Bayes (2) - Mise en œuvre
<Pour les débutants> bibliothèque python <Pour l'apprentissage automatique>
Régression linéaire
[Apprentissage automatique] Essayez d'étudier une forêt aléatoire
Régression linéaire (pour les débutants) -Édition de code-
Apprentissage automatique: analyse discriminante linéaire supervisée
Les débutants en apprentissage automatique tentent de contacter Naive Bayes (1) - Théorie
[Apprentissage automatique] Comprendre la régression linéaire simple à partir de scikit-learn et des mathématiques
[Apprentissage automatique] Comprendre la régression multiple linéaire à partir de scikit-learn et des mathématiques
Les débutants en apprentissage automatique suivent le cours d'apprentissage en profondeur de Coursera
<Subject> Machine learning Chapitre 3: Modèle de régression logistique
Premiers pas pour les débutants en apprentissage automatique (IA)
Apprentissage automatique avec python (2) Analyse de régression simple
<Cours> Machine learning Chapitre 2: Modèle de régression non linéaire
Prévision du cours des actions à l'aide de l'apprentissage automatique (édition de retour)
[Apprentissage automatique] Analyse de régression à l'aide de scicit learn
[Python] [Apprentissage automatique] Les débutants sans aucune connaissance essaient l'apprentissage automatique pour le moment
(Apprentissage automatique) J'ai essayé de comprendre attentivement la régression linéaire bayésienne avec l'implémentation
[Memo] Apprentissage automatique
Classification de l'apprentissage automatique
Exemple d'apprentissage automatique
Ordre d'étude recommandé pour les débutants en apprentissage automatique / apprentissage en profondeur
Essayez de prédire la demande de puissance par l'apprentissage automatique
Liste des liens que les débutants en apprentissage automatique apprennent
Essayez d'utiliser le bloc-notes Jupyter à partir d'Azure Machine Learning
[Pour les débutants] Introduction à la vectorisation dans l'apprentissage automatique
Résumé du didacticiel d'apprentissage automatique
Apprentissage automatique sur le surapprentissage
Régression linéaire avec statsmodels
Apprentissage automatique ⑤ Résumé AdaBoost
Apprentissage automatique: supervisé - AdaBoost
Défis d'apprentissage automatique de Coursera en Python: ex2 (retour logistique)
Essayez de prédire le taux de change (FX) avec un apprentissage automatique non approfondi
Machine de vecteur de support d'apprentissage automatique
Étudier l'apprentissage automatique ~ matplotlib ~