Ampliación de algoritmos de aprendizaje automático con daal4py

Todas las personas que se han encontrado con algoritmos de aprendizaje automático saben que incluso los modelos de aprendizaje automático simples en una gran cantidad de datos se pueden entrenar durante un tiempo inaceptablemente largo. Las tareas de restaurar dependencias, clasificar objetos se convierten en minutos o incluso horas de entrenamiento de la red.



Este artículo demostrará cómo, utilizando el ejemplo de algoritmos tomados de la biblioteca Scikit-Learn, puede ampliar las capacidades de aprendizaje de las redes neuronales mediante los cálculos acelerados de la biblioteca daal4py.



Introducción



Scikit-Learn proporciona un conjunto sólido de herramientas para resolver problemas de aprendizaje automático. Clasificación, regresión, agrupamiento ... sklearn tiene algoritmos para todo esto. Trabajaremos con algunos de estos algoritmos.



En 2019, la biblioteca daal4py se está formando sobre la base de Intel Data Analytics Acceleration Library (DAAL) . Intel presentó una solución directamente relacionada con el análisis de datos predictivos, que tiene una ventaja significativa entre sus pares debido al rendimiento y la facilidad de uso.



La tecnología Daal4py permite aumentar el rendimiento de

los métodos sklearn clásicos debido a cálculos acelerados (en particular transformaciones matriciales), basados ​​en Intel DAAL.



Implementación



Veamos los métodos daal4py.sklearn en un problema de prueba.



Conjunto de datos publicado en kaggle: Conjunto de datos de enfermedades cardiovasculares

La tarea consiste en crear un modelo capaz de predecir la presencia o ausencia de enfermedades cardiovasculares en humanos.



Esta tarea es una tarea de clasificación, por lo que se decidió utilizar ensamble de los modelos LogisticRegression, RandonForestClassifier y KNeighborsClassifier pasados ​​a través de la herramienta de ajuste de parámetros GridSearchCV, implementación de Scikit-Learn.



Primero, entrenemos ambas implementaciones de los algoritmos usando los mismos parámetros y compárelos:



:



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 biblioteca Fast Matrix Transforms daal4py acelera los modelos de aprendizaje automático y amplía las capacidades de aprendizaje sin perder tiempo. En este problema de prueba, fue posible aumentar el número de parámetros enumerados, así como aumentar la muestra de entrenamiento en un 34%, sin cambiar el tiempo de ejecución.





Conjunto de datos de GitHub

Daal4py




All Articles