Машинное обучение в трейдинге: теория, модели, практика и алготорговля - страница 2112

 
Aleksey Vyazmikin:

Результаты получились странные - на тестовой и учебной выборке Recall 0,6-0,8 , а на exam без преобразования 0,009, а с преобразованием 0,65 - чтот тут не так :(

Такое ощущение, что CatBoost выучил алгоритм преобразования :)

А есть ли возможность пометить старые и новые строки? Тогда можно из преобразованной выборки убрать преобразованные строки и посмотреть - это проблема интерпретации или же не качественное обучение всё ж.

так и должно быть, на новых данных же меньше примеров одного класса. Здесь типа обобщающая способность должна быть лучше, надо гонять в тестере сразу

на моих данных не помогает ресемплинг

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

 
Aleksey Vyazmikin:

1-2 - да так может быть, но не обязательно, нужен подход, который будет минимизировать такую вероятность.

А насчет категориальных признаков - это верно, но для MQ нет интерпретатора модели с категориальными признаками.

Пока вижу решение в консолидации квантовых отрезков под одно значение и создание отдельной выборки, где эти значения встречаются - так будем гарантированно работать с этим подмножеством. Это я буду делать в поисках листьев, но в начале нужно быстро квантовать разными методами.

Это алгоритм построения дерева. Вы его не можете изменить. Если только написать собственный Catboost

 
Maxim Dmitrievsky:

так и должно быть, на новых данных же меньше примеров одного класса. Здесь типа обобщающая способность должна быть лучше, надо гонять в тестере сразу

на моих данных не помогает ресемплинг

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

Так Recall должен оставаться высоким иначе нет смысла же. Он не зависит от сбалансированности выборки.

Принцип работы я понял, спасибо.

Есть какой то метод с кластеризацией  "Cluster Centroids" - или ещё что попробовать отсюда.

5 главных алгоритмов сэмплинга
5 главных алгоритмов сэмплинга
  • habr.com
Работа с данными — работа с алгоритмами обработки данных. И мне приходилось работать с самыми разнообразными на ежедневной основе, так что я решил составить список наиболее востребованных в серии публикаций. Эта статья посвящена наиболее распространённым способам сэмплинга при работе с данными.
 
elibrarius:

Это алгоритм построения дерева. Вы его не можете изменить. Если только написать собственный Catboost

Об этом и речь - надо делать свой алгоритм.

 
Aleksey Vyazmikin:

Так Recall должен оставаться высоким иначе нет смысла же. Он не зависит от сбалансированности выборки.

Принцип работы я понял, спасибо.

Есть какой то метод с кластеризацией  "Cluster Centroids" - или ещё что попробовать отсюда.

этот наоборот удаляет метки из мажорного класса

 
Maxim Dmitrievsky:

этот наоборот удаляет метки из мажорного класса

Так и удалим нули по умному, может это даст эффект.

 
Aleksey Vyazmikin:

Так и удалим нули по умному, может это даст эффект.

в ноутбуке просто замените метод и все

from imblearn.under_sampling import ClusterCentroids
cc = ClusterCentroids(random_state=0)
X_resampled, y_resampled = cc.fit_resample(X, y)

отсюда пример

https://imbalanced-learn.readthedocs.io/en/stable/under_sampling.html

мне больше нраявятся Near-Miss (по картинкам)

3. Under-sampling — imbalanced-learn 0.5.0 documentation
  • imbalanced-learn.readthedocs.io
On the contrary to prototype generation algorithms, prototype selection algorithms will select samples from the original set . Therefore, is defined such as and . In addition, these algorithms can be divided into two groups: (i) the controlled under-sampling techniques and (ii) the cleaning under-sampling techniques. The first group of methods...
 
Maxim Dmitrievsky:

в ноутбуке просто замените метод и все

Чет я не там заменил видать - ругается

---------------------------------------------------------------------------
NameError                                 Traceback (most recent call last)
<ipython-input-2-e8cb95eddaea> in <module>()
      1 cc = ClusterCentroids(random_state=0)
----> 2 X_resampled, y_resampled = cc.fit_resample(X, y)

NameError: name 'X' is not defined

Посмотрите, пожалуйста что там не так.

 
Maxim Dmitrievsky:


мне больше нраявятся Near-Miss (по картинкам)

Картинки красивые - но нужно пробовать.

 
Aleksey Vyazmikin:

Чет я не там заменил видать - ругается

Посмотрите, пожалуйста что там не так.

там не X, y а data_X, data_y

если используется андерсемплинг (уменьшение кол-ва семплов мажорного класса), то данных желательно много собрать, иначе мало получится на выходе (по размеру минорного класса)

Причина обращения: