ウェブアプリ

ウェブサイトのパフォーマンスを測定するときに平均値ではなくパーセンタイル値を採用するべき理由


ウェブサイトやAPIの応答時間を短くすることはユーザー体験につながるだけでなく、Google検索で上位に表示されやすくなるなど多数のメリットをもたらします。そうした「速度」の改善活動を始める際に目標にすべき指標として、応答時間の平均値ではなくパーセンタイル値を採用するべき理由について時系列データベースの「TimescaleDB」の開発者であるデビット・コーンさんがブログにまとめています。

How percentile approximation works (and why it's more useful than averages)
https://blog.timescale.com/blog/how-percentile-approximation-works-and-why-its-more-useful-than-averages/


多数のデータを集めた時に、そのデータの特徴を表す値として「平均値(Average)」「中央値(Median)」「最頻値(Mode)」などの値が存在します。平均値はデータの合計を個数で割った値で、中央値はデータの個数を上下半分ずつに分ける点の値、最頻値は最も出現回数の多い値のことです。例えば下図のような正規分布の場合であれば、平均値、中央値、最頻値はすべて同じになり、中央の点線上に存在します。


パーセンタイルは、「データの何パーセントがその値を下回るか」で定義されます。例えばデータの個数を50%に分ける値のことを50パーセンタイルと呼び、中央値と同一の値になります。


他にも、「10パーセンタイル」であればデータ数の10%がその値よりも小さく、90%がその値以上になる点を意味しており……


「90パーセンタイル」であればデータ数の90%がその値よりも小さくなる点の値のことになります。


実際のAPIでは、ほとんどの場合は一定時間でレスポンスするものの、まれにレスポンスが非常に遅くなるという場合が多く、下図のようなグラフになっています。


こうしたグラフを尻尾に見立ててロングテール分布と言い、APIの応答時間のような場合には、平均値が少数の遅いレスポンスの影響を受けて中央値よりも大幅に大きくなるという特徴があります。


システムを変更して一部の応答に時間がかかるようになってしまった場合にはグラフが下図のように変化。中央値はあまり動いていないものの平均値は大きく影響を受けており、APIの応答時間の変化を追跡するには平均値が適していそうに見えます。


しかし、一部の人が「過去のデータをすべてダウンロード」のような非常に時間のかかるクエリを要求した場合、とてつもなく長時間のレスポンスタイムが記録されることになり、たった数個の巨大なデータが平均値を大きく動かしてしまうことも。


ユーザーの多くに影響を与える場合には深夜にエンジニアを叩き起こしてでも修正作業を行う必要がありますが、平均値では深刻なレスポンスタイムの遅延が起きているのか、ごく少数の重たいクエリが発行されただけなのかを区別することはできません。そこで登場するのがパーセンタイル値というわけ。例えば90パーセンタイル値を見ると、10%のレスポンスでその値以上の時間がかかったということが分かります。


90パーセンタイル値は平均値とは違い、少数の外れ値の影響をほとんど受けません。


一方で、APIのレスポンス全体の10%以上が遅延している場合には90パーセンタイルの値は大きく変化します。そのため、ユーザーの10%に影響が出ている場合などの深刻な場合のみを検出するのに適しているというわけです。

この記事のタイトルとURLをコピーする

・関連記事
ギネスビールの醸造所が統計学的手法の一つ「t検定」を生み出した - GIGAZINE

A/Bテストを無駄にしないために取り入れるべき統計学的な視点とは - GIGAZINE

8億円以上をカジノの「ルーレット」で荒稼ぎした学者が見つけた驚きの攻略法とは? - GIGAZINE

「人間が完全にランダムな選択を行うことは可能なのか?」をアンケート結果から徹底検証 - GIGAZINE

「カードを机の上でかき混ぜたら何秒で完璧に混ざるのか?」にガチンコで挑む数学者がいる - GIGAZINE

in メモ,   ネットサービス,   ウェブアプリ, Posted by log1d_ts

You can read the machine translated English article here.