Я работаю с алгоритмом дерева решений для задачи двоичной классификации, и цель состоит в том, чтобы минимизировать ложные срабатывания (максимизировать positive predicted value
) классификации (стоимость диагностического инструмента очень высока).
Есть ли способ ввести weight
в критерии расщепления Джини / энтропии, чтобы штрафовать за ложные положительные ошибочные классификации?
Здесь например, модифицированный индекс Джини дается как:
Поэтому мне интересно, есть ли способ реализовать это в Scikit-learn?
EDIT
Игра с class_weight
дала следующие результаты:
from sklearn import datasets as dts
iris_data = dts.load_iris()
X, y = iris_data.features, iris_data.targets
# take only classes 1 and 2 due to less separability
X = X[y>0]
y = y[y>0]
y = y - 1 # make binary labels
# define the decision tree classifier with only two levels at most and no class balance
dt = tree.DecisionTreeClassifier(max_depth=2, class_weight=None)
# fit the model, no train/test for simplicity
dt.fit(X[:55,:2], y[:55])
построить график решения и дерево Голубой положительный (1) :
При перевешивании класса меньшинства (или более ценного):
dt_100 = tree.DecisionTreeClassifier (max_depth = 2, class_weight = {1: 100})