Прошу практического совета.

 

Собственно вопрос: как правильно оценить результаты?

Ошибка каждого модуля приведена в процентах. 0% - идеальный результат. 

________________ ПАРАМЕТРЫ ________________ Мод 1 Мод 2 Мод 3 Мод 4 Мод 5 Мод 6 Мод 7 Мод 8 Мод 9 Мод 10 Мод 11 Мод 12 Мод 13 Мод 14 Мод 15 Средняя ошибка Из попыток
2_48_24_2160_12_VECTOR_UP_HIDDEN_LAYERS_HAND 4,43 17,09 15,82 2,53 0,63 17,72 28,48 5,70 13,29 5,70 8,23 6,33 0,63 3,16 6,96 9,11 158,00
2_48_24_2160_12_VECTOR_UP_HIDDEN_LAYERS_MT1 5,06 17,72 12,66 3,80 0,63 19,62 29,11 4,43 9,49 5,06 6,33 6,33 1,90 1,90 6,33 8,69 158,00
2_48_24_2160_12_VECTOR_UP_HIDDEN_LAYERS_MT2 4,43 20,25 16,46 4,43 0,63 17,72 29,75 6,33 5,06 8,23 10,13 5,06 0,63 1,27 4,43 8,99 158,00


Хочется чтобы была ошибка каждого модуля минимальна, но и разброс чтобы был минимален.

 
Сергей Таболин:

Собственно вопрос: как правильно оценить результаты?

Ошибка каждого модуля приведена в процентах. 0% - идеальный результат. 

________________ ПАРАМЕТРЫ ________________ Мод 1 Мод 2 Мод 3 Мод 4 Мод 5 Мод 6 Мод 7 Мод 8 Мод 9 Мод 10 Мод 11 Мод 12 Мод 13 Мод 14 Мод 15 Средняя ошибка Из попыток
2_48_24_2160_12_VECTOR_UP_HIDDEN_LAYERS_HAND 4,43 17,09 15,82 2,53 0,63 17,72 28,48 5,70 13,29 5,70 8,23 6,33 0,63 3,16 6,96 9,11 158,00
2_48_24_2160_12_VECTOR_UP_HIDDEN_LAYERS_MT1 5,06 17,72 12,66 3,80 0,63 19,62 29,11 4,43 9,49 5,06 6,33 6,33 1,90 1,90 6,33 8,69 158,00
2_48_24_2160_12_VECTOR_UP_HIDDEN_LAYERS_MT2 4,43 20,25 16,46 4,43 0,63 17,72 29,75 6,33 5,06 8,23 10,13 5,06 0,63 1,27 4,43 8,99 158,00


Хочется чтобы была ошибка каждого модуля минимальна, но и разброс чтобы был минимален.

произведение логарифмов

ЗЫ: не очень понял что именно требуется, но логарифм позволит относиться к ошибкам прогрессивно, это даст более высокие результаты в единичных случаях (отдельных модулей). А перемножение - попытка уменьшить разброс
 
Alexandr Andreev:

произведение логарифмов

ЗЫ: не очень понял что именно требуется, но логарифм позволит относиться к ошибкам прогрессивно, это даст более высокие результаты в единичных случаях (отдельных модулей). А перемножение - попытка уменьшить разброс

Спасибо. А практически это как?

 
Сергей Таболин:

Спасибо. А практически это как?

Возможно пойдет просто произведение

Вриант1 ) Стоит перевести в стиль (1-x%) каждый модуль и их перемножить..... полученный ответ также вычесть из еденицы.

тут x% это значение ячейки

Вриант2

Ну а с логарифмами просто берем значение ячейки и считаем логарифм от него))) чем значение будет ближе к нулю тем выше прогресивность оценки т.е. при определенной настройки основания 0.1 будет лучше 0.01 так же как и 0.1 лучше 1. Будет только параметр основания логарифма с чем и стоит поиграться. 

 
Alexandr Andreev:

Возможно пойдет просто произведение

Вриант1 ) Стоит перевести в стиль (1-x%) каждый модуль и их перемножить..... полученный ответ также вычесть из еденицы.

тут x% это значение ячейки

Вриант2

Ну а с логарифмами просто берем значение ячейки и считаем логарифм от него))) чем значение будет ближе к нулю тем выше прогресивность оценки т.е. при определенной настройки основания 0.1 будет лучше 0.01 так же как и 0.1 лучше 1. Будет только параметр основания логарифма с чем и стоит поиграться. 

Вариант 1

-3,43 -16,09 -14,82 -1,53 0,37 -16,72 -27,48 -4,70 -12,29 -4,70 -7,23 -5,33 0,37 -2,16 -5,96 10601305851,38
-4,06 -16,72 -11,66 -2,80 0,37 -18,62 -28,11 -3,43 -8,49 -4,06 -5,33 -5,33 -0,90 -0,90 -5,33 -6223799946,09
-3,43 -19,25 -15,46 -3,43 0,37 -16,72 -28,75 -5,33 -4,06 -7,23 -9,13 -4,06 0,37 -0,27 -3,43 1237520122,21


О чём это мне говорит?


Вариант 2

-0,64640373 -1,23274206 -1,19920648 -0,40312052 0,200659451 -1,24846372 -1,45453998 -0,75587486 -1,12352498 -0,75587486 -0,91539984 -0,80140371 0,200659451 -0,49968708 -0,84260924
-0,70415052 -1,24846372 -1,10243371 -0,5797836 0,200659451 -1,292699 -1,46404221 -0,64640373 -0,97726621 -0,70415052 -0,80140371 -0,80140371 -0,2787536 -0,2787536 -0,80140371
-0,64640373 -1,30642503 -1,21642983 -0,64640373 0,200659451 -1,24846372 -1,47348697 -0,80140371 -0,70415052 -0,91539984 -1,00560945 -0,70415052 0,200659451 -0,10380372 -0,64640373


Это логарифм с основанием 0.1

Что с этим делать?


Я попробовал други функции. Только вот тоже как их понимать? ....

СТАНДОТКЛОН 7,8208
7,9133
8,4150
ДИСП.В 61,1650
62,6198
70,8128
КВАДРОТКЛ 856,3093
876,6772
991,3799
МЕДИАНА 6,3300
6,3300
5,0600
СКОС 1,1805
1,5197
1,3018
ЭКСЦЕСС 1,1322
1,9702
1,1832
 
В каждой строке найти максимум, потом выбрать строку с минимальным максимумом. Простите за каламбурчик))
 
Dmitry Fedoseev:
В каждой строке найти максимум, потом выбрать строку с минимальным максимумом. Простите за каламбурчик))

Максимальный максимум в 3 строке, минимальный максимум в первой. И? )))

 
Сергей Таболин:

Максимальный максимум в 3 строке, минимальный максимум в первой. И? )))

Выбирать первую строку.

 
Сергей Таболин:

Вариант 1

-3,43 -16,09 -14,82 -1,53 0,37 -16,72 -27,48 -4,70 -12,29 -4,70 -7,23 -5,33 0,37 -2,16 -5,96 10601305851,38
-4,06 -16,72 -11,66 -2,80 0,37 -18,62 -28,11 -3,43 -8,49 -4,06 -5,33 -5,33 -0,90 -0,90 -5,33 -6223799946,09
-3,43 -19,25 -15,46 -3,43 0,37 -16,72 -28,75 -5,33 -4,06 -7,23 -9,13 -4,06 0,37 -0,27 -3,43 1237520122,21


О чём это мне говорит?


Вариант 2

-0,64640373 -1,23274206 -1,19920648 -0,40312052 0,200659451 -1,24846372 -1,45453998 -0,75587486 -1,12352498 -0,75587486 -0,91539984 -0,80140371 0,200659451 -0,49968708 -0,84260924
-0,70415052 -1,24846372 -1,10243371 -0,5797836 0,200659451 -1,292699 -1,46404221 -0,64640373 -0,97726621 -0,70415052 -0,80140371 -0,80140371 -0,2787536 -0,2787536 -0,80140371
-0,64640373 -1,30642503 -1,21642983 -0,64640373 0,200659451 -1,24846372 -1,47348697 -0,80140371 -0,70415052 -0,91539984 -1,00560945 -0,70415052 0,200659451 -0,10380372 -0,64640373


Это логарифм с основанием 0.1

Что с этим делать?


Я попробовал други функции. Только вот тоже как их понимать? 

Этожж жжесть." Ошибка каждого модуля приведена в процентах. 0% - идеальный результат."  цифра 1 имелось ввиду 100% - х% либо 1-Х*0.01

 
@Сергей Таболин @Сергей Таболин
ИТОГ
0,9557 0,8291 0,8418 0,9747 0,9937 0,8228 0,7152 0,943 0,8671 0,943 0,9177 0,9367 0,9937 0,9684 0,9304 0,77439
0,9494 0,8228 0,8734 0,962 0,9937 0,8038 0,7089 0,9557 0,9051 0,9494 0,9367 0,9367 0,981 0,981 0,9367 0,758606
0,9557 0,7975 0,8354 0,9557 0,9937 0,8228 0,7025 0,9367 0,9494 0,9177 0,8987 0,9494 0,9937 0,9873 0,9557 0,771806

исходя из этого лучшая вторая строка, а первая с третей очень схожи

итог вычел из еденицы т.е. чем ближе к 0 итог тем лучше результаты..... другими словами пока что результаты не особо т.к. 0.75 это ваши 75, хотя смотря с чем сравнивать..... максимально плохая оценка будет 1 (100%) максимально хорошая 0

Надо понимать что оценка 90 в десять разу лучше чем оценка 99.... при это оценка 99 в десять разу лучше чем оценка 99.9... число 100 по факту возможно только  когда у всех модулей будет оценка ошибки 100 ... тоже спроведливо и с другой стороны. т.е. оценка 0.1 в десять разу хуже чем оценка 0.01. При этом оценка 10 в десять раз хуже чем оценка 1.



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


Способ квадратичноего отклонения точно не в тему. Как и всех других которые считают отклонения. Т.к. в идеале для того чтобы понять разницу разброса надо использоваться квадратичное отклонения от линейной регрессии. Но тогда получим оценку этих отклонения без какого либо среднего показателя самих чисел..... 

 
Сергей Таболин:

Собственно вопрос: как правильно оценить результаты?

Ошибка каждого модуля приведена в процентах. 0% - идеальный результат. 

________________ ПАРАМЕТРЫ ________________ Мод 1 Мод 2 Мод 3 Мод 4 Мод 5 Мод 6 Мод 7 Мод 8 Мод 9 Мод 10 Мод 11 Мод 12 Мод 13 Мод 14 Мод 15 Средняя ошибка Из попыток
2_48_24_2160_12_VECTOR_UP_HIDDEN_LAYERS_HAND 4,43 17,09 15,82 2,53 0,63 17,72 28,48 5,70 13,29 5,70 8,23 6,33 0,63 3,16 6,96 9,11 158,00
2_48_24_2160_12_VECTOR_UP_HIDDEN_LAYERS_MT1 5,06 17,72 12,66 3,80 0,63 19,62 29,11 4,43 9,49 5,06 6,33 6,33 1,90 1,90 6,33 8,69 158,00
2_48_24_2160_12_VECTOR_UP_HIDDEN_LAYERS_MT2 4,43 20,25 16,46 4,43 0,63 17,72 29,75 6,33 5,06 8,23 10,13 5,06 0,63 1,27 4,43 8,99 158,00


Хочется чтобы была ошибка каждого модуля минимальна, но и разброс чтобы был минимален.

Наверно лучше получить сумму квадратов для ошибок модуля, и извлечь корень.
Тем самым получаем общую оценку ошибок модуля.
Чем ближе к нулю получается значение, тем лучше.
Как то так.

//+------------------------------------------------------------------+
//|                                                EstimateError.mq5 |
//|                        Copyright 2020, MetaQuotes Software Corp. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2020, MetaQuotes Software Corp."
#property link      "https://www.mql5.com"
#property version   "1.00"


double ModN[15][3] = {{4.43, 5.06, 4.43},
                      {17.09, 17.72, 20.25},
                      {15.82, 12.66, 16.46},
                      {2.53, 3.80, 4.43},
                      {0.63, 0.63, 0.63},
                      {17.72, 19.62, 17.72},
                      {28.48, 29.11, 29.75},
                      {5.70, 4.43, 6.33},
                      {13.29, 9.49, 5.06},
                      {5.70, 5.06, 8.23},
                      {8.23, 6.33, 10.13},
                      {6.33, 6.33, 5.06},
                      {0.63, 6.33, 0.63},
                      {3.16, 1.90, 1.27},
                      {6.96, 6.33, 4.43}};

//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
{
   double ModX[];
   ArrayResize(ModX, 3);
   ZeroMemory(ModX);   
   
   int    num = 1;
   double est = 0.0;
   
   for(int i=0; i<15; i++)
   {
      for(int j=0; j<3; j++)
      {
         ModX[j] = ModN[i][j];         
      }
         
      est = EstimateError(ModX);  
      
      PrintFormat("Mod"+(string)num+" EstimateError: %.3f", est); 
      num++;
   }         
}// End OnStart

//+------------------------------------------------------------------+
double EstimateError(double & arr[])
{
   int size = ArraySize(arr);
   if(size == 0 || size < 3) 
      return(0.0);
   
   //double avg       = ArrayMean(arr); 
   double max       = ArrayMax(arr);   
   double min       = ArrayMin(arr); 
   double sum_sqr_e = 0.0;
   double est_e     = 0.0;      
   
   
   for(int i=0; i<size; i++)   
      sum_sqr_e += MathPow(arr[i] - (max-min)/* или avg*/, 2.0) / (size - 2.0);
      
   est_e = MathSqrt(sum_sqr_e);   

   return(est_e);
}

//+-------------------------------------------------------------------
//Возвращает максимальное значение элементов массива
double ArrayMax(double & arrIn[])
{
   uint size = ArraySize(arrIn);
   if(size == 0) 
      return(0.0);          
   
   double max = arrIn[0];
   for(uint i=1; i<size; i++)
      if(arrIn[i] > max) 
         max = arrIn[i];

   return(max);
}

//--------------------------------------------------------------------
//Возвращает минимальное значение элементов массива
double ArrayMin(double & arrIn[])
{
   uint size = ArraySize(arrIn);
   if(size == 0) 
      return(0.0);   
   
   double min = arrIn[0];  
   for(uint i=1; i<size; i++)
      if(arrIn[i] < min) 
         min = arrIn[i];

   return(min);
}

//--------------------------------------------------------------------
//Возвращает средне арефметическое значение элементов массива
double ArrayMean(double & arrIn[])
{
   uint size = ArraySize(arrIn);
   if(size == 0) 
      return(0.0);         

   double sum = 0.0;       
   for(uint i=0; i<size; i++) 
      sum += arrIn[i];     
   
   return(sum/size);
}

//--------------------------------------------------------------------
2020.06.07 04:59:23.227 EstimateError (AUDUSD,M5)       Mod1 EstimateError: 6.965
2020.06.07 04:59:23.227 EstimateError (AUDUSD,M5)       Mod2 EstimateError: 26.422
2020.06.07 04:59:23.227 EstimateError (AUDUSD,M5)       Mod3 EstimateError: 19.577
2020.06.07 04:59:23.227 EstimateError (AUDUSD,M5)       Mod4 EstimateError: 3.226
2020.06.07 04:59:23.227 EstimateError (AUDUSD,M5)       Mod5 EstimateError: 1.091
2020.06.07 04:59:23.227 EstimateError (AUDUSD,M5)       Mod6 EstimateError: 28.540
2020.06.07 04:59:23.227 EstimateError (AUDUSD,M5)       Mod7 EstimateError: 48.234
2020.06.07 04:59:23.227 EstimateError (AUDUSD,M5)       Mod8 EstimateError: 6.361
2020.06.07 04:59:23.227 EstimateError (AUDUSD,M5)       Mod9 EstimateError: 6.102
2020.06.07 04:59:23.227 EstimateError (AUDUSD,M5)       Mod10 EstimateError: 5.965
2020.06.07 04:59:23.227 EstimateError (AUDUSD,M5)       Mod11 EstimateError: 8.130
2020.06.07 04:59:23.227 EstimateError (AUDUSD,M5)       Mod12 EstimateError: 8.098
2020.06.07 04:59:23.227 EstimateError (AUDUSD,M5)       Mod13 EstimateError: 7.198
2020.06.07 04:59:23.227 EstimateError (AUDUSD,M5)       Mod14 EstimateError: 1.413
2020.06.07 04:59:23.227 EstimateError (AUDUSD,M5)       Mod15 EstimateError: 6.138

Оценка показывает, что Mod5 имеет наименьшую ошибку. 

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