Size: a a a

2020 July 08

OO

Oleg Okeev in catboost_ru
Соотвественно сейчас вручную проверяю.
Сделал датафрейм с prob0, prob1 и классом на тестовой выборке
Далее фильтр:
filter_prob1_more_treshold = df_total.loc[df_total['prob1'] > 0.603]
Соотвественно ожидаю увидеть на новом датасете класс0 не более чем в 30% случаях.
Я верно рассуждаю по логике ?
источник

IL

Ivan Lyzhin in catboost_ru
Не совсем так. Вы получите долю истинных 0 среди предсказанных 1. А FPR - это доля предсказанных 1 среди истинных 0.
источник

OO

Oleg Okeev in catboost_ru
Ivan Lyzhin
Не совсем так. Вы получите долю истинных 0 среди предсказанных 1. А FPR - это доля предсказанных 1 среди истинных 0.
А как мне тогда вручную проверить точность Предсказания класса1?
У меня есть датасет(prob0, prob1, правильные ответы на тестовой выборке)
источник

OO

Oleg Okeev in catboost_ru
Ivan Lyzhin
Не совсем так. Вы получите долю истинных 0 среди предсказанных 1. А FPR - это доля предсказанных 1 среди истинных 0.
По факту получилось ~0.61/0.39 значит где-то ошибка в логике
источник

IL

Ivan Lyzhin in catboost_ru
fpr можно посчитать так df[(df.target==0) & (df.prob1 > 0.6)].shape[0] / df[df.target==0].shape[0]
источник

OO

Oleg Okeev in catboost_ru
Ivan Lyzhin
fpr можно посчитать так df[(df.target==0) & (df.prob1 > 0.6)].shape[0] / df[df.target==0].shape[0]
В итоге получил fpr = 0.388 , а должен был получить 0.3 =(
источник

IL

Ivan Lyzhin in catboost_ru
А на обучающем датасете?
источник

OO

Oleg Okeev in catboost_ru
Ivan Lyzhin
А на обучающем датасете?
Вот сейчас сделаю, скажу. Просто интересно в чем может быть ошибка, если в итоге покажет такой же результат
источник

IL

Ivan Lyzhin in catboost_ru
При вычислении для датасета, на котором выбирался порог, должен быть точный результат. Для другого датасета это уже не гарантируется. Соответственно, чем больше тестовый датасет похож на обучающий, тем ближе будут результаты.
источник

OO

Oleg Okeev in catboost_ru
Ivan Lyzhin
При вычислении для датасета, на котором выбирался порог, должен быть точный результат. Для другого датасета это уже не гарантируется. Соответственно, чем больше тестовый датасет похож на обучающий, тем ближе будут результаты.
0.44 получилось на обучающей выборке , значит где-то ошибка
источник

OO

Oleg Okeev in catboost_ru
Ivan Lyzhin
При вычислении для датасета, на котором выбирался порог, должен быть точный результат. Для другого датасета это уже не гарантируется. Соответственно, чем больше тестовый датасет похож на обучающий, тем ближе будут результаты.
Вот такой код, вроде просто и ошибиться невозможно, сейчас ещё раз проверю

arr = model.predict_proba(data=X_validation)
print(arr)

# Суммируем предсказание и результат
df1 = pd.DataFrame(arr, columns=['prob0', 'prob1'])
y_validation.reset_index()
df2 = pd.DataFrame(Y_validation)
df_total = pd.merge(df1, df2, left_index=True, right_index=True)
источник

OO

Oleg Okeev in catboost_ru
Ivan Lyzhin
При вычислении для датасета, на котором выбирался порог, должен быть точный результат. Для другого датасета это уже не гарантируется. Соответственно, чем больше тестовый датасет похож на обучающий, тем ближе будут результаты.
Мы должны взять prob0 и prob1 от X_train и сопоставить с предсказываемой переменной y_train ?
источник

OO

Oleg Okeev in catboost_ru
Ivan Lyzhin
При вычислении для датасета, на котором выбирался порог, должен быть точный результат. Для другого датасета это уже не гарантируется. Соответственно, чем больше тестовый датасет похож на обучающий, тем ближе будут результаты.
Все спасибо. Разобрался. У меня был неверно сделал merge.
На train - ошибка =0.2 на тесте 0.3 как и ожидалось, так как treshold вычислялся на validation
источник

OO

Oleg Okeev in catboost_ru
Около 70% всех ситуаций мы отбросили, в итоге оставили только те, где процент 0.3 и соответственно ситуаций с классом 1 мы нашли ~70%
источник

VG

Vladimir Goncharov in catboost_ru
всем привет
собираю питонячью обертку из исходников.
все ли я правильно делаю? может быть кто-то знает как лечить эту проблему
стековерфлоу не помог
источник

OO

Oleg Okeev in catboost_ru
Ivan Lyzhin
При вычислении для датасета, на котором выбирался порог, должен быть точный результат. Для другого датасета это уже не гарантируется. Соответственно, чем больше тестовый датасет похож на обучающий, тем ближе будут результаты.
А ещё вопрос. Подходит ли catboost для небинарной классификации? Если классов 3-5?
источник

IL

Ivan Lyzhin in catboost_ru
Oleg Okeev
А ещё вопрос. Подходит ли catboost для небинарной классификации? Если классов 3-5?
источник

OO

Oleg Okeev in catboost_ru
А это недавно появилось ?
источник

IL

Ivan Lyzhin in catboost_ru
Oleg Okeev
А это недавно появилось ?
Давно уже
источник

OO

Oleg Okeev in catboost_ru
И последний вопрос. Выполняя код print(select_threshold(model=model, data=eval_pool, FNR=0.3))
Получаю ответ 0.53
Теперь я должен
Выбирать ситуации с prob0>0.53 или prob1>0.53 ?
источник