Jeder, der jemals auf Algorithmen für maschinelles Lernen gestoßen ist, weiß, dass selbst einfache ML-Modelle mit einer großen Datenmenge für eine unannehmbar lange Zeit trainiert werden können. Die Aufgaben des Wiederherstellens von Abhängigkeiten und des Klassifizierens von Objekten werden zu Minuten oder sogar Stunden des Netzwerktrainings.
In diesem Artikel wird gezeigt, wie Sie am Beispiel von Algorithmen aus der Scikit-Learn-Bibliothek die Lernfähigkeiten neuronaler Netze mithilfe der beschleunigten Berechnungen der daal4py-Bibliothek erweitern können.
Einführung
Scikit-Learn bietet eine Reihe solider Tools zur Lösung von Problemen beim maschinellen Lernen. Klassifikation, Regression, Clustering ... sklearn hat Algorithmen für all dies. Wir werden mit einigen dieser Algorithmen arbeiten.
2019 wird die daal4py- Bibliothek basierend auf der Intel Data Analytics Acceleration Library (DAAL) gebildet . Intel präsentierte eine Lösung, die in direktem Zusammenhang mit der prädiktiven Datenanalyse steht und aufgrund der Leistung und Benutzerfreundlichkeit unter Peers einen erheblichen Vorteil hat.
Die Daal4py-Technologie ermöglicht es, die Leistung
klassischer sklearn-Methoden aufgrund beschleunigter Berechnungen (insbesondere Matrixtransformationen) auf Basis von Intel DAAL zu steigern.
Implementierung
Schauen wir uns die daal4py.sklearn-Methoden zu einem Testproblem an.
Auf kaggle veröffentlichter Datensatz: Datensatz für kardiovaskuläre Erkrankungen
Die Aufgabe besteht darin, ein Modell zu erstellen, mit dem das Vorhandensein oder Fehlen von kardiovaskulären Erkrankungen beim Menschen vorhergesagt werden kann.
Da es sich bei dieser Aufgabe um eine Klassifizierungsaufgabe handelt, wurde beschlossen, Ensamble aus den Modellen LogisticRegression, RandonForestClassifier und KNeighborsClassifier zu verwenden, die über das GridSearchCV-Parameteranpassungstool Scikit-Learn implementiert wurden.
Lassen Sie uns zunächst beide Implementierungen der Algorithmen mit denselben Parametern trainieren und vergleichen:
:
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 .
Fast Matrix Transforms Bibliothek daal4py beschleunigt maschinelle Lernmodelle und erweitert die Lernfähigkeiten, ohne Zeit zu verschwenden. Bei diesem Testproblem war es möglich, die Anzahl der aufgezählten Parameter sowie die Trainingsstichprobe um 34% zu erhöhen, ohne die Ausführungszeit zu ändern.