Labとは、アスタミューゼのエンジニアとデザイナーのブログです。アスタミューゼの事業・サービスを支えている知識と舞台裏の今を発信しています。テクノロジーインテリジェンス部で主にデータ周りの業務を担当しているshmです。今回、並河さんからご指名を頂き、記事を執筆させて頂くことになりました。データといえば、最近では統計処理ソフトR、Pythonの数値計算ライブラリNumPyや機械学習ライブラリscikit-learnなど高度なデータ分析を行うための環境を簡単に(しかもフリーで!)手に入れることが出来るようになりました。以前であれば大学の研究者やアナリストといった専門家向けのマニアックなツールとして知る人ぞ知る存在だったはずですが、近年のブームの中、書籍やネットで紹介されることで、その存在が広く知れ渡るようになりました。これらのツールは一定の書式で値を入力するだけで簡単に解析結果を返してくれる大変便利なものですが、得られた結果が妥当なものであるかどうかは別途、評価しなければならないのが普通です。その際、適切な評価を行う為にもツールが前提としている理論について把握しておくことが望ましいのですが、実際にはブラックボックスとして使われることも多いと思われます。そこで本記事では、こうしたツールが提供する様々な機能の中から、広い応用範囲を持つ特異値分解にスポットを当てて解説したいと思います。本記事の構成は以下の通りです。最後にはじめにベクトルや行列について、本記事の内容を理解するために必要なことに絞って簡単に復習します。次に特異値分解を理解するために必要となる固有値分解を紹介した後*1、特異値分解について証明付きで解説します*2。最後に応用として、行列の低ランク近似について取り上げます。行列の低ランク近似は、データを要約して次元を圧縮するためにしばしば使われますが、この記事では行列が近似されていく様子を画像データを使い視覚的に確認します。