Setiap orang yang pernah menemukan algoritme pembelajaran mesin tahu bahwa bahkan model ML sederhana pada sejumlah besar data dapat dilatih untuk waktu yang sangat lama. Tugas memulihkan ketergantungan, mengklasifikasikan objek berubah menjadi menit atau bahkan jam pelatihan jaringan.
Artikel ini akan mendemonstrasikan bagaimana, dengan menggunakan contoh algoritme yang diambil dari pustaka Scikit-Learn, Anda bisa memperluas kapabilitas pembelajaran jaringan saraf dengan menggunakan penghitungan yang dipercepat dari pustaka daal4py.
pengantar
Scikit-Learn menyediakan seperangkat alat yang solid untuk memecahkan masalah Machine Learning. Klasifikasi, Regresi, Pengelompokan ... sklearn memiliki algoritme untuk semua ini. Kami akan bekerja dengan beberapa algoritme ini.
Pada 2019, pustaka daal4py sedang dibentuk berdasarkan Pustaka Akselerasi Analisis Data Intel (DAAL) . Intel menyajikan solusi yang terkait langsung dengan analisis data prediktif, yang memiliki keunggulan signifikan di antara rekan-rekan karena kinerja dan kemudahan penggunaan.
Teknologi Daal4py memungkinkan untuk meningkatkan kinerja
metode sklearn klasik karena penghitungan yang dipercepat (khususnya transformasi matriks), berdasarkan Intel DAAL.
Penerapan
Mari kita lihat metode daal4py.sklearn pada masalah pengujian.
Kumpulan data yang diterbitkan di kaggle: Dataset Penyakit Kardiovaskular
Tugasnya adalah membuat model yang mampu memprediksi ada atau tidaknya penyakit kardiovaskular pada manusia.
Tugas ini adalah tugas klasifikasi, jadi diputuskan untuk menggunakan ensambel dari model LogisticRegression, RandonForestClassifier dan KNeighboursClassifier, yang diteruskan melalui alat penyesuaian parameter GridSearchCV, implementasi Scikit-Learn.
Pertama, mari latih kedua implementasi algoritme menggunakan parameter yang sama dan bandingkan:
:
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 .
Library Fast Matrix Transforms daal4py mempercepat model pembelajaran mesin dan memperluas kemampuan pembelajaran tanpa membuang waktu. Pada tes soal ini, dimungkinkan untuk meningkatkan jumlah parameter yang dicacah, serta meningkatkan sampel pelatihan sebesar 34%, tanpa mengubah waktu pelaksanaan.