1. はじめに
第1回 講義資料
授業で使用したコードはこちらから参照できます。事例紹介用コード
1. 線形代数学とは
線形代数学は、ベクトル、行列、線形写像などの基本概念を用いて、データやシステムの構造を解析する数学の分野です。
- 基本概念:
- ベクトル: 大きさと方向を持つ量。
- 行列: 数値や関数を格子状に並べたもので、複数のデータを一括して扱うためのツール。
- 線形写像: ベクトル空間間の変換で、加法性とスカラー倍の性質を保つ写像。
この講義は、前期の「線形代数学I」「線形代数学(基礎)」、後期の「線形代数学II」の3つの授業で完結するように設計されています。
2. 線形代数とデータサイエンスの関係
データサイエンスで解きたい課題は、大きく教師あり学習と教師なし学習に大別されます。
教師あり学習とは、例えば、医療データにおいて、過去の診断結果や治療記録を基に患者の病状を予測することや、スポーツデータにおいて、試合結果や選手の成績を元に次のパフォーマンスを予測するなどの正解があるデータを用いてモデルを学習し、未知のデータに対する予測を行うことです。
教師なし学習とは、医療データで疾患の共通パターンを抽出したり、スポーツデータで選手のプレースタイルやチームの戦略的特徴を明らかにするために、データ自体の構造や特徴を解析する手法を指します。
教師あり学習の基本手法として最も広く知られているのが線形回帰モデルであり、その基礎となるのは線形代数学で学ぶ連立1次方程式です。また、教師なし学習の代表的手法である主成分分析は、固有値・固有ベクトルを用いた行列の固有値分解に基づいて行われるものです。つまり、データ分析の基礎となる2つの手法は線形代数学に基づいています。
この他にも多くのデータサイエンスで扱う方法は、線形代数学をもとに発展しています。この授業で皆さんに求めることは、まずは線形代数学の基本的な計算ができるようになることです。理屈を知るのは計算ができるようになってからで構いません。まずは理屈は度外視で計算ができるようになりましょう。
大学で学ぶ数学の理論を1度聞いただけで理解するのはそれほど簡単なことではありませんし、論理を研究で用いるのは研究者だけです。それよりも皆さんはまずは計算ができるようになり、その上で2年生・3年生と学年が上がる中で何度も同じ概念に触れることで、徐々に理論について目を向ける余裕が出てきます。必要なものを必要なだけ学んでいきましょう。
3. 生成AIの活用
概要
生成AIは、ウェブをメインとした文章を学習した深層学習モデルで、一般的には大規模言語モデル(Large Language Model; LLM)といいます。有名なものとしては、OpenAIのChatGPT, AnthropicのClaude、GoogleのGemini があります。この授業では、Google の Gemini 2.5 Pro or higher を利用することを前提としています。Gemini 2.5 pro は subscribe していない場合でも、google AI studio を通して無料で利用することができます。
4. 最小二乗法による線形回帰
最小二乗法は、データポイントと予測モデル間の誤差の二乗和を最小化する手法です。線形回帰の文脈では、この方法は以下の最適化問題を解きます:
ここで:
- \(y_i\) は観測値(実際のデータ点)
- \(\beta_0\) は切片
- \(\beta_1\) は傾き
- \(x_i\) は説明変数
例えば、血糖値の値を \(y_i\) にして、年齢を \(x_i\) とすると、年齢が血糖値の値とどのような直線関係を持っているのかを明らかにできます。また、説明変数 \(x_i\) に年齢だけではなく、性別や食事習慣、睡眠時間などのさまざまな情報を追加することで、より複雑な関係を表現することができます。
5. 主成分分析(PCA)による次元削減
-
概要:
線形代数学の基礎概念(固有値・固有ベクトルや行列分解)を用いて、多次元データから次元の削減を行い、重要な情報を抽出する方法です。医療分野では、多数の測定値から病気の状態を評価する際に、データの次元削減が有効ですし、スポーツ分野でもセンター技術の発展で、さまざまなデータがとられるようになった今、その情報の中から有用な知見を発見するためには、データの次元削減の技術は非常に重要視されています。 -
2つの具体例:
- Irisデータセットを用いて、4次元のデータを2次元に縮約し、データのクラスタリング傾向を視覚化します。
- 乳がんデータセットを用いてPCAによりデータの低次元表現を取得し、良性と悪性のサンプルを視覚化します。
6. 画像処理への応用例: SVDによる画像の低ランク近似
- 概要:
画像処理では、特に画像圧縮やノイズ除去の分野で線形代数学が活用されます。ここでは、特異値分解(SVD)を用いて画像の低ランク近似を行い、元の画像と近似画像の比較を行います。
特異値分解(Singular Value Decomposition, SVD)は線形代数学における強力な行列分解手法であり、画像処理において圧縮やノイズ除去、特徴抽出など様々なタスクに応用できます。本解説では、SVDの理論的背景から具体的な実装、そして画像処理への応用とその解釈までを体系的に説明します。
数学的定義
任意の \(m \times n\) 行列 \(A\) に対して、SVDは以下のように行列を分解します:
ここで:
- \(U\) は \(m \times m\) の直交行列で、\(A\) の左特異ベクトルを列として持ちます
- \(\Sigma\) は \(m \times n\) の対角行列で、対角成分に特異値を持ちます(通常は降順)
- \(V^T\) は \(n \times n\) の直交行列の転置で、\(A\) の右特異ベクトルを行として持ちます
特異値は \(A\) の表現において各「成分」の重要度を表しており、多くの場合、少数の大きな特異値だけでデータの本質的な部分を捉えることができます。
画像処理における意味
画像は2次元の行列(グレースケール)または3次元のテンソル(カラー画像)として表現できます。カラー画像の場合、各チャンネル(RGB)を独立した行列として扱い、それぞれにSVDを適用します。
SVDを画像に適用すると:
- 左特異ベクトル \(U\) は画像の「縦方向」のパターン
- 右特異ベクトル \(V\) は画像の「横方向」のパターン
- 特異値 \(\Sigma\) はそれらのパターンの重要度
を表します。特異値の大きい上位の成分だけを使って画像を再構成することで、本質的な情報を保持しながらデータ量を削減できます。
圧縮のアプローチ
画像圧縮においては、ランク \(r\) の行列 \(A\) を、より少ないランク \(k\) (ただし \(k < r\))の行列 \(A_k\) で近似します:
ここで \(\sigma_i\) は \(i\) 番目の特異値、\(u_i\) と \(v_i\) はそれぞれ \(i\) 番目の左右特異ベクトルです。
圧縮率の計算
元の \(m \times n\) のカラー画像(3チャンネル)を保存するには \(3 \times m \times n\) の要素が必要です。一方、SVDで圧縮した場合は:
- 左特異ベクトル: \(3 \times m \times k\) 要素
- 特異値: \(3 \times k\) 要素
- 右特異ベクトル: \(3 \times k \times n\) 要素
合計で \(3 \times (m \times k + k + k \times n)\) 要素となります。圧縮率は:
\(k\) が小さいほど、圧縮率は高くなります(値は小さくなる)。
特異値の分布と累積寄与率
コードの実行結果から、特異値は急速に減衰していることがわかります。最初の数十の特異値だけで画像の情報の大部分(95〜99%)を表現できています。このことは、画像データに高い冗長性があり、効率的に圧縮できることを示しています。
各チャンネルについて:
- 95%のエネルギーを保持するには約50-100の特異値が必要
- 99%のエネルギーを保持するには約150-200の特異値が必要
これは元の次元数(画像の幅や高さは数百ピクセル)と比較して非常に少ない数です。