يعرف كل شخص واجه خوارزميات التعلم الآلي أنه حتى نماذج ML البسيطة على كمية كبيرة من البيانات يمكن تدريبها لفترة طويلة بشكل غير مقبول. تتحول مهام استعادة التبعيات وتصنيف الكائنات إلى دقائق أو حتى ساعات من تدريب الشبكة.
ستوضح هذه المقالة كيف يمكنك ، باستخدام مثال الخوارزميات المأخوذة من مكتبة Scikit-Learn ، توسيع إمكانات التعلم للشبكات العصبية باستخدام الحسابات المتسارعة لمكتبة daal4py.
المقدمة
يوفر Scikit-Learn مجموعة قوية من الأدوات لحل مشكلات التعلم الآلي. التصنيف ، الانحدار ، التجميع ... لدى sklearn خوارزميات لكل هذا. سنعمل مع بعض هذه الخوارزميات.
في عام 2019 ، يتم تشكيل مكتبة daal4py بناءً على مكتبة تسريع تحليلات البيانات Intel (DAAL) . قدمت إنتل حلاً مرتبطًا بشكل مباشر بتحليل البيانات التنبؤية ، والذي يتمتع بميزة كبيرة بين الأقران بسبب الأداء وسهولة الاستخدام.
تسمح تقنية Daal4py بزيادة أداء
أساليب sklearn الكلاسيكية بسبب الحسابات المتسارعة (على وجه الخصوص تحويلات المصفوفة) القائمة على Intel DAAL.
التنفيذ
لنلقِ نظرة على طرق daal4py.sklearn المتعلقة بمشكلة اختبار.
مجموعة البيانات المنشورة على kaggle: مجموعة بيانات أمراض القلب والأوعية الدموية
وتتمثل المهمة في إنشاء نموذج قادر على التنبؤ بوجود أو عدم وجود أمراض القلب والأوعية الدموية لدى البشر.
هذه المهمة هي مهمة تصنيف ، لذلك تقرر استخدام إنسامبل من نماذج LogisticRegression و RandonForestClassifier و KNeighboursClassifier ، التي تم تمريرها من خلال أداة تركيب معلمة GridSearchCV ، تنفيذ Scikit-Learn.
أولاً ، دعنا ندرب كل من تطبيقات الخوارزميات باستخدام نفس المعلمات ونقارنها:
:
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 daal4py بتسريع نماذج التعلم الآلي وتوسيع قدرات التعلم دون إضاعة الوقت. في مشكلة الاختبار هذه ، كان من الممكن زيادة عدد المعلمات التي تم تعدادها ، وكذلك زيادة عينة التدريب بنسبة 34٪ ، دون تغيير وقت التنفيذ.