daal4pyを使用したマシン学習アルゴリズムの拡張

機械学習アルゴリズムに遭遇したことのある人なら誰でも、大量のデータに関する単純なMLモデルでさえ許容できないほど長い時間トレーニングできることを知っています。依存関係の復元、オブジェクトの分類のタスクは、数分または数時間のネットワークトレーニングになります。



この記事では、Scikit-Learnライブラリから取得したアルゴリズムの例を使用して、daal4pyライブラリの高速計算を使用してニューラルネットワークの学習機能を拡張する方法を示します。



前書き



Scikit-Learnは、機械学習の問題を解決するための確かなツールセットを提供します。分類、回帰、クラスタリング... sklearnには、これらすべてのアルゴリズムがあります。これらのアルゴリズムのいくつかを使用します。



2019年、daal4pyライブラリはIntel Data Analytics Acceleration Library(DAAL)に基づいて作成されます。Intelは、予測データ分析に直接関連するソリューションを発表しました。これは、パフォーマンスと使いやすさにより、ピア間で大きな利点があります。



Daal4pyテクノロジーを使用する

と、Intel DAALに基づく計算(特にマトリックス変換)が高速化されるため従来のsklearnメソッドのパフォーマンスを向上させることができます



実装



テスト問題のdaal4py.sklearnメソッドを見てみましょう。



kaggleで公開されたデータセット:心臓血管疾患データセット

タスクは、人間の心臓血管疾患の有無を予測できるモデルを作成することです。



このタスクは分類タスクであるため、GridSearchCVパラメーターフィッティングツールであるScikit-Learn実装を介して渡されたLogisticRegression、RandonForestClassifier、およびKNeighborsClassifierモデルからのアンサンブルを使用することが決定されました。



まず、同じパラメーターを使用してアルゴリズムの両方の実装をトレーニングし、それらを比較してみましょう。



:



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%増やすことができました。



GitHub

データセット

Daal4py




All Articles