間隔尺度変数とは?定義・標準化・距離尺度まで徹底解説
間隔尺度(インターバルスケール)変数とは、ほぼ線形なスケールを持つ連続型データのことです。具体例としては、体重や身長、緯度・経度の座標(住宅をクラスタリングする場合など)、気温などが挙げられます。
このようなデータを扱うクラスタリング分析では、使用する測定単位が結果に大きな影響を与える点に注意が必要です。本記事では、間隔尺度変数の基本概念から、標準化の手法、そして代表的な距離尺度までをわかりやすく解説します。
測定単位がクラスタリング分析に与える影響
例えば、身長の単位をメートルからインチへ、体重の単位をキログラムからポンドへ変更したとしましょう。同じデータでも単位が変わることで、得られるクラスタリング構造がまったく異なるものになり得ます。
一般に、より小さい単位で変数を定義すると、その変数の値域(レンジ)は広くなります。その結果、クラスタリング構造全体に対する当該変数の影響力も大きくなるのです。
データ標準化の必要性
こうした測定単位への依存を防ぐためには、データを標準化することが重要です。標準化とは、すべての変数に対して等しい重みを与える処理であり、データに関する事前知識がない場合に特に有効です。
一方で、アプリケーションによっては、ユーザーが意図的に特定の変数に大きな重みを与えたいケースもあります。例えば、バスケットボール選手の候補者をクラスタリングする場合、「身長」という変数に高い重みを設定する方が望ましいでしょう。このように、標準化を行うかどうか、またどのように行うかは、最終的にはユーザーの判断に委ねられます。
標準化の手順:平均絶対偏差とzスコア
データを標準化する一つの方法は、元のデータを無次元(単位なし)の変数へ変換することです。変数 f の n 個の測定値 x1f … xnf が与えられたとき、まず平均絶対偏差 sf を計算します。
$$\mathrm{s_{f}\:=\:\frac{1}{n}(|x_{1f}-m_{f}|+|x_{2f}-m_{f}|+\cdots+|x_{nf}-m_{f}|)}$$
ここで mf は変数 f の平均値です。続いて、標準化測定値(zスコア)を求めます。
$$\mathrm{z_{if}\:=\:\frac{x_{if}-m_{f}}{s_{f}}}$$
平均絶対偏差を使うメリット
平均絶対偏差 sf は、標準偏差 σf よりも外れ値に対して頑健です。平均絶対偏差を計算する際、平均からの偏差 |xif − mf| は二乗されないため、外れ値の影響が自然に抑えられます。
散布度の指標には、中央値絶対偏差(MAD)などさらに頑健なものもありますが、あえて平均絶対偏差を使う利点もあります。それは、外れ値のzスコアが極端に小さくなりすぎず、外れ値を検出可能な状態に保てる点です。
標準化を実施した後(あるいは特定のアプリケーションでは標準化を行わないまま)、間隔尺度変数によって定義されたオブジェクト間の非類似度(または類似度)は、一般的にオブジェクト間の距離に基づいて計算されます。
間隔尺度変数で使われる主な距離尺度
ユークリッド距離
最も有名な距離尺度がユークリッド距離です。i = (xi1, xi2, …, xin) と j = (xj1, xj2, …, xjn) を2つのn次元データオブジェクトとすると、次式で表されます。
$$\mathrm{d(i,\,j)=\sqrt{(X_{i1}-X_{j1})^2+(X_{i2}-X_{j2})^2+\cdots+(X_{in}-X_{jn})^2}}$$
マンハッタン距離
もう一つのよく知られた尺度がマンハッタン距離(市街地距離とも呼ばれます)です。各次元の差の絶対値を単純に合計します。
$$\mathrm{d(i,\,j)=|X_{i1}-X_{j1}|+|X_{i2}-X_{j2}|+\cdots+|X_{in}-X_{jn}|}$$
距離関数が満たすべき数理的条件
ユークリッド距離とマンハッタン距離は、いずれも距離関数として次の4つの性質を満たしています。
d(i, j) ≥ 0: 距離は負にならない数である。
d(i, i) = 0: オブジェクトとそれ自身との距離は 0 である。
d(i, j) = d(j, i): 距離は対称関数である。
d(i, j) ≤ d(i, h) + d(h, j): 空間上でオブジェクト i から j へ直接向かう距離は、任意の他のオブジェクト h を経由する回り道の距離を超えない(三角不等式)。
これらの性質を理解しておくことで、クラスタリング分析における類似度・非類似度の計算をより適切に設計できるようになります。
-
C#のクラスにおけるメンバー変数とは?意味と使い方を徹底解説
C#におけるクラスとメンバー変数の基本C#において、クラスはメンバー変数(フィールド)とメソッド(関数)を含む「設計図」であり、そこから生成されるオブジェクトの状態や振る舞いを定義するものです。まずはクラスの基本構文を確認し、メンバー変数がどのように宣言されるのかを見ていきましょう。クラスの基本構文<アクセス修飾子> class クラス名 { // メンバー変数 <アクセス修飾子> <データ型> 変数1; <アクセス
-
Bashの環境変数とは?基本の仕組みと設定方法をわかりやすく解説
コンピュータの世界で「変数」とは、変更されうる値の代わりとなる名前のことです。実は私たちは、日常会話の中でも意識せずに変数を使っています。たとえば「私の車」と言うとき、「私の車」はその時点で自分が所有している車を指す一種の変数のようなものです。古い車を新しい車に買い替えればメーカーやモデルは変わりますが、「私の車」という呼び方を決めておけば、車に言及するたびに現在の車種をいちいち説明する必要がなくなります。 コンピュータ上でも、変数は同じような目的で使われます。 たとえば、コンピュータにユーザーアカウントを持つ人には、個人データが保存されるホームディレクトリがあります。しかし、ホームディレクト