[PYTHON] J'ai essayé d'implémenter Extreme Learning Machine

Qu'est-ce que Extreme Learning Machine (ELM)?

L'ELM est une forme spéciale de perceptron à action directe. Il a une couche cachée, mais le poids de la couche cachée est déterminé de manière aléatoire, et le poids de la couche de sortie est déterminé à l'aide d'une matrice pseudo inverse. En termes d'image, la couche cachée revient à créer de nombreux extracteurs d'entités aléatoires et à sélectionner des entités dans la couche de sortie.

ELM présente les caractéristiques suivantes.

la mise en oeuvre

import numpy as np


class ExtremeLearningMachine(object):
    def __init__(self, n_unit, activation=None):
        self._activation = self._sig if activation is None else activation
        self._n_unit = n_unit

    @staticmethod
    def _sig(x):
        return 1. / (1 + np.exp(-x))

    @staticmethod
    def _add_bias(x):
        return np.hstack((x, np.ones((x.shape[0], 1))))

    def fit(self, X, y):
        self.W0 = np.random.random((X.shape[1], self._n_unit))
        z = self._add_bias(self._activation(X.dot(self.W0)))
        self.W1 = np.linalg.lstsq(z, y)[0]

    def transform(self, X):
        if not hasattr(self, 'W0'):
            raise UnboundLocalError('must fit before transform')
        z = self._add_bias(self._activation(X.dot(self.W0)))
        return z.dot(self.W1)

    def fit_transform(self, X, y):
        self.W0 = np.random.random((X.shape[1], self._n_unit))
        z = self._add_bias(self._activation(X.dot(self.W0)))
        self.W1 = np.linalg.lstsq(z, y)[0]
        return z.dot(self.W1)

tester

Je vais l'essayer avec des iris pour le moment.

Méthode

from sklearn import datasets

iris = datasets.load_iris()
ind = np.random.permutation(len(iris.data))

y = np.zeros((len(iris.target), 3))
y[np.arange(len(y)), iris.target] = 1

acc_train = []
acc_test = []
N = [5, 10, 15, 20, 30, 40, 80, 160]
for n in N:
    elm = ExtremeLearningMachine(n)
    elm.fit(iris.data[ind[:100]], y[ind[:100]])
    acc_train.append(np.average(np.argmax(elm.transform(iris.data[ind[:100]]), axis=1) == iris.target[ind[:100]]))
    acc_test.append(np.average(np.argmax(elm.transform(iris.data[ind[100:]]), axis=1) == iris.target[ind[100:]]))
plt.plot(N, acc_train, c='red', label='train')
plt.plot(N, acc_test, c='blue', label='test')
plt.legend(loc=1)
plt.savefig("result.png ")

résultat

result.png

Conclusion

Recommended Posts

J'ai essayé d'implémenter Extreme Learning Machine
Apprentissage automatique
J'ai essayé l'apprentissage automatique avec liblinear
[Renforcer l'apprentissage] J'ai implémenté / expliqué R2D3 (Keras-RL)
J'ai installé Python 3.5.1 pour étudier l'apprentissage automatique
J'ai implémenté CycleGAN (1)
[Memo] Apprentissage automatique
Classification de l'apprentissage automatique
J'ai implémenté ResNet!
Exemple d'apprentissage automatique
J'ai commencé l'apprentissage automatique avec le prétraitement des données Python
Résumé du didacticiel d'apprentissage automatique
Apprentissage automatique sur le surapprentissage
Apprentissage automatique ⑤ Résumé AdaBoost
Apprentissage automatique: supervisé - AdaBoost
Régression logistique d'apprentissage automatique
Machine de vecteur de support d'apprentissage automatique
Étudier l'apprentissage automatique ~ matplotlib ~
J'ai essayé le deep learning
Mémo du cours d'apprentissage automatique
Bibliothèque d'apprentissage automatique dlib
Apprentissage automatique (TensorFlow) + Lotto 6
Apprenez en quelque sorte le machine learning
Bibliothèque d'apprentissage automatique Shogun
Défi de lapin d'apprentissage automatique
Introduction à l'apprentissage automatique
Apprentissage automatique: k-voisins les plus proches
Qu'est-ce que l'apprentissage automatique?
Ce que j'ai appris sur l'IA / l'apprentissage automatique avec Python (1)
[Deep Learning from scratch] J'ai implémenté la couche Affine
J'ai essayé de déplacer l'apprentissage automatique (détection d'objet) avec TouchDesigner
Ce que j'ai appris sur l'IA / l'apprentissage automatique avec Python (3)
[Python] J'ai créé un classificateur pour les iris [Machine learning]
Ce que j'ai appris sur l'IA / l'apprentissage automatique avec Python (2)
J'ai essayé de compresser l'image en utilisant l'apprentissage automatique
Modèle d'apprentissage automatique prenant en compte la maintenabilité
L'apprentissage automatique appris avec Pokemon
Ensemble de données pour l'apprentissage automatique
Prétraitement japonais pour l'apprentissage automatique
Apprentissage automatique dans Delemas (s'entraîner)
Une introduction à l'apprentissage automatique
Machine Learning: Supervision - Régression linéaire
Bases de l'apprentissage automatique (mémoire)
J'ai commencé l'apprentissage automatique avec le clustering Python, la compression et la visualisation de dimensions
Un débutant en apprentissage automatique a essayé la RBM
J'ai installé la bibliothèque de machine learning automatique auto-sklearn sur centos7
[Apprentissage automatique] Comprendre la forêt aléatoire
Ce que j'ai appris sur l'IA / l'apprentissage automatique avec Python (4)
Apprentissage automatique avec Python! Préparation
Bloc-notes de ressources d'étude d'apprentissage automatique
J'ai essayé d'implémenter VQE avec Blueqat
J'ai essayé d'utiliser Tensorboard, un outil de visualisation pour l'apprentissage automatique
Comprendre l'apprentissage automatique ~ régression de crête ~.
J'ai essayé l'apprentissage automatique pour convertir des phrases en style XX
Résumé de l'article sur l'apprentissage automatique (auto-écrit)
À propos de la matrice mixte d'apprentissage automatique
Apprentissage automatique: forêt supervisée - aléatoire
Mémo pratique du système d'apprentissage automatique
Démineur d'apprentissage automatique avec PyTorch