教師なし学習

教師なし学習とは

教師なし学習とは、機械学習の一つになります。
機械学習において、繰り返し処理を行い目標となるモデルに近づけることを「学習」といいますが、このモデル自体をコンピューターが作成することを教師なし学習といいます。
教師なし学習は、出力するべきものが決まっていないので、「教師あり学習」と言う言葉もありますがそちらとは全く違う単語になります。
教師なし学習では、主にデータの特徴を捉えるための用途に使われることが多く、例えば最近ではECサイトなどでのレコメンデーションなどによく利用されています。
教師なし学習の手法としてはいくつかの方法がありますが、以下に代表的なものを紹介します。

教師なし学習の手法

  • クラスタリング

数あるデータの中から特徴の近いデータを集めたものをクラスタといい、元となるデータをいくつかのクラスタに分けていく手法クラスタリングで、主に2次元平面上にプロットされたデータを用います。

よく使う手法としては、k-means法と呼ばれるもので、あらかじめk個のクラスタに分けることを前提に、あらかじめすべてのデータをとりあえずランダムにグループ分けしておきます。この時点でのクラスタの中心を求めておき、他のグループでこの中心に近いものがある場合は、グループを移動していきます。この処理を繰り返したとき、最後には近い点どうしが集まったクラスタを形成することができます。

また、最初から経験によりkの値を決めることもできるのですが、kの値もコンピューターに決めさせることも可能です。例えば、混合ディリクレ過程と呼ばれる方法を使用すると、クラスタ数の事後分布を求めることでクラスタ数を推定することができるようになります。

教師あり学習とは違い、教師なし学習の手法を回帰や分類にはあてはめることはできません。
機械学習において、回帰や分類は教師あり学習でよく使う手法です。
特にクラス分類クラスタリングはよく似た概念のように思えるので、何が違うのかと疑問に思う方もいるでしょう。
英語に直すと

という訳になります。

両者の違いはあらかじめ正解の情報があるかどうかです。
事前にもう決まっている分類を、新しいデータに与えることクラス分類といいます。
きゅうりや人参の画像が新たに付与されたとき、それがきゅうりなのか人参なのかを予測したいときに使う方法です。
対してクラスタリングはあらかじめ正解はありません。
人工知能(AI)の文脈ではクラスタリングですが、統計の世界ではクラスター分析と呼ばれています。
Cluster(クラスター)はもともと群れや集団といった意味です。
どう分けたら良いのか最初はわからないものを、グループ化していくことで特徴の似ているデータを集めていきます。
きゅうりとピーマンと人参をクラスタリングすると、色の似ているきゅうりとピーマンが似たもののグループとして分けられる可能性があります。
難易度はクラス分類よりクラスタリングの方が高いです。
Pythonのライブラリを使ったクラスタリングの手法は、「Scikit-learnを利用してクラスタリングのプログラムを実装する方法」の記事をご覧ください。


  • 主成分分析

クラスタリングと並んでよく利用される処理が、主成分分析と呼ばれる手法ですが、これは様々なデータからある一定の法則を見つけ出す手法で無次元にある要素から比較的目的の指標に対して寄与する率の高いものからいくつかを抽出して使用する方法で、これを次元の圧縮といいます。

次元圧縮の例としては、人間のさまざまなパラメーター(身長、体重、走る速さ、ジャンプの高さなど)から目的の情報(身長と速さの関係や、体重とジャンプの高さの関係)に切り出していくことなどがあげられます。この方法で取得した成分情報から新しい軸を作り、それをまたクラスタリングするなど、他の手法と組み合わせて利用します。

他にも特異値分解や、独立成分分析といった手法でさらに精度を上げていくことも可能です。


  • 自己組織化マップ(SOM)

ニューラルネットワークの一種で、教師なし学習の出力を利用したクラスタリングを表現したもので、大脳皮質の視覚野をモデル化したもので、さまざまな入力を与え続けていると、だんだん似たような入力に集まっていく状態を得ることができます。

自己組織化マップでは、入力nに対する出力mがあり、それぞれの入出力に重みを付けたベクトルが存在します。ある入力があるとすると、その入力に一番近い出力のベクトルが勝者となり、その近傍のベクトルへの重みが更新されます。

これを繰り返していくことで、学習データと視覚的に扱うことができるため、機械学習だけでなく、人間で判断する材料としても利用できます。また、大量のデータを効率よく圧縮できることから幅広い分野で利用されています。


  • ベクトル量子化

通常の量子化は、標本化したアナログ信号の各サンプルを、最も近い離散値のデジタル符号に置き換えることで行われます。
ベクトル量子化は、これを応用し、複数のデータをベクトルとして扱いまとめて符号化を行うという手法で、入力ベクトルを最も近い代表的なベクトルで近似して量子化する方法で、画像の圧縮などにも利用されています。

この方法はベクトルの次元を増やすことにで、少ない符号長での量子化が期待できますが、次元が増えると最適なクラスタリングと代表ベクトルの選出時に計算量が増えるといった特徴を持つため、Linde-Buzo-Gray法やTwinVQなどといった解決法が提案されています。