データ分析をしてみたいなぁ
データが複雑すぎて、データ解析できない!
重回帰分析だけじゃ、うまくいかないなぁ〜
なんて思われた方もおられるのではないでしょうか。
データ分析の手法というと、シンプルなものとして「回帰分析」があり、変数を複数扱うには「重回帰分析」が使えます。
とりあえず、重回帰分析までマスターしたよ、
って方も多いのではないでしょうか。
重回帰分析はとても有効な方法なのですが、万能なわけではないんです。
複雑なデータを扱うようになると、
- 重回帰分析の結果がしっくりこないなぁ
- 重回帰分析では手に負えないよ
- 重回帰分析以上の精度や性能がほしい!
といったことを経験された方も多いのではないでしょうか。
じつは、重回帰分析での限界を超えるための手法があるんです。
その1つが「カーネル法」と呼ばれる手法になります。
え?なにそれ??
と思われた方もおられるかもしれませんが、安心してください。
本記事では、初学者の方でもわかりやすいように、
「カーネル法」とは?からはじまり、カーネル法の特徴や応用分野などを、サクッと理解できるようにまとめました。
- 重回帰分析は使えるようになったから、もう少し違った分析手法を身につけたい
- 複雑なデータを分析したいんだけど、重回帰分析だけじゃ手に負えなくて・・
- カーネル法って聞いたことあるんだけど、いったいなに?
といった方に、カーネル法の概要をサクッとつかんでもらえたらと思います。
本記事の概要
「カーネル法」とは?
カーネル法は、データ分析手法の1つです。
データ分析では、データの中から「規則」を見つけ出したりしますが、
規則性には、「線形」的なものだけでなく、「非線形」的なものもあります。
線形・非線形ってなに?
ということなんですが、すごくザックリというと、
線形は、「直線的な関係」のようなイメージで、
非線形は「非直線的な関係」と理解しておけばとりあえずはいいかと思います。
中学生の頃にならった、直線の式「y = a x + b」のグラフが線形のイメージで、
放物線の式「y = a x2」のような曲線が非線形のイメージと思ってもらえるといいかと思います。
もう少しキチンと書くと、以下のようになります↓
「線形」というのは、次の2つの性質も満たすものをいいます。
写像 f について、任意の x, y , α について、
(1), f(x+y) = f(x) + f(y)
(2), f(αx) = α f(x)
が成り立つことをいいます。
そして、これに当てはまらないものが、「非線形」ということになります。
なんだそりゃ?という方は、線形代数を学ぶとスッキリしますよ!
『「線形代数」を独学したい人はチェックしてほしい良書、13冊はこちらです』
でもこれが、カーネル法とどう関係あるの!?
というところなんですが、
カーネル法を使うと、データの中の非直線的な関係を、”手軽に” 調べることができるんです。
(ちなみに(重)回帰分析はデータの中の直線的な線形関係を調べることができます。)
なので、カーネル法は、(重)回帰分析の拡張版で、
複雑なデータの中から、データの非線形的な特徴を調べるのに使える方法、
と思ってもらうとわかりやすいかと思います。
あ〜そうなの〜
でも、「複雑なデータ」なら、「複雑な式」を使って分析すればいいんじゃないの?
と思われるかもしれません。
たしかに複雑な式(非線形な関係式)を使って分析するとよさそうですが、
実際はむしろ、複雑な式をつかう(=次元が高くなる)と、データ分析しにくくなるんです。
(なぜかというと、データ分析のアルゴリズムの中には、「最適化」を行う部分があるんですが、非線形な関係式の最適化は、一般に難しくなります。
なので、出来るだけ線形の関係式の方が最適化しやすく、データ分析もしやすくなります)
データの複雑な(直線関係ではない)規則性を見つけ出したい!
でも、線形的な式で調べた方が、データ分析的にはラクなんだよなぁ〜
となるわけですが、
カーネル法はこのような状況で真価を発揮する方法の1つなんです。
なぜかというと、カーネル法を使うと、
データの中の複雑な(非線形的な)規則性を、”線形な” 関係式で調べることができるからです。
え!ほんとに〜!
カーネル法ってなんかすごそう!
なぜ、そんなことができちゃうの?
など疑問に思われるかもしれません。
その秘訣が、「カーネルトリック」と呼ばれるアイデアになります。
「カーネルトリック」とは?
上で少し書いたのですが、一般的に、次元が高くなるとデータ分析しにくくなります。
なので通常は、次元はできるだけ高くしないようにするのが定石です。
ところが、カーネル法では、データをあえてより高次元に移すということをします。
え!?もっと高次元に!
そうなんです。データを高次元に移すんです。
なぜ、そんなことするの?
って思いますよね。
その答えは、直線的な関係式で分析できるようにするため、なんです。
え!?なにそれ、よくわからないなぁ〜
って思っちゃいますよね。
あまりイメージがわかないかもしれませんので、ちょっと例を出してみますね。
例えば、1枚の紙に白丸と黒丸がたくさん書かれていて、白丸と黒丸を2つに分ける境界線を引きたいとします。
それらの白丸と黒丸を分けるためには、ぐにゃぐにゃの曲線を使えば、きちんと分けることができるはずです。
でもここでは、それらをうまく分ける線を ”直線で” 引きたいと考えてみます。
この発想は、上で少し書いたように、ぐにゃぐにゃした曲線(高次元の式)を使うとデータ分析しにくいので、シンプルな直線を使いたい!という欲求がもとになっています。
よし直線を探してみるぞ!
と頑張ってみるものの、実際は都合良くそんな直線が見つかるとは限りません。
むしろ、見つからないのが一般的です。
そこで役立つのが、「カーネルトリック」なんです。
カーネル法では、データを高次元に移す、といいましたが、
紙の上の白丸や黒丸の例だと、これらの丸は、2次元上に存在しています。
この紙をぐしゃっとしたらどうなるでしょうか?
紙は3次元になりますよね。
これがデータを高次元に移すという操作に対応します。
そして、2次元の紙を ”うまい具合に” “いい感じに” ぐしゃっと3次元にすると、
白丸と黒丸を分ける”直線”が引けるんじゃないの?
それを探してみようよ!
というのが、カーネル法の発想なんです。
うーん、2次元を3次元にすると、ほんとに直線がみつかるのかな?
って思われる方もおられるかもしれません。
紙をぐしゃっとして3次元にする例えは、この本でも説明されていて、それを参考にさせていただきました。
本書は、機械学習の概念を ”ほぼ数式なし” で理解させてくれる良書です。
初学者の方でも機械学習ってなに?をサクッとつかむことができるおすすめの1冊となっています。
というわけで、ここまでの内容をまとめると、
「カーネル法」では、複雑なデータの中にひそむ非線形的な規則性を、カーネルトリックを使うことで線形的な関係を用いて調べることができる手法、ということができます。
整理しておきますと、
- 「線形回帰分析」では、線形的なデータの特徴を、線形な関係式で調べることができる
- 「カーネル法」では、非線形的なデータの特徴を、線形な関係式で調べることができる
という違いがあります。
「カーネル法」の理解に役立つ3つの特徴とは?
上ではカーネル法と線形回帰分析を比べましたが、カーネル法には独特の特徴もあります。
ここではカーネル法の理解に役立つ3つの特徴について、サクッとまとめたいと思います。
サンプルが大量・複雑でも、シッカリ分析できる
「線形回帰分析」ですと、データが増えて複雑になってきても、あくまで線形的な分析しかできません。なので、データが複雑になればなるほど、データ分析が難しくなってきます。
それに対して「カーネル法」では、データが増えて複雑になると、その複雑さを表現できる仕組み(「カーネルトリック」)が組み込まれています。なので、複雑なデータに潜む、複雑な規則性を表現することができます。
データは数値だけでなく、文字列やグラフ構造なども扱うことができる
「線形回帰分析」では、数値のデータを解析することが多いかと思いますが、
数値以外のデータ、たとえば、文字列やグラフ構造をもったデータなどを扱うのはむずかしくなります。
それに対して、「カーネル法」では、文字列やグラフ構造のような複雑なデータ構造をもったデータの分析も対象にすることができます。
応用できる分野が非常に幅広い
カーネル法は、データの中のパターンをみつける「パターン認識」を得意としています。
パターン認識には、「文字認識」や「音声認識」などがあるのですが、それらを精度よく行うことができます。
ほかにも、「自然言語処理」「検索エンジン」「商品推薦システム」などにも応用することができます。
このように、カーネル法は、非常に多岐に渡る分野で応用可能な方法となっています。
というわけで、カーネル法がどのようなものか、ざっくりとは理解していただけたのではないでしょうか。
- 複雑なデータに出会って、重回帰分析じゃ太刀打ちできない><
- 線形回帰分析よりも、もっといい性能を出したい!
ってときには、カーネル法を選択肢の1つに入れてみてはいかがでしょうか。
本書は、
- カーネル法の基礎
- カーネルトリックの中身
- 固有値問題を用いたカーネル法(カーネル主成分分析)
- 凸計画問題を用いたカーネル法(サポートベクターマシン)
などの応用まで1冊でカバーできてしまう良書です。
独自カーネルを作りたい方や、論文や専門書を読むための基礎を固めたいあなたにも最適な1冊となっています。
本書の構成は以下の通りです
第1章 現代の多変量解析とは
1−1、現代流の多変量解析とは
1−2、カーネル法とはどんなものか
1−3、カーネル法の利点と応用分野
1−4、カーネル法の種類:問題設定と計算法
第2章 カーネル多変量解析の仕組み
2−1、カーネル関数とは何か:特徴抽出からの導入
2−2、正定値性からの導入
2−3、確率モデルからの導入
2−4、汎化能力の評価とモデル選択
第3章 固有値問題を用いたカーネル多変量解析
3−1、カーネル主成分分析
3−2、次元圧縮とデータ依存カーネル
3−3、クラスタリング
3−4、判別分析と正準相関分析
3−5、カーネル独立成分分析
第4章 凸計画問題を用いたカーネル多変量解析
4−1、サポートベクトルマシン
4−2、サポートベクトル回帰
4−3、損失関数も最適化する:νトリック
4−4、外れ値・新規性検出
4−5、凸二次計画問題の基本解法
4−6、その他の話題
第5章 カーネルの設計
5−1、カーネルの変換と組み合わせ
5−2、グラム行列の設計
5−3、確率モデルに対するカーネル
5−4、複雑なデータ構造に対するカーネル
第6章 カーネルの理論
6−1、特徴抽出からカーネルへ
6−2、正定値性
6−3、正定値行列の幾何
第7章 汎化と正則化の理論
7−1、正則化:逆問題と不良設定問題
7−2、正則化とカーネル法
7−3、関数の複雑さと汎化の理論
A, 付録
A-1, 回帰問題の leave-one-out クロスバリデーション誤差の導出
A-2, ラグランジュ関数と双対問題
A-3, 文献案内と謝辞
関連図書
索引
となっています。
- 線形回帰分析などよりも、いい性能を出したいあなた
- 複雑なデータを、カーネル法でサクッと分析したいあなた
- ディープラーニング(深層学習)のように計算量が多いものは避けたいあなた
など、カーネル法の基礎から、他の手法をカーネル法で拡張した、カーネル主成分分析やサポートベクターマシンなどの応用技術も学べます。独自カーネルを作りたい方や論文や専門書を読むための基礎を固めたいあなたにも最適の1冊です。
こちらもございます。
カーネル法の数学的な面をわかりやすく学べる1冊↓
「サポートベクターマシン」について学びたいあなたには、こちらもございます↓
「カーネル法の実装」などに興味があるあなたは、こちらもどうぞ↓
カーネル法を「Rで実践」しながら学びたいあなたには、こちらもございます↓
これらは、カーネル法に限らず、その他の多くの手法も学べるので、1冊手元にあって損なしです。
「パターン認識」を初歩から学んでみたいあなたには、こちらもございます↓
カーネル法の辞書のような1冊です。手元において末長く使えます↓
↓こちら無料で読めます