Обсуждение статьи "Нейросети — это просто (Часть 16): Практическое использование кластеризации"

 

Опубликована статья Нейросети — это просто (Часть 16): Практическое использование кластеризации:

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

Чтобы оценить работу советника мы провели его тестирование с использованием модели кластеризации из 500 кластеров, обученную в предыдущей статье и используемой в предыдущем тесте. График обучения приведен ниже.

График значений функции потерь в процессе обучения

Как можно заметить график обучения довольно ровный. Для обучения модели я использовал метод оптимизации параметров Adam. В течение первых 20 эпох мы видим плавное снижение функции потерь, связанное с накоплением импульсов. А затем заметно резкое снижение значение функции потерь до некоего минимума. Если Вы вспомните графики обучения моделей с учителем, то там чаще всего заметны ломанные линии функции потерь.

Автор: Dmitriy Gizlyk

 


2022.05.30 21:57:27.477 kmeans (WDO$,H1) 800 Ошибка модели inf

2022.05.30 22:00:23.937 kmeans (WDO$,H1) 850 Ошибка модели inf

2022.05.30 22:04:22.069 kmeans (WDO$,H1) 900 Ошибка модели inf

2022.05.30 22:08:04.179 kmeans (WDO$,H1) 950 Ошибка модели inf

2022.05.30 22:10:56.190 kmeans (WDO$,H1) 1000 Ошибка модели inf

2022.05.30 22:10:56.211 kmeans (WDO$,H1) ExpertRemove() function called

Como resolver este erro?


 
Rodrigo Pagani #:
2022.05.30 21:57:27.477 kmeans (WDO$,H1) 800 Ошибка модели inf

How to resolve this error?


This is not a program execution error. This line displays the model error (average distance to the centers of the clusters). But we see inf - value beyond the accuracy of calculations. Try to scale the original values. For example, divide by 10,000

 
Dmitry Gizlyk # :

Este não é um erro de execução do programa. Esta linha exibe o erro do modelo (distância média aos centros dos clusters). Mas vemos inf alem da precisao dos valores - valor. Tente dimensionar os valores originais. Por exemplo, divida por 10.000

I still couldn't find a solution.

 
Rodrigo Pagani #:

I still couldn't find a solution.

         data[shift] = NormalizeDouble((open - Rates[bar].low)/100,2);
         data[shift + 1] = NormalizeDouble((Rates[bar].high - open)/100,2);
         data[shift + 2] = NormalizeDouble((Rates[bar].close - open)/100,2);
         data[shift + 3] = NormalizeDouble(RSI.GetData(MAIN_LINE, bar)/100,2);
         data[shift + 4] = NormalizeDouble(CCI.GetData(MAIN_LINE, bar)/100,2);
         data[shift + 5] = NormalizeDouble(ATR.GetData(MAIN_LINE, bar)/100,2);
         data[shift + 6] = NormalizeDouble(MACD.GetData(MAIN_LINE, bar)/100,2);
         data[shift + 7] = NormalizeDouble(MACD.GetData(SIGNAL_LINE, bar)/100,2);