実践的なアドバイスをお願いします。 - ページ 5

 
Dmitry Fedoseev:
モッド1 モード2 モード3 モード4 モード5 (vi) モード6 (vi) モード7 (vi) モード8 (vi) モッドナイン (vi) モッド10 (vi) モッド11 (vi) モッド12 (八十三 (vi) 14 モード15 金額
4,431 17,091 15,822 2,531 0,631 17,721 28,481 5,702 13,293 5,702 8,232 6,332 0,63 1 3,163 6,963 23
5,062 17,722 12,661 3,802 0,631 19,622 29,112 4,43 1 9,492 5,061 6,331 6,332 1,902 1,902 6,332 26
4,431 20,253 16,463 4,433 0,631 17,721 29,75 3 6,333 5,061 8,233 10,13 3 5,061 0,631 1,27 1 4,431 29


一番低い和は23で、1行目を選ぶ。

ありがとうございます、私も気をつけます。

しかし、これは誤差の値であり、この方法でレーティングを推定することは信頼できるのでしょうか?
統計学では、主に誤差の推定に二乗和を用いるそうです。
また、二乗和とレーティングでは結果が異なるので、どの方法を信用すればいいのか?

;))

ランキング手法は、どのような数学的領域で使われているのでしょうか?
この素材を吸って、どこで使われているのかを理解すること。
 

使用する方法は、目の前の問題に対して満足のいく解決策を与えるものでなければなりません。どのような方法を適用する場合でも、自分が何をしているのか、何を得ているのかを理解する必要があります。

満足できる結果がどうあるべきかがわからなければ、どんな方法を使っても同じことです。

 
Dmitry Fedoseev:

使用する方法は、目の前の問題に対して満足のいく解決策を与えるものでなければなりません。どのような方法を適用する場合でも、自分が何をしているのか、何を得ているのかを理解する必要があります。

また、満足のいく結果がどうあるべきかがわからなければ、どんな方法を使っても変わりません。

一部同意しますが、この場合はエラーの値そのものを評価しているのであって、モジュール内での再発を評価しているわけではありません。
この方法は、繰り返し値を評価するのに適している。
誤差の値そのものを評価する方法としては正しくないと思います。

 
Roman:

私もそう思いますが、今回はモジュール内での再発ではなく、エラーそのものを評価しているのです。
この方法は、経常的な値を評価するのに適している。
誤差の値そのものを評価する方法としては正しくないと思います。

値が繰り返しであれば、1、2、3と入れ替えても全く同じ結果になる。

このスレッドの最初の投稿を読んでください、そこにスレッドの著者は彼の問題を定式化した - それを読んで、それを作るしないでください。

 
Dmitry Fedoseev:

値が繰り返しであれば、それ自体は1、2、3と入れ替えても全く同じ結果になる。

このスレッドの最初の投稿を読んでください、スレッドの著者は彼の問題を定式化した - それを読むだけで、それを作ることはありません。

だから、誰も作っていないわけではない。最初の投稿で理解したように、本来の課題は誤差最小化の推定でした。
そして、著者はその表で、すべての誤差の平均値まで導き出している。しかし、実用的で有益なものだとは思わなかったようです。
誤差を最小にする推定と、繰り返し値の推定は別の作業です。

 
Roman:

だから、誰も作っていない。最初の投稿で理解したように、本来の目的は推定誤差の最小化です。
しかも、トピックスターターは、その表の誤差をすべて平均化したものまで出している。しかし、彼はそれが実用的で有益なものだとは思っていなかった。
誤差の最小化を推定することと、再現性のある値を推定することは異なる作業である。

ただ平均値を使うだけでは不十分で、大きくオーバーシュートしないようにすることも必要です。

 
Dmitry Fedoseev:

アベレージだけではダメで、射出率の低さも必要です。

というように、製品

 
Dmitry Fedoseev:

平均値だけでは不十分で、大きな外れ値も避ける必要があります。


この例では、MathPow(arr[i] - (max-min)/* or avg*/, 2.0) でこれを考慮し、積は二乗関数で行っています。
つまり、積に相当する2乗を取るのである。

 

正規化・標準化ということで、比較する値を同じ尺度にする必要がある場合に適用されるのが、このアライメントです。
同じ尺度に正規化する」とはどういう意味ですか?
例えば、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はなぜ嫌いなのですか?なぜ、ループで書く必要があったのですか?
理由: