Estendendo algoritmos de aprendizado de máquina com daal4py

Cada pessoa que já encontrou algoritmos de aprendizado de máquina sabe que mesmo modelos simples de ML em uma grande quantidade de dados podem ser treinados por um tempo inaceitavelmente longo. As tarefas de restauração de dependências, classificação de objetos se transformam em minutos ou até horas de treinamento de rede.



Este artigo demonstrará como, usando o exemplo de algoritmos retirados da biblioteca Scikit-Learn, você pode expandir os recursos de aprendizado de redes neurais usando os cálculos acelerados da biblioteca daal4py.



Introdução



O Scikit-Learn oferece um conjunto sólido de ferramentas para resolver problemas de aprendizado de máquina. Classificação, regressão, agrupamento ... sklearn tem algoritmos para tudo isso. Vamos trabalhar com alguns desses algoritmos.



Em 2019, a biblioteca daal4py está sendo formada com base na Intel Data Analytics Acceleration Library (DAAL) . A Intel apresentou uma solução diretamente relacionada à análise preditiva de dados, que tem uma vantagem significativa entre os pares devido ao desempenho e facilidade de uso.



A tecnologia Daal4py permite aumentar o desempenho dos

métodos sklearn clássicos devido a cálculos acelerados (em particular transformações de matriz) baseados em Intel DAAL.



Implementação



Vejamos os métodos daal4py.sklearn em um problema de teste.



Conjunto de dados publicado no kaggle: Conjunto de dados de doenças cardiovasculares

A tarefa é criar um modelo capaz de prever a presença ou ausência de doenças cardiovasculares em humanos.



Esta tarefa é uma tarefa de classificação, portanto, optou-se por utilizar ensamble a partir dos modelos LogisticRegression, RandonForestClassifier e KNeighborsClassifier, passados ​​pela ferramenta de ajuste de parâmetros GridSearchCV, implementação Scikit-Learn.



Primeiro, vamos treinar as duas implementações dos algoritmos usando os mesmos parâmetros e compará-los:



:



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 .





A biblioteca Fast Matrix Transforms daal4py acelera os modelos de aprendizado de máquina e expande os recursos de aprendizado sem perder tempo. Neste problema de teste, foi possível aumentar o número de parâmetros enumerados, bem como aumentar o conjunto de treino em 34%, sem alterar o tempo de execução.





Conjunto de dados GitHub

Daal4py




All Articles