Toute personne ayant déjà rencontré des algorithmes d'apprentissage automatique sait que même les modèles ML simples sur une grande quantité de données peuvent être entraînés pendant une durée inacceptable. Les tâches de restauration des dépendances, de classification des objets se transforment en minutes voire en heures de formation réseau.
Cet article montre comment, à l'aide de l'exemple d'algorithmes tirés de la bibliothèque Scikit-Learn, vous pouvez étendre les capacités d'apprentissage des réseaux de neurones en utilisant les calculs accélérés de la bibliothèque daal4py.
introduction
Scikit-Learn fournit un ensemble solide d'outils pour résoudre les problèmes d'apprentissage automatique. Classification, régression, clustering ... sklearn a des algorithmes pour tout cela. Nous travaillerons avec certains de ces algorithmes.
En 2019, la bibliothèque daal4py est en cours de formation sur la base de la bibliothèque d'accélération Intel Data Analytics (DAAL) . Intel a présenté une solution directement liée à l'analyse prédictive des données, qui présente un avantage significatif parmi ses pairs en raison de ses performances et de sa facilité d'utilisation.
La technologie Daal4py permet d'augmenter les performances des
méthodes sklearn classiques grâce à des calculs accélérés (en particulier des transformations matricielles), basés sur Intel DAAL.
la mise en oeuvre
Regardons les méthodes daal4py.sklearn sur un problème de test.
Ensemble de données publié sur kaggle: ensemble de données sur les maladies cardiovasculaires
La tâche consiste à créer un modèle capable de prédire la présence ou l'absence de maladies cardiovasculaires chez l'homme.
Cette tâche est une tâche de classification, il a donc été décidé d'utiliser ensamble des modèles LogisticRegression, RandonForestClassifier et KNeighborsClassifier, transmis via l'outil d'ajustement des paramètres GridSearchCV, implémentation Scikit-Learn.
Tout d'abord, entraînons les deux implémentations des algorithmes en utilisant les mêmes paramètres et comparons-les:
:
from sklearn.model_selection import GridSearchCV
# Best Logistic Regression
def get_best_clf_lr(name, clf, params):
start = timer()
grid_clf = GridSearchCV(estimator=clf, param_grid=params, n_jobs=-1)
grid_clf.fit(X_train, y_train)
end = timer()
learning_time = end - start
print(learning_time)
return name, learning_time, grid_clf.best_estimator_
# Best Random Forest Classifier
def get_best_clf_rf(name, clf, params):
start = timer()
grid_clf = GridSearchCV(estimator=clf, param_grid=params, n_jobs=-1, cv=5)
grid_clf.fit(X_train, y_train)
end = timer()
learning_time = end - start
print(learning_time)
return name, learning_time, grid_clf.best_estimator_
# Best K Neighbors Classifier
def get_best_clf_knn(name, clf, params):
start = timer()
grid_clf = GridSearchCV(estimator=clf, param_grid=params, n_jobs=-1)
grid_clf.fit(X_train, y_train)
end = timer()
learning_time = end - start
print(learning_time)
return name, learning_time, grid_clf.best_estimator_
, , , . sklearn daal4py . RandomForestClassifier :
from sklearn.ensemble import RandomForestClassifier as RandomForestClassifier_skl
from daal4py.sklearn import ensemble
# Random Forest Classifier
params_RF = {
'n_estimators': [1, 3, 5, 7, 10],
'max_depth': [3, 5, 7, 9, 11, 13, 15],
'min_samples_leaf': [2, 4, 6, 8],
'min_samples_split': [2, 4, 6, 8, 10]
}
name, lrn_time, model = get_best_clf_lr("RF_sklearn", RandomForestClassifier_skl(random_state = 42), params_RF)
learn_data_skl.append([name, model, lrn_time])
name, lrn_time, model = get_best_clf_lr("RF_daal4py", ensemble.RandomForestClassifier(random_state = 42), params_RF)
learn_data_daal.append([name, model, lrn_time])
. KNeigborsClassifier, 45. , , , - . 1.5 — 2 .
, RandomForestClassifier , 34% .
ensamble .
ROC_AUC score.
, feature engineering, , roc_auc_score 0.74 .
La bibliothèque Fast Matrix Transforms daal4py accélère les modèles d'apprentissage automatique et étend les capacités d'apprentissage sans perdre de temps. Sur ce problème de test, il était possible d'augmenter le nombre de paramètres énumérés, ainsi que d'augmenter l'échantillon d'apprentissage de 34%, sans changer le temps d'exécution.