Что именно отображает `eli5.show_weights` для модели классификации? - PullRequest
0 голосов
/ 28 февраля 2020

Я использовал eli5, чтобы применить процедуру перестановки для важности функции. В документации есть некоторые пояснения и небольшой пример, но он не ясен.

Я использую модель sklearn SVC для задачи классификации.

Мой вопрос: Являются ли эти веса изменением (уменьшением / увеличением) точности при перетасовке указанного элемента c ИЛИ это весовые коэффициенты SV C этих элементов?

В этой средней статье автор заявляет, что эти значения показывают снижение производительности модели в результате перестановки этой функции. Но не уверен, действительно ли это так.

Небольшой пример:

from sklearn import datasets
import eli5
from eli5.sklearn import PermutationImportance
from sklearn.svm import SVC, SVR

# import some data to play with
iris = datasets.load_iris()
X = iris.data[:, :2]
y = iris.target

clf = SVC(kernel='linear')
perms = PermutationImportance(clf, n_iter=1000, cv=10, scoring='accuracy').fit(X, y)

print(perms.feature_importances_)
print(perms.feature_importances_std_)

[0.38117333 0.16214   ]
[0.1349115  0.11182505]

eli5.show_weights(perms)

enter image description here

1 Ответ

0 голосов
/ 01 марта 2020

Я провел глубокое исследование. После просмотра исходного кода вот что я считаю для случая, когда используется cv, а не prefit или None. Я использую схему K-Folds для своего приложения. Я также использую модель SV C, таким образом, score - это точность в этом случае.

Рассматривая метод fit объекта PermutationImportance, вычисляются _cv_scores_importances (https://github.com/TeamHG-Memex/eli5/blob/master/eli5/sklearn/permutation_importance.py#L202). Используется указанная схема перекрестной проверки, и base_scores, feature_importances возвращаются с использованием тестовых данных (функция: _get_score_importances внутри _cv_scores_importances).

Рассматривая функцию get_score_importances (* 1020) *), мы можем видеть, что base_score - это балл по данным без перетасовки, а feature_importances (иначе называемый там как: scores_decreases) определяются как не перетасованный балл - перетасованный балл (см. https://github.com/TeamHG-Memex/eli5/blob/master/eli5/permutation_importance.py#L93)

Наконец, ошибки (feature_importances_std_) - это SD вышеупомянутого feature_importances (https://github.com/TeamHG-Memex/eli5/blob/master/eli5/sklearn/permutation_importance.py#L209), а feature_importances_ - среднее значение выше feature_importances (не перетасованный счет минус (-) перетасованный счет).

...