音楽のアナリティクスで見る組成データの分析手法

机の上でノートに数式を書いている手元の様子

序論

音楽業界のデータ分析においては、以下のような"比率"で表されるデータを扱うことがままあります。

  • 楽曲再生数の性別・年代ごとシェア
  • 市場全体に占める各レコード会社の売上シェア
  • あるアーティストの再生数構成比の楽曲ごとシェア

こうしたデータは一般に「組成データ(compositional data)」と呼ばれ、各サンプルの成分合計値が 1(100%)になるという制約条件を持ちます。

数学的に、組成データは「単体(simplex)」と呼ばれる空間上の点として定義されます。たとえば  D 次元の単体は

 \displaystyle S^D=\left\lbrace \mathbf{x}=(x_1,\ldots,x_D)\ \mid\ x_i \gt 0,\ \sum_{i=1}^{D}x_i=1 \right\rbrace

です。

組成データでは、成分間の相関係数を取ったり、サンプル同士の近さを通常のデータと同じように考えると、制約条件から生じるさまざまな問題点に直面します。これらの問題を解決するために、組成データにおいては、数字の近さを"差"ではなく"比率"で考えるという立場を取ります。

以下では、どのような不都合があるか見ていきながら、その解決方針の一端を紹介します。


疑似相関の発生

組成データにおいては、全体の和が 1 であるという制約から、各成分が独立ではなく、1つの成分が変動すると他の成分が(データの構造上)押し下げられる/押し上げられるという問題が発生します。

その結果、成分間に本来は関連性がない状況であっても、標準的な相関係数を計算すると、負方向の相関が生じやすくなります。

数学的な裏付け

 \displaystyle \mathbf{x}=(x_1,\ldots,x_D),\quad \sum_{j=1}^{D}x_j=1

のもとで、任意の成分  x_i と、全体の和(定数 1)との共分散を考えると

 \displaystyle \mathrm{cov}\left(x_i,\sum_{j=1}^{D}x_j\right)=\mathrm{cov}(x_i,1)=0

です。左辺を展開することで以下を得ます。

 \displaystyle \sum_{j\neq i}\mathrm{cov}(x_i,x_j)=-\mathrm{var}(x_i) \lt 0

すなわち、任意の  i に対して「他成分との共分散の総和」は必ず負となり、少なくとも1つ以上の  j\neq i について  \mathrm{cov}(x_i,x_j) \lt 0(負の共分散・相関)が成り立ちます。

これは組成データの制約条件に由来する構造的な歪みであり、観測された負相関がそのまま「成分同士の直接的な関係」を意味するとは限らないことを示唆しています。

例:月次シェアの推移

例として、以下のようなレコード会社の月次シェアの推移を考えます。この場合、 D = 4 です。

A社 B社 C社 D社 合計
1月 0.050 0.062 0.188 0.700 1.000
2月 0.030 0.084 0.336 0.550 1.000
3月 0.050 0.100 0.350 0.500 1.000

データを一見して分かる通り、C社のシェアは拡大を続ける一方で、D社のシェアは減少を続けています。相関係数を計算すると、非常に強い負の相関を示します:

 \displaystyle \mathrm{Corr}(C,D)\approx -0.99

しかし、これは疑似相関(が疑われる)の典型例です。

組成データにおいては、規模の大きい成分が変動すると、他成分のシェアがそれに巻き込まれる形で変動し、相関が歪むことがあります。したがって、ここから「C社とD社が直接的に競合し、片方が伸びるともう片方が必ず落ちる」といった因果や構造を短絡的に結論づけるのは危険です。

※因果推論の観点では、そもそも相関関係だけで判断するのは危険という見方もありますが、ここではその議論に踏み込まず、組成データにおける相関係数の計算の妥当性についてのみ議論します。


部分組成への不変性

前節では、組成データの制約条件が相関に負方向の歪みを生み得ることが分かりました。さらに厄介なのは、同じデータでも、どの成分を含めるか(部分組成)によって相関の符号や強さが大きく変わり得る点です。

少し視点を変えて、B社とC社の関係性を観察してみましょう。単純に相関係数を計算すると、この2社のシェアは非常に高い相関を示します。

 \displaystyle \mathrm{Corr}(B,C)\approx 0.94

この結果をもって「なるほど、B社とC社の成長性は連動しているようだ。2社の共通点を洗い出そう」と考えるのは妥当でしょうか。組成データにおいては、相関係数にもとづきこのような判断を下すのは危険です。

現在のサンプルを、D社をデータから除外した組成データ(部分組成)に変換してみましょう。

※元の表から D の成分を削除し、あらためて合計が 1.0 になるよう標準化します。

A社 B社 C社 合計
1月 0.167 0.207 0.627 1.000
2月 0.067 0.187 0.747 1.000
3月 0.100 0.200 0.700 1.000

この状態であらためて相関係数をとってみましょう。

 \displaystyle \mathrm{Corr}(B,C)\approx -0.95

なんと、強い負の相関になってしまいました。先ほどまでと全く逆の結果です。これは、D社というシェアの大きな成分を除外し、再標準化したことで、B社・C社のシェアの変動が強く歪められたことに由来します。

組成データの分析においては、分析対象外の成分を削除しても結果が大きく変わらない、という一貫性が期待されます。ところが、相関係数は「部分組成への整合性(subcompositional coherence)」を持たず、結論が不安定となります。


比率への着目:変動行列

B社・C社の関係性を測るにあたり、相関係数は部分組成への整合性を持たず、組成データにおける疑似相関の影響を免れませんでした。

両社の関係性を測る方法として、比率を追跡することが考えられます。B社のシェアとC社のシェアの比を計算してみると、

 \displaystyle \frac{x_{t,C}}{x_{t,B}}=\left(\frac{0.188}{0.062},\ \frac{0.336}{0.084},\ \frac{0.350}{0.100}\right)\approx(3.03,\ 4.00,\ 3.50)

のように、月によって変動していることが分かります。

この「比率の変動の大きさ」を成分ペアごとに定量化するために導入されるのが、以下を要素に持つ 変動行列(variation matrix) です:

 \displaystyle \tau_{i,j}=\mathrm{Var}\left\lbrack\ln\left(\frac{x_j}{x_i}\right)\right\rbrack

 \tau_{i,j} は常に非負で、成分間の比率  {x_j}/{x_i} が一定に近いほど 0 に近づきます。また

 \displaystyle \ln\left(\frac{x_j}{x_i}\right)=-\ln\left(\frac{x_i}{x_j}\right)

より分散が一致するため、 \tau_{i,j}=\tau_{j,i} が成り立ち、変動行列は対称行列になります(対角は  \tau_{i,i}=0)。

実際に今回のケースで計算してみましょう:

A社 B社 C社 D社
A社 0.000 0.112 0.200 0.061
B社 0.112 0.000 0.013 0.115
C社 0.200 0.013 0.000 0.179
D社 0.061 0.115 0.179 0.000

B社・C社の組み合わせにおいて、 \tau_{B,C} が他の成分対比で非常に小さな値になっていることが分かります。これは、B社とC社の比率が他のペア対比でほぼ一定に保たれていることを意味します。

そして重要なポイントとして、この値は D社を成分から排除して再標準化しても変わりません。先ほど、相関係数は D社を除くと B社・C社の関係性が逆転してしまいましたが、 \tau_{i,j} は部分組成への整合性を持ち、組成データの指標として一貫して活用できるのです。


さらなる統計学的手法の適用への準備

さて、組成データにおいては比率(とくに対数比)を重視することで、成分間の関係性を検証できることが見えてきました。

しかし、普段のデータ分析現場においては、主成分分析(PCA)など統計学的手法を適用したい場面も多いです。こうした手法は組成データにそのまま適用できるのでしょうか。ご想像の通り(?)、答えはNOです。

組成データにおいては、(i) 単体の中で閉じており、(ii) 比率(スケールの倍率)を自然に扱える、という性質を満たす演算・距離が必要となるのです。

組成データは単体  S^D 上の点であり、通常のベクトル空間  \mathbb{R}^D で前提とされる“引き算”にもとづく演算(加法・スカラー倍)で閉じていません。そのため、ユークリッド距離や内積に基づく分散構造を計算するPCAは、そのままでは組成データと整合しないのです。

また、例えば、通常のユークリッド空間で  0.1 から、 10倍された値である  1.0、1/10倍された値である  0.01 への距離はそれぞれ  0.9, 0.09 で、前者の方が"遠い"です。 一方で、比率にもとづく見方では、「10倍」と「1/10倍」は増加方向・減少方向の違いはあっても、"倍率の大きさ"としては同程度の変化として扱いたくなります。 組成データでは比率を適切に扱えるような演算が要請されるのです。

この不整合を解消し、組成データに対してPCAなどの手法を意味のある形で適用するために、代表的には CLR(centered log-ratio)変換 を導入します。

 \displaystyle \mathrm{clr}(\mathbf{x}) = \left( \ln\frac{x_1}{g(\mathbf{x})},\ldots, \ln\frac{x_D}{g(\mathbf{x})} \right), \quad g(\mathbf{x})=\left(\prod_{k=1}^{D}x_k\right)^{1/D}

CLRは、単体上のサンプル点を

 \displaystyle \sum_{i=1}^{D} z_i = 0 \quad(\mathbf{z}=\mathrm{clr}(\mathbf{x}))

という制約条件を持つ(線形な)超平面へ移動させる変換です。定義から  \tau_{i,j}=z_j/z_i が成り立ち、変動行列が自然に導入されます。

この変換の重要なポイントは、変換後の超平面におけるユークリッド距離が、単体上で比率にもとづいて自然に定義される距離  d_A(Aitchison距離)と整合することです。すなわち

 \displaystyle d_A(\mathbf{x},\mathbf{y})=\left||\mathrm{clr}(\mathbf{x})-\mathrm{clr}(\mathbf{y})\right||

が成り立ち、超平面上では「引き算の距離」にもとづく統計手法を、組成データの幾何と整合する形で扱えるようになります。

ただし、CLR変換後のデータは  \sum_i z_i=0 の線形制約を持ち、共分散行列が特異になり得るため、分析の実装上は注意が必要です。特異性が生じないように変数の次元を落とす変換も存在しますが、煩雑になるため今回は説明を省略します。

終わりに

組成データの制約条件が引き起こすさまざまな課題点や、 それらを解決するための、比率に着目した変数変換について見てきました。

普段なにげなく扱っている組成データですが、思わぬ落とし穴が潜んでいるので、扱う際は注意したいものですね。