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

 
Maxim Dmitrievsky #:
Ты CV описал. Только на тест выборке не тренируют по определению. На ней тестируют 🫥
Ой. да имел в виду трейн..  Сонный был. 

Так в чем отличие с CV? 
[Удален]  
mytarmailS #:
Ой. да имел в виду трейн..  Сонный был. 

Так в чем отличие с CV? 
Ну это используется для получения несмещенных оценок. Типа добавил новую переменную, надо посмотреть ее влияние. С одной моделью будет bias в оценке, через cv не будет. 

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


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

[Удален]  
mytarmailS #:

Помню, у нас как-то был полезный срач по поводу HMM и K-means, что они типа одинаково кластеризуют или не одинаково..

не помнишь что там было? Для определения режимов рынка.

 
Maxim Dmitrievsky #:

Помню, у нас как-то был полезный срач по поводу HMM и K-means, что они типа одинаково кластеризуют или не одинаково..

не помнишь что там было? Для определения режимов рынка.

Скорей всего просто цены с ск. окне но утверждать не буду, не помню
[Удален]  
mytarmailS #:
Скорей всего просто цены с ск. окне но утверждать не буду, не помню

Нынче принято ко всему добавлять слово "causal" - и читается красиво и с намеком на волшебство :)

https://github.com/LilJing/causal_hmm?tab=readme-ov-file

GitHub - LilJing/causal_hmm: Python implementation for paper: "Causal Hidden Markov Model for Time Series Disease Forecasting"(CVPR 2021)
GitHub - LilJing/causal_hmm: Python implementation for paper: "Causal Hidden Markov Model for Time Series Disease Forecasting"(CVPR 2021)
  • LilJing
  • github.com
Due to data privacy, our data set is not public here. If you found this work useful, please consider citing:
 
Maxim Dmitrievsky #:

Нынче принято ко всему добавлять слово "causal" - и читается красиво и с намеком на волшебство :)

Да,  есть такое, даже в R чатике в телеге часто этот казуал упоминается 
[Удален]  

Если увлекаетесь перебором признаков, здесь есть список с формулами, для временных рядов:

https://tsfresh.readthedocs.io/en/latest/text/list_of_features.html

Overview on extracted features — tsfresh 0.20.2.post0.dev1+ga7e14f8 documentation
  • tsfresh.readthedocs.io
tsfresh calculates a comprehensive number of features. All feature calculators are contained in the submodule: The following list contains all the feature calculations supported in the current version of tsfresh : Calculates a linear least-squares regression for values of the time series that were aggregated over chunks versus the sequence from...
 

Ранее публиковал графики смещения вероятности в кластерах тут , но там выборка была на листьях, а вот теперь решил посмотреть так будет выглядит ситуация, если просто взять выборку, при этом я использовал разные методы нормализации (в скобках название метода из библиотеки sklearn).


1. Без нормализации


2. Приводит значения признаков к диапазону от 0 до 1 (MinMaxScaler)


3. Приводит значения признаков к распределению со средним значением 0 и стандартным отклонением 1 (StandardScaler)


4. Приводит значения признаков к диапазону, устойчивому к наличию выбросов (RobustScaler)

Мне показалось любопытным, как нормализация влияет на кластеризацию.

Если отфильтровать по двум критериям - смещение вероятности от 5% и число примеров в кластере от 1% строк, то вариант без нормализации ничего не даёт вообще, а остальные по порядку выше:

MinMaxScaler - суммарный процент строк выборки train 4% 

StandardScaler - суммарный процент строк выборки train 5,6% 

RobustScaler - суммарный процент строк выборки train 8,83% 

Да, по моим критериям отбора строк получается маловато выборки для дальнейшего обучения, разве что попробовать отбор после кластеризации с методом нормализации  RobustScaler.

Вот что сообщает ChatGPT:

"

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

Вот как работает RobustScaler :

  1. Вычисление медианы и интерквартильного размаха: В отличие от MinMaxScaler или StandardScaler , которые используют среднее значение и стандартное отклонение соответственно, RobustScaler использует медиану и интерквартильный размах (IQR). Медиана - это значение, которое делит распределение данных пополам, а IQR - это разница между значениями квартиля 75% и квартиля 25%.

  2. Нормализация данных: Затем каждое значение признака вычитается из медианы и делится на IQR. Это масштабирует данные таким образом, что они имеют медиану 0 и размах 1.

Преимущества RobustScaler :

  • Устойчивость к выбросам: Использование медианы и интерквартильного размаха делает RobustScaler более устойчивым к выбросам в данных. Это позволяет лучше сохранять структуру данных при наличии выбросов.

  • Не требует предположений о распределении данных: Поскольку RobustScaler использует медиану и IQR, он не требует предположений о нормальном распределении данных.

"

[Удален]  
Aleksey Vyazmikin #:

Ранее публиковал графики смещения вероятности в кластерах тут , но там выборка была на листьях, а вот теперь решил посмотреть так будет выглядит ситуация, если просто взять выборку, при этом я использовал разные методы нормализации (в скобках название метода из библиотеки sklearn).

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

 
Maxim Dmitrievsky #:

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

Вроде не должно

n_Set = len(arr_Set_Viborka)
for Set in range(n_Set):   
    if Use_Load_CSV == True:
        arr_data_load,arr_Target,arr_Info=f_Load_Data(dir_cb+'\\Setup',arr_Set_Viborka[Set],True,False)#Открыть файл в формате feather

        if Set == 0:#Нормализая - для не бинарной выборки
            scaler.fit(arr_data_load)
        arr_data_load = scaler.transform(arr_data_load)