現代分類工作流程通常需要將單個記錄和數據點分類為多個類別,而不僅僅是分配單個標簽。
借助 scikit-learn 等開源 Python 庫,可以更輕松地針對這些多標簽問題構建模型。多個模型內置了對多標簽數據集的支持,而簡單的 scikit-learn 實用程序函數也支持使用不適合這些用例的函數。
但是,訓練這些多標簽模型的計算成本很高,而且基于 CPU 的基礎設施無法跟上企業每年生成的數據量。
RAPIDS 是開源 GPU 加速數據科學和 AI 庫的集合。 cuML 是一個適用于 Python 的 GPU 加速機器學習庫,具有 scikit-learn 兼容 API。
在這篇博文中,我們展示了 RAPIDS cuML 如何借助加速計算輕松實現多標簽機器學習工作流程的 大幅加速 。
為什么要進行多標簽分類?
在某些企業用例中,目標是構建模型以預測每條記錄的單個標簽。支付處理器需要標記交易是否有效或欺詐,制造商可能需要從傳感器或攝像頭數據中識別特定產品,以便在配送中心內進行適當配送。
在每種情況下,標簽都是互斥的。交易要么是有效的,要么是欺詐性的,但不能兩者兼有。
當我們沒有互斥的類別時,會使用多標簽分類。
例如,醫療保健提供商可能希望從同一組患者數據中預測多種病癥的存在。或者,一家報紙可能希望將一篇文章分類為同時涉及金融和世界新聞的文章,以便推薦系統可以向這兩個部分的讀者公布。
多標簽分類使我們能夠更有效地處理此類問題,而不是不得不選擇一個標簽來犧牲細微差別。
使用 RAPIDS cuML 進行多標簽分類?
RAPIDS cuML 可以直接應用到現有的 scikit-learn 工作流程中。
與 scikit-learn 類似,一些 RAPIDS cuML 估計器 (例如 KNeighborsClassifier) 為多標簽分類提供內置支持。在以下示例中,我們使用 scikit-learn 創建合成多標簽數據集,并將其直接與 cuML 的 KNeighborsClassifier 一起使用。
from sklearn.datasets import make_multilabel_classification from cuml.neighbors import KNeighborsClassifier X, y = make_multilabel_classification( n_samples = 10000 , n_features = 20 , n_classes = 5 , random_state = 12 ) clf = KNeighborsClassifier(n_neighbors = 10 ).fit(X, y) preds = clf.predict(X) preds[: 5 ] array([[ 0 , 0 , 1 , 0 , 0 ], [ 0 , 1 , 1 , 1 , 0 ], [ 0 , 1 , 0 , 0 , 0 ], [ 0 , 1 , 0 , 1 , 0 ], [ 0 , 0 , 1 , 0 , 0 ]]) |
由于數據集中的每條記錄最多可以屬于五個類別 (n_classes=5
),因此我們的估測器會為每行輸出五個預測。
要使用不包含對多個標簽的內置支持的模型,如 Support Vector Machines,scikit-learn 提供了 MultiOutputClassifier 實用程序函數。我們可以像使用 scikit-learn estimators 一樣,將其與 cuML estimators 結合使用。
此實用功能需要為五個類別中的每個類別訓練單獨的模型,從而將計算需求增加 5 倍。因此,加速計算在這些場景中變得更加重要。
from sklearn.datasets import make_multilabel_classification from sklearn.multioutput import MultiOutputClassifier from cuml.svm import SVC X, y = make_multilabel_classification( n_samples = 10000 , n_features = 20 , n_classes = 5 , random_state = 12 ) base = cuml.svm.SVC() clf = MultiOutputClassifier(base).fit(X, y) preds = clf.predict(X) preds[: 5 ] array([[ 0 , 0 , 1 , 0 , 0 ], [ 0 , 1 , 1 , 1 , 0 ], [ 0 , 1 , 0 , 0 , 0 ], [ 0 , 1 , 0 , 1 , 0 ], [ 0 , 0 , 1 , 0 , 0 ]]) |
結束語?
現實世界中的許多機器學習挑戰都涉及多標簽分類,但在使用 Python 生態系統中的工具時,基于 CPU 的處理難以跟上數據集不斷增長的規模。
RAPIDS cuML 非常適合此生態系統,因此可以輕松利用加速計算來訓練多標簽分類模型。
如需詳細了解加速機器學習,并查看您喜歡的估計器是否默認支持多標簽分類,或者是否需要實用函數, 請訪問 cuML 文檔。
?