「データサイエンス入門」シリーズの最終回です。第1回では確率の基本的な考え方を、第2回ではデータを「見る」ための可視化と仮説検定の入り口を紹介しました。最終回となる今回は、集めたデータから「法則」や「構造」を積極的に取り出していく3つの技術、回帰分析・主成分分析(PCA)・圧縮センシングを紹介します。
回帰分析とは ― データに一番フィットする直線を見つける
「回帰分析」とは、誤差を最小にするという意味で、もっとも観測データへの当てはまりの良いモデルを求めることです。これによって、複数の変数間の関係をとらえたり、未知のデータに対する予測を行ったりすることができます。
もっともシンプルな回帰(単回帰)は、1つの説明変数xから1つの目的変数yを予測するモデルで、直線の式 y = ax + b を使って表現します。
観測データ(xᵢ, yᵢ)の一つひとつについて、実際の観測値yᵢと、直線から求めた予測値(axᵢ + b)との差(誤差)を考え、この誤差を2乗して全部足し合わせたものを「誤差の二乗和」と呼びます。
Δ = Σᵢ₌₁ⁿ {yᵢ − (axᵢ + b)}²
回帰分析では、この誤差の二乗和Δが最小になるように、傾きaと切片bを決めます。これが「最小二乗法」と呼ばれる、回帰分析でもっとも基本的な考え方です。なぜわざわざ2乗するのかというと、単純に誤差(yᵢ − 予測値)を全部足し合わせると、プラスの誤差とマイナスの誤差が打ち消し合ってしまい、「実際にはどれくらいズレているか」を正しく評価できなくなってしまうからです。2乗することで、すべての誤差を正の値にそろえてから足し合わせる、というわけです。
実は、このΔを最小にするa, bは、数式を展開して整理すると、次のようなきれいな形で求まることが知られています(この式自体を暗記する必要はありません)。
a = Sxy / Sx² (xとyの共分散 ÷ xの分散)
b = ȳ − ax̄ (yの平均 − a × xの平均)
つまり、傾きaは「xとyがどれくらい一緒に変動するか(共分散)」を「xそのものの散らばり具合(分散)」で割ったものになる、というのが数式の意味するところです。
自動車の「車両重量」と「燃費」の関係を例に見てみると、重量が重いほど燃費(MPG)が悪くなる、という右下がりの関係が、この単回帰によってきれいな直線として表現できることがわかります。
重回帰分析 ― 説明変数が複数ある場合
説明変数(横軸x、さきほどの例でいうと車両重量)が1つではなく複数ある場合の回帰を「重回帰分析」と呼びます。たとえば、自動車の「車両重量」と「馬力」の2つから「燃費」を予測するモデルを考えると、直線ではなく平面(3次元空間の中の平面)でデータにフィットさせることになります。単回帰と同じように、この重回帰でも「多変数間の関係をとらえられる」「未知のデータに対する予測ができる」というメリットがあります。
重回帰の解は、行列を使って次のような形で表現されます。
y = β̂₀ + β̂₁x₁ + β̂₂x₂ + ... + β̂ₚxₚ
ここでpは説明変数の数を表します。実際にこの係数β̂を求める際には、観測データを行列Xとベクトルyの形に整理し、行列の演算(転置や逆行列)を使った「正規方程式」と呼ばれる式を解くことで求まります。この行列計算自体を暗記する必要はありませんが、「単回帰で説明変数が1つだったものが、重回帰では説明変数が複数になっても、同じ最小二乗法の考え方がそのまま行列の形で拡張できる」という点は、押さえておくと見通しが良くなるポイントです。
主成分分析(PCA)とは ― たくさんの変数を「要約」する
続いて紹介するのは「主成分分析(Principal Component Analysis, PCA)」です。PCAとは、互いに相関のある変数について観測された多変量データのもつ情報をできるだけ失うことなく、もとの変数の線形結合(定数を掛けて足し合わせたもの)で表される新たな変数へと要約するための手法です。
言い換えると、個体を特徴づける複数の変数を融合することで、新たな意味づけを持った変数を生み出し、データの中から「本質的な特徴」を取り出す手法だと言えます。また、高次元(変数の数が多い)データを1次元の直線、2次元の平面、3次元の空間などに射影することで、データ構造を直感的に把握するための手法として使われることもあります。
具体例で見てみましょう。自動車の「車両重量」「馬力」「燃費」という3つの変数でデータを3次元空間にプロットすると、データ全体がある方向に沿って細長く分布していることが見えてきます。この「データが最も広がっている方向」を新しい1本の軸として捉え直すことで、3つの変数を「車の効率・パワーの位置づけ」を表す1本の軸に要約できる、というのがPCAの考え方です。
同じように、学生の「出席率」「レポート」「試験」という3つの成績データも、多くの場合ある方向に沿って分布しており、この方向を1本の軸として捉えることで、「総合的な学業成績」を表す1つの指標に要約できます。証券会社の「株式」「公社債」「外国証券」といった複数の財務指標を、「健全性」を表す1本の軸に要約する、といった応用例も紹介されていました。
PCAのやり方(考え方だけ紹介)
PCAを実際にどう計算するかについても、考え方だけ簡単に紹介しておきます。
データの共分散行列(変数同士の分散・共分散をまとめた行列)をAとする(車両重量・馬力・燃費の例でいえば3行3列の行列になりますが、一般的にはもっと大きな行列になります)
Aの固有値・固有ベクトル(車両重量・馬力・燃費の例でいえば、通常は3個ずつある)を求める
固有値のうち、最大の固有値に対応する固有ベクトルが「第1主成分」、次に大きい固有値に対応する固有ベクトルが「第2主成分」、その次に大きい固有値に対応する固有ベクトルが「第3主成分」、というように、固有値の大きい順に主成分が決まっていく
「固有値・固有ベクトル」という線形代数の道具を使うと、データが最も広がっている方向(=情報量が最も大きい方向)を数学的に求めることができる、というのがPCAの背後にある仕組みです。固有値が大きい主成分ほど、元のデータの情報をより多く保持している、という関係になります。
圧縮センシングとは ― 「解けないはずの方程式」を解く技術
最後に紹介するのは、比較的新しい技術である「圧縮センシング(スパースモデリング)」です。少し毛色の違う話になりますが、連立方程式の考え方から出発して見ていきましょう。
まず、次のようなシンプルな連立方程式を考えます。
6 = 3x₁ + 2x₂
未知数(x₁, x₂)が2つあるのに、式が1つしかない場合、これは「不定」と呼ばれる状態になり、条件を満たすx₁, x₂の組み合わせは無数に存在します(グラフ上では、この式は1本の直線として表現され、直線上のどの点も解になりえます)。
6 = 3x₁ + 2x₂ −2 = 2x₁ − x₂
というように、未知数の数と同じ2本の式があれば、2本の直線の交点として、解がただ1つに定まります(可能な解)。
6 = 3x₁ + 2x₂ −2 = 2x₁ − x₂ 2 = −x₁ − 2x₂
未知数2つに対して式が3本(過剰決定)になると、今度は一般には3本の直線が1点で交わらなくなってしまい、すべての式を同時に満たす解が存在しない「不能」という状態になってしまいます。
この関係を行列の形に一般化すると、観測データyの数(方程式の数、M)と、求めたい未知数xの数(N)の大小関係によって、方程式が「不定(M<N)」「可能(M=N)」「不能(M>N、条件次第)」のいずれかになる、というのが線形代数の基本的な性質です。
圧縮センシングの問題設定
圧縮センシングが扱うのは、まさにこの「不定」の状況、つまり観測データy(M個、既知)と観測行列A(既知)から、それより数の多い未知の原信号x(N個、M<N)を求めたい、という一見無理そうな問題です。
y = Ax
普通に考えれば、未知数の数(N)より観測(方程式)の数(M)が少ないので、解は定まりません(不定)。
しかし、もし原信号xの「非ゼロの要素の位置」があらかじめわかっているなら、話は変わってきます。xの大部分の要素が実は0であることがわかっていれば、実質的に求めるべき未知数の数はぐっと減り、観測の数が未知数の数を上回る(=解ける)状況に持ち込める場合があるのです。ただし現実には、どの位置がゼロなのかは普通わかりません。この「位置がわからない」という制約のもとでも、xが「スパース(疎、つまりほとんどの要素が0)」であるという性質さえわかっていれば、うまく元の信号を復元できる場合がある、というのが圧縮センシングのアイデアです。
L0ノルムとL1ノルムによる最小化
xがスパースであることを数学的に利用するために、次のような最適化問題を考えます。
x̂ℓ₀ = argmin‖x‖₀ subject to Ax = y
ここで‖x‖₀は「xの非ゼロ要素の数」を表す指標で、「ベクトルxのℓ₀(エルゼロ)ノルム」と呼ばれます。つまりこの式は、「制約 Ax = y を満たすという条件のもとで、非ゼロ要素の数がもっとも少なくなるxを推定値とする」という意味です。直感的には理にかなったアプローチですが、実はこの最適化問題を厳密に解くには、情報論的な限界(理論上、非常に効率よく解ける保証がない)があり、解けないわけではないものの、現実的な計算時間で解く方法がない、という大きな壁があります。
そこで実用上使われるのが、代わりに次の最適化問題を解く方法です。
x̂ℓ₁ = argmin‖x‖₁ subject to Ax = y
ここで‖x‖₁ = |x₁| + |x₂| + ... + |xN| は「ベクトルxのℓ₁(エルワン)ノルム」と呼ばれる、各要素の絶対値の合計です。この形の最適化問題(ℓ₁ノルムの最小化)は、現実的な計算時間で解く方法が存在することが知られており、しかも一定の条件下では、ℓ₀ノルムを最小化した場合と同じ(あるいは非常に近い)結果が得られることが数学的に示されています。
このℓ₁最小化を使うと、原信号(未知変数)の数よりも少ない観測(センシング)の回数から、もとの原信号を再構成できてしまう場合がある、というのがこの技術の最大の特徴です。これが「圧縮センシング(compressed sensing)」と呼ばれる理由でもあります。MRI(磁気共鳴画像)の撮影時間短縮や、限られたセンサー数からの信号復元など、実世界のさまざまな場面で応用されている技術です。
まとめ:3回シリーズを振り返って
3回にわたって、確率の基本的な考え方から、データを見るための可視化・仮説検定、そしてデータから法則や構造を取り出す回帰分析・主成分分析・圧縮センシングまで、データサイエンスの土台となる考え方を一通り見てきました。
あらためて振り返ってみると、「確率」で学んだ考え方(平均・分散、ベイズの定理)が回帰分析やPCAの背後にも顔を出し、「可視化」で見た散布図の考え方がPCAの直感的なイメージ(データが最も広がっている方向を見つける)にそのままつながっている、というように、それぞれの回で学んだ内容が地続きになっていることに気づかされます。数式が多く登場する分野ではありますが、根っこにあるのは「手元にあるデータから、できるだけ無駄なく、正しい情報を引き出したい」といういたってシンプルな動機です。この記事が、データサイエンスという分野の全体像をつかむきっかけになれば嬉しいです。