私は各レコードがという厳密に増加するの整数のさまざまな長さの配列であるデータレコードを持っています。ここではいくつかの例は以下のとおりです。配列の連続性を測定
record_1 : 1,2,3,4,5,6,8,9,10
record_2 : 5,30,31,32,33,34,35,36
record_3 : 10,11,12,19,20
が、私は、各アレイ上の連続性の測定(またはスコアを与える)したい、すなわち、どのように「近い」配列の各隣接する要素。現在、私は、各隣接する配列要素(擬似コード)の差の和を使用しています:
for i=2 to length(A) do
sum_diff += A[i] - A[i-1]
end
score = (length(A) - 1)/sum_diff
だから完全連続配列(例:1,2,3,4,5
)のスコアは、1(最高スコア)であろう。
しかし、問題は連続しているデータのために発生しますが、「ジャンプ」が含まれ、例えば、上記record_2
ため、30
から5
から「ジャンプ」があります。上記のデータ例えば
、私のアルゴリズムを使用して、スコアは以下のとおりです。
record_1 : 0.89
record_2 : 0.23
record_3 : 0.4
それはrecord_3
より低いrecord_2
に得点できますが、我々は直感的にがrecord_2
であるためrecord_2
がrecord_3
よりも高いスコアを持っている必要があることがわかりことができます5
から30
へのジャンプ以外は連続しています。
したがって、より正確な連続性測定を行うためにアルゴリズムを変更する方法はありますか?前にありがとう。
sum_diff + = A [i] - A [i-1] 'を意味し、単調性の保証が成り立つと仮定すると、与えられたアルゴリズムは' score =(length(A)-1)/ (A [長さ(A)-1] - A [0]) '、すなわち、シリーズの中間の値は全体のスコアと完全に無関係である。 – Weeble
私は直感的に* record_2 *が高いスコアを持つことは理解できません。 8でのシーケンスの1つのブレークは、5の1より良いサウンド。 –
@Weeble:間違って申し訳ありません、私の質問を編集、ありがとう。 –