k平均法による減色処理に混合ガウスモデルを適用してもうまくいかない
2017.12.25
こんにちは。データサイエンスチームのtmtkです。
この記事は、NHN テコラス DATAHOTEL:確率統計・機械学習・ビッグデータを語る Advent Calendar 2017 25日目の記事です。
k平均法と混合ガウスモデル
k平均法(k-means)と混合ガウスモデルはどちらもクラスタリングアルゴリズムの一つです。下図のように、与えられたデータを教師ラベルなしで分類することができます。混合ガウスモデルでは学習モデルのパラメータに分散共分散行列が入っているため、クラスタの広がりの大小に差があるクラスタ間でもうまくクラスタリングできることが知られています。
(Comparing different clustering algorithms on toy datasets — scikit-learn 0.19.1 documentation より作成)
k平均法と減色処理
k平均法によって画像の減色処理をすることができます。具体的には、画像の各画素をRGBの3次元ベクトルだとみなして、k平均法を適用し、各クラスタの中心のRGB値にマッピングします。
最初のハリネズミの写真で具体的にやってみましょう。まず、色の分布を(R, G, B)の3次元空間にプロットしてみます。
背景の白、ハリネズミの茶色と黒色、サンタ帽の白が表示されています。
これをk平均法で3色にクラスタリングし、プロットしてみます。
白、茶色、赤色の3色にクラスタリングされます。
最後に、この元の色をクラスタリングされた色に変換します。
最初の写真が白、茶色、赤色の3色のみで表現できました。
k平均法と混合ガウスモデルによる減色処理
ところで、k平均法といえば、クラスタリングアルゴリズムには混合ガウスモデルもあります。混合ガウスモデルで同じことをやるとどうなるのでしょうか。やってみます。
なんだかおかしいですね。境界部分がカクカクしています。JPEG圧縮の際のノイズが反映されてしまっているようです。どうしてこのようなことが起こるのでしょうか。
混合ガウスモデルで色をクラスタリングしたものをプロットしてみると、原因がわかります。
k平均法によるクラスタリング結果のプロットと比べてみると、白のクラスタの広がりが非常に小さくなっていることがわかります(図の青色の丸で囲った部分)。白色が分散の非常に小さなクラスタをつくってしまっているため、JPEGの圧縮ノイズのような微小な色の変化にもクラスタリングの結果に影響してしまい、境界部分がカクカクした結果が得られてしまったのだと考えられます。
このように、減色処理に混合ガウスモデルを適用すると、モデルのパラメータに分散が入っているという混合ガウスモデルの特徴が、欠点として現れてしまうことがあります。
混合ガウスモデルの問題点
k平均法と混合ガウスモデルの比較のために最初に出した画像を振り返ってみます。
よく見ると、青いクラスタの右側に緑色のクラスタに属する点が一つだけあります(赤い丸で囲った部分)。これも、青色のクラスタの広がりが緑色のクラスタの広がりに比べて小さいために起こる現象で、k平均法ではおこりえない現象です。
混合ガウスモデルでは、このように、「あるクラスタが別のクラスタをまたいで存在してしまう(クラスタの存在する領域が凸でなくなってしまう)」ことがあります。減色処理にクラスタリングを適用する場合、この性質は望ましくありません。というのも、「ある色が、緑色か青色かといえば青色に近いが、青色ではなく緑色としてクラスタリングされてしまう」といったようなことは、減色処理では起こってほしくないからです。
減色処理に適用するクラスタリングアルゴリズムは、混合ガウスモデルよりもk平均法のほうが適切であるといえます。
まとめ
k平均法と混合ガウスモデルの2つの方法で減色処理をしました。クラスタの広がりの大小を表現できる混合ガウスモデルの柔軟性が、減色処理ではかえって欠点として現れてしまうことがあります。
クラスタリングアルゴリズムを選定する際には、モデルやアルゴリズムの特性を理解し、適用対象にあったものを選定することが大切です。
参考文献
- 機械学習概論 講義テキスト
- 86ページからk平均法による減色処理の解説があります
- C.M.ビショップ『パターン認識と機械学習』
- 下巻第9章にk平均法による画像の減色処理の話題があります
画像の出典
テックブログ新着情報のほか、AWSやGoogle Cloudに関するお役立ち情報を配信中!
Follow @twitterデータ分析と機械学習とソフトウェア開発をしています。 アルゴリズムとデータ構造が好きです。
Recommends
こちらもおすすめ
-
Apache Sparkとpandasでデータ処理の時間を短縮する方法
2017.12.21
-
Amazon EC2 F1インスタンスを試してみた!
2017.12.22
-
AWS GlueとAmazon Machine Learningでの予測モデル
2017.12.17
-
統計でデータを活用!Japan Rに参加して
2017.12.3
Special Topics
注目記事はこちら
データ分析入門
これから始めるBigQuery基礎知識
2024.02.28
AWSの料金が 10 %割引になる!
『AWSの請求代行リセールサービス』
2024.07.16