外れ値(アウトライヤー)とは?定義とノイズとの違い、活用例をわかりやすく解説
外れ値(アウトライヤー/outlier)とは、他のデータオブジェクトから大きく乖離しており、あたかも別のメカニズムによって生成されたかのように見えるデータのことです。説明を簡潔にするため、外れ値ではないデータは「正常」あるいは「期待される」データとして定義され、外れ値は一般的に「異常」なデータとして扱われます。
外れ値の基本的な性質
外れ値は、与えられたクラスやクラスタにうまく分類できないデータ要素であり、他のデータオブジェクトの usual な振る舞いとは明らかに異なる挙動を示します。こうした異質なデータの分析は、隠れた知識を発見するデータマイニングにおいて重要な意味を持つことがあります。
外れ値とノイズの違い
外れ値はノイズ(ノイズデータ)とは区別されます。ノイズとは、測定対象の変数に含まれるランダムな誤差や変動のことであり、一般的に外れ値検出のようなデータ分析では関心の対象になりません。
クレジットカード不正利用検出の例
例えば、クレジットカードの不正利用検出では、ユーザーの購買行動は確率変数としてモデル化できます。ユーザーは「ノイズ取引」と呼べるような、一見ランダムな誤差や変動に見える決済を行うことがあります。たとえば、ある日だけ普段より少し高いランチを注文したり、コーヒーをいつもより1杯多く購入したりするケースです。
このような取引は外れ値とみなすべきではありません。もし外れ値として扱えば、カード会社は各取引の確認に多大なコストをかけたり、誤検知による警告でユーザーを煩わせ、結果として顧客を失ったりする恐れがあります。そのため、多くのデータ分析・データマイニングの業務と同様に、外れ値検出の前にはノイズを取り除いておく必要があります。
外れ値検出が重要とされる理由
現実世界のデータベースには、外れ値のほか、欠損値や匿名化されたデータ、誤ったデータが含まれていることが少なくありません。クラスタリングアルゴリズムの中にはこうしたデータに敏感なものがあり、品質の低いクラスタを生成してしまう場合があります。
外れ値が注目されるのは、残りのデータと同じ構造からは生成されていない疑いがあるためです。したがって外れ値検出では、検出された外れ値がなぜ異なるメカニズムによって生じたのかを説明することが不可欠です。
具体的には、正常なデータ群についてさまざまな仮定を立て、検出された外れ値がそれらの仮定に著しく反していることを示すことで正当化します。
代表的な外れ値の種類
外れ値は、その発生の仕方によっていくつかのタイプに分類できます。
- ポイント型外れ値(グローバル外れ値):データ全体の中で他の値から大きく離れた単一のデータポイント。
- 文脈型外れ値(条件付き外れ値):特定の条件下(季節、時間帯など)でのみ異常に見えるデータ。
- 集合型外れ値:個々のデータは正常だとしても、集まり全体として見ると異常なパターンを示すデータ群。
外れ値検出と新規性検出の関係
外れ値検出は、増加し続けるデータセットにおける新規性検出(ノベルティ検出)とも密接に関連しています。例えば、新しいコンテンツが次々と投稿されるソーシャルメディアサイトを観察する場合、新規性検出によって新しい話題やトレンドを適時に把握できます。
新しいトピックは、最初は外れ値として現れることがよくあります。外れ値検出と新規性検出は、モデリングや検出手法の面で多くの共通点を持っています。ただし、両者には重要な違いがあります。新規性検出では、新しいトピックが本物と確認されると、通常は標準的な振る舞いのモデルに組み込まれ、以降の類似データは外れ値とみなされなくなります。一方、外れ値検出では、既知の正常データから大きく外れたデータを継続的に異常として識別することが目的となります。
-
データ整合性の種類とは?5つのタイプをわかりやすく解説
データ整合性(データベース整合性)とはデータベースにおける整合性とは、保存された情報の有効性と一貫性を指します。整合性は一般に「制約」という形で定義され、制約とはデータベースが違反してはならない一貫性ルールのことです。制約は個々の属性(カラム)に対して適用されることもあれば、テーブル間のリレーションシップに対して適用されることもあります。整合性制約があることで、権限を持つユーザーがデータベースに対して行う変更(更新・削除・挿入)によっても、データの一貫性が失われることはありません。つまり、整合性制約はデータベースを偶発的な破損から守る重要な役割を果たしているのです。データ整合性の主な種類データ
-
C#のnull許容型(Nullable型)とは?使い方をサンプルコード付きで解説
C#のnull許容型(Nullable型)とはC#では「null許容型(Nullable型)」が提供されており、通常の値の範囲に加えてnullを代入することができます。例えば、Nullable<int>型の変数には、-2,147,483,648から2,147,483,647までの任意の整数値、またはnullを格納できます。同様に、Nullable<bool>型の変数には、true、false、またはnullを代入可能です。値型(intやdouble、boolなど)は本来nullを持てませんが、null許容型にすることで「値が存在しない」状態を表現できるようになり、データ