簡體   English   中英

有意義地解釋 BaseN 編碼的特征重要性

[英]Meaningfully interpreting BaseN encoded feature importances

我有關於用戶出生地的數據,特別是城市。 因為我的數據集中有幾千個城市,所以我尋找 OneHot 編碼的替代方案,因為我不想為單個列向我的數據集中添加數千列。 我發現 BaseN 編碼是 OneHot 的一個很好的替代品,所以我選擇了它。 我用基數 4 對我的數據進行編碼,所以現在我有 cumeric 列 City_0、City_1 等而不是字符串列 City。

然而,在使用隨機森林分類器對數據集進行建模后,我發現某些City_#變量是最重要的特征之一。 但是我該如何解釋這個結果呢? 由於城市已編碼為 4 個單獨的列,我如何才能得出實際結論(例如,哪些城市對我的目標變量影響最大)? 有沒有一種方法,或者我以這種方式對城市進行編碼是否完全失去了可解釋性?

您可以使用SkLearn2PMML package 將管道導出為PMML數據格式; 在轉換過程中,BaseN 編碼被取消,這樣就可以很容易地看到哪些城市流向哪個方向。

轉換示例:

from sklearn2pmml import sklearn2pmml
from sklearn2pmml.pipline import PMMLPipeline

mapper = ColumnTransformer([
  ("cat", BaseNEncoder(base = 4), cat_cols),
  ("cont", "passthrough", cont_cols)
])
classifier = RandomForestClassifier()
pipeline = PMMLPipeline([
  ("mapper", mapper),
  ("classifier", classifier)
])
pipeline.fit(X, y)
pipeline.pmml_feature_importances_ = classifier.feature_importances_
pipeline.configure(numeric = True)
sklearn2pmml(pipeline, "MyInterpretablePipeline.pmml")

如果將轉換選項切換為numeric = False ,則 BaseN 編碼將完全取消,以便城市名稱直接嵌入到 RF 數據結構中。

無論如何,PMML 是用於持久化擬合 ML 管道的最人性化的數據格式。 PMML 是 XML 的子集,因此可以使用任何文本編輯器打開、查看和編輯這些文件。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM