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

 
Dmitry Fedoseev:
Мод 1 Мод 2 Мод 3 Мод 4 Мод 5 Мод 6 Мод 7 Мод 8 Мод 9 Мод 10 Мод 11 Мод 12 Мод 13 Мод 14 Мод 15 Сумма
4,43 1 17,09 1 15,82 2 2,53 1 0,63 1 17,72 1 28,48 1 5,70 2 13,29 3 5,70 2 8,23 2 6,33 2 0,63 1 3,16 3 6,96 3 23
5,06 2 17,72 2 12,66 1 3,80 2 0,63 1 19,62 2 29,11 2 4,43 1 9,49 2 5,06 1 6,33 1 6,33 2 1,90 2 1,90 2 6,33 2 26
4,43 1 20,25 3 16,46 3 4,43 3 0,63 1 17,72 1 29,75 3 6,33 3 5,06 1 8,23 3 10,13 3 5,06 1 0,63 1 1,27 1 4,43 1  29


Наименьшая сумма - 23, выбираем первую строку.

Спасибо, тоже возьму на заметку.

Но это же значения ошибок, достоверно ли использовать такой метод оценки по рейтингу?
В статистике для оценки ошибок в основном применяют сумму квадратов.
А у суммы квадратов и рейтинга получаются разные результаты, вот и какому методу доверять? 

;))

В какой математической области применяют метод рейтинга?
Чтоб покурить этот материал, и понимать в каких случаях он используется.
 

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

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

 
Dmitry Fedoseev:

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

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

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

 
Roman:

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

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

Прочитайте первый пост этой тему, там автор темы сформулировал свою задачу - достаточно прочитать, а не выдумывать.

 
Dmitry Fedoseev:

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

Прочитайте первый пост этой тему, там автор темы сформулировал свою задачу - достаточно прочитать, а не выдумывать.

Так не кто и не выдумывает. Как я понял из первого поста, изначально стояла задача оценить минимизацию ошибки.
И топикстартер в своей таблице даже вывел среднее значение всех ошибок. Но ему показалось это не практично, или не информативно.
Оценка минимизации ошибки и оценка повторяющихся значений, это разные задачи.

 
Roman:

Так не кто и не выдумывает. Как я понял из первого поста, изначально стояла задача оценить минимизацию ошибки.
И топикстартер в своей таблице даже вывел среднее значение всех ошибок. Но ему показалось это не практично, или не информативно.
Оценка минимизации ошибки и оценка повторяющихся значений, это разные задачи.

Просто по среднему недостаточно, еще надо, что бы выброса большого не было. 

 
Dmitry Fedoseev:

Просто по среднему недостаточно, еще надо, что бы выброса большого не было. 

и поэтому произведение

 
Dmitry Fedoseev:

Просто по среднему недостаточно, еще надо, что бы выброса большого не было. 

Тогда надо дополнительно подготавливать исходные данные, приводить их к нормализованному виду, или стандартизировать. 
В моём примере это как раз учитывается выражением MathPow(arr[i] - (max-min)/* или avg*/, 2.0), а произведение выполняет функция квадрата.
То есть возводит во вторую степень, что соответствует произведению.

 

Раз зашёл разговор за нормализацию и стандартизацию, то это выравнивание применяется когда нужно сравниваемые значения привести к одному масштабу.
Что подразумевается под приведением к одному масштабу?
Это когда нужно сравнить к примеру числа вида 81.500 и 1.13453 или 5200.1 или 27340 и т.д.
То есть значения имеют разное количество знаков после целого числа.
Для сравнения таких данных или передачи их в модель, если модель кушает несколько признаков, применяют нормализацию или  стандартизацию,
чтобы модель корректно рассчитывалась, и выдавала правильный расчёт.
Написал такие функции, если кому то понадобится, пользуйтесь.

//--------------------------------------------------------------------
//Возвращает максимальное значение элементов массива
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);
}

//--------------------------------------------------------------------
//Возвращает среднеквадратичное (стандартное) отклонение значений элементов массива
double ArrayStd(double & arrIn[])
{
   uint size = ArraySize(arrIn);
   if(size == 0) 
      return(0.0);   
   
   double sum  = 0.0; 
   double mean = ArrayMean(arrIn); 
          
   for(uint i=0; i<size; i++)
      sum += MathPow(MathAbs(arrIn[i]-mean), 2.0);
      
   return(MathSqrt(sum/size));
}

//--------------------------------------------------------------------
//Возвращает нормализованные значения элементов масcива
void ArrayNormalized(double & arrIn[], double & arrOut[])
{
   uint size = ArraySize(arrIn);
   if(size == 0) 
      return; 
      
   double min = ArrayMin(arrIn);   
   double max = ArrayMax(arrIn);
   
   for(uint i=0; i<size; i++)
      arrOut[i] = (arrIn[i]-min) / (max-min);   
}

//--------------------------------------------------------------------
//Возвращает стандвртизированые значения элементов масcива
void ArrayStandardized(double & arrIn[], double & arrOut[])
{
   uint size = ArraySize(arrIn);
   if(size == 0) 
      return; 
      
   double mean = ArrayMean(arrIn);
   double std  = ArrayStd(arrIn);
   
   for(uint i=0; i<size; i++)
      arrOut[i] = (arrIn[i]-mean) / std;   
}
 
Roman:

Раз зашёл разговор за нормализацию и стандартизацию, то это выравнивание применяется когда нужно сравниваемые значения привести к одному масштабу.
Что подразумевается под приведением к одному масштабу?
Это когда нужно сравнить к примеру числа вида 81.500 и 1.13453 или 5200.1 или 27340 и т.д.
То есть значения имеют разное количество знаков после целого числа.
Для сравнения таких данных или передачи их в модель, если модель кушает несколько признаков, применяют нормализацию или  стандартизацию,
чтобы модель корректно рассчитывалась, и выдавала правильный расчёт.
Написал такие функции, если кому то понадобится, пользуйтесь.

А чем не нравится ArrayMaximum и ArrayMinimum? Зачем было писать через цикл?