参考文献: https://en.wikipedia.org/wiki/Grading_on_a_curve https://en.wikipedia.org/wiki/Percentile (参照:ガウス関数)を
私は私がしようとするだろうアプローチが平均値(平均値)と標準偏差(平均値からの平均距離)を計算することだと思います。次に、目標範囲に合わせてパラメータを選択します。具体的には、入力値の平均値を500に設定し、6標準偏差が目標範囲の99.7%を消費するように選択します。または、単一の標準偏差が目標範囲の約16.6%を占めることになります。
対象範囲は600(200〜800)なので、標準偏差は99.7単位になります。したがって、入力平均より1標準偏差の入力クレジットスコアを取得した人は、599.7の正規化されたクレジットスコアを取得します。だから今
:これは必ずしもこのアプローチは、あなたの入力は、多かれ少なかれ正規分布であると仮定し、単に500にご入力のスコアの中央値をマッピングしません
# mean and standard deviation of the input values has been computed.
for score in input_scores:
distance_from_mean = score - mean
distance_from_mean_in_standard_deviations = distance_from_mean/stddev
target = 500 + distance_from_mean_in_standard_deviations * 99.7
if target < 200:
target = 200
if target > 800:
target = 800
平均とストレッチを変換しますあなたの範囲にフィットする入力ベルカーブ。ベルカーブの形状ではない入力に対しては、入力カーブがひどく歪むことがあります。
for score in input_scores:
value = (score - 1.0)/(5000 - 1)
target = value * (800 - 200) + 200
これはあなたの入力の形状を保持しますが、あなたの新しい範囲内:
第2のアプローチは、単に私たちの出力範囲に、あなたの入力範囲をマップすることです。
第3のアプローチは、正規分布を表現するのではなく、目標範囲が百分位数を表すようにすることです。人々の1%が200と205の間でスコアをつけます。 1%は794と800の間のスコアになります。ここで入力スコアをランク付けし、そのランクを200 ... 600の範囲の値に変換します。これはあなたの目標範囲を十分に活用し、解釈を理解しやすくします。
「ベルカーブに基づいて」 - 入力データが{50人2000ポイント、50人4000ポイント}の場合はどうなりますか?あなたの正規化された得点はどのように見えるでしょうか?確かに「それはおそらくそうではありません」しかし、変換を実行するアルゴリズムを見つける前に、*すべての種類の入力データに何が起こるべきかを決める必要があります。入力データの正規性を仮定したい場合は、その平均と分散を見つけて、それをスケールしますが、あなたが望むものが得られないかもしれません... – AakashM
ポイントは時間とともに、何年にも亘って蓄積し続けます。しかし、私は報告された得点を常に200〜800のクレジットスコアのようにしたいと思っています。だから、基本的に1人の得点が上がると、彼は他の人に下降する可能性があります。 – NealWalters