スパース成分分析(SCA; Sparse component analysis)とは、主成分分析(PCA)の発展形で、高次元データにおいて少数の重要な変数に着目するものです。主成分分析では、すべての変数が主成分の計算に使われます。一方、スパース成分分析では、主成分への寄与が大きい変数だけを選び出すことで、解釈をより簡単なものにします。スパース成分分析は、ゲノミクス、プロテオミクス、金融など、データの変数が非常に多く、かつ、データ数が比較的少ないような分野において、とても有用です。重要な特徴量を特定し、余分な情報を減らして主要なパターンに着目することで、各主成分から明確な情報を得ることが可能となります。この合理的なアプローチによって、後続の分析が容易になるとともに計算量も減り、複雑なデータセットの扱いや解釈が簡単になります。
この例で使用するプロテオミクスのデータには、84人の前立腺ガン患者および81人のコントロール群、合わせて165人分の血清サンプルが含まれており、そして667種類のたんぱく質の発現レベルが記録されています。目標は、この2つの群において違いが顕著なたんぱく質を特定し、データの次元を減らすことです。成分に最も寄与するたんぱく質を見つけ出すことができ、また、データセットを単純化し、後に続く分類やクラスター分析に適した成分スコアも計算できます。
1. [ヘルプ]>[サンプルデータフォルダ]を選択し、「Prostate Cancer.jmp」を開きます。
2. [分析]>[多変量]>[主成分分析]を選択します。
3. 「列の選択」リストから「Proteins」列グループを選択して、[Y, 列]をクリックします。
4. 「計算方式」で[高度な方法]を選択します。
メモ: デフォルトで、成分の数は「10」に設定されます。この調査におけるデータの背景情報に基づき、「成分の数」のテキストボックスの値を変更できます。
メモ: [欠測値の補完]はデフォルトでオンになっており、反復計算の反復ごとに欠測値が補完されます。データに欠測値がない場合は、このオプションをオフにできます。
5. 「より詳細な方法」で、[スパース成分分析]を選択します。
6. [OK]をクリックします。
図4.12 「スパース成分分析」レポート
レポートには、固有値と、各主成分によって説明される変動の割合を示す棒グラフが表示されます。固有値が大きいほど、分散全体への寄与が大きいことを示しています。この例では、成分8の固有値が73.72と最も大きく、データの全変動に対する割合が最大となっています。成分8が、データ全体を最も説明する成分であることがわかります。成分1(55.46)、成分3(47.35)、成分9(37.20)、成分5(34.05)の固有値も比較的大きな値となっており、データにおける全変動に大きく寄与していることが示されています。これらの成分を合わせると、変動の大部分を説明できます。
成分4(31.31)と成分6(28.66)の固有値の大きさは中程度で、分散に寄与しているものの、主な成分ではないことが示されています。一方、成分2(16.34)、成分7(17.41)、成分10(20.43)の固有値は小さく、分散全体への寄与は小さいことが示されています。固有値が小さいこれらの成分は、データにおいて微小な、主要ではない変動を捉えている可能性があります。
成分8をはじめとするいくつかの成分の影響が大きいことから、このスパース成分分析が次元を減らしながら主なパターンを見つけるために有効な方法であることが示唆されています。スパース成分分析で希薄性を考慮することによって特定された成分は、重要な特徴量が絞り込まれたものとなっています。そのため、解釈がしやすく、後続の分析における計算量も減ります。固有値が大きな成分は、前立腺ガンの特徴に関係する主要な変動を包含しているため、この後の調査はこれらの成分に着目して進めましょう。
7. 「スパース成分分析」の赤い三角ボタンをクリックし、[負荷量行列]を選択します。
8. 「負荷量行列」の横にあるグレーの開閉アイコンをクリックします。
図4.13 スパース成分分析の負荷量行列(一部)
負荷量行列には、得られた主成分に対する元の変数の寄与が示されます。負荷量行列を見ることで、各次元における個々の変数の影響の大小を特定できます。たとえば、成分8では、変数mz4062_2282の負荷量が約1.05870で、他の変数の寄与よりはるかに高くなっています。つまり、mz4062_2282は成分8の変動を説明する主な変数であることを示しています。同様に、成分10では、変数mz2084_8335の負荷量が0.54957であり、この変数の影響が大きいことを示しています。
また、ある成分に対する負荷量が0に近い変数は、その成分の変動にほとんど寄与していないとみなせます。たとえば、変数mz2011_6397は、すべての成分において負荷量が0となっており、データ全体の変動にほとんど寄与していないことを示しています。こうした情報に基づき、ある変数が重要であるか、もしくは、余分なものであるかを判断できます。