LoginSignup
22
16

More than 5 years have passed since last update.

ファジィクラスタリングについて

Posted at

ファジィクラスタリング

今回は、クラスタリングの一手法であるファジィc-平均法(Fuzzy c-means)を紹介します。

クラスタリング

データ解析の分野で広く用いられる、データの集合を部分集合(クラスタ)に分割する手法です。
教師なし学習の一種でもあります。

階層的クラスタリング

  • 重心法
  • 群平均法
  • ウォード法

などなど。
出力がデンドログラムによって表示されるのが特徴

非階層的クラスタリング

計算の高速なことなどから、ビジネスの場で用いられることが多い手法です。
k-meansが非常に有名ですが、他にもbayonで用いられているRepeated Bisectionが有名です。

機械学習の過程をD3.jsで可視化する

ファジィ理論 (Fuzzy Logic)

深くは語ると長くなるので触れませんが、1990年くらいに流行した理論で、洗濯機やクーラーなどの制御に使われています(今はどうだか知りません)。
ファジィ集合論においては、をメンバーシップ値という値を用いることで、集合への帰属度を柔軟に表現することが可能です。

たまにファジーと表記する人がいますが、間違いです。

ファジィクラスタリング

ファジィクラスタリングにもいくつか種類がありますが、今回は最も有名であるFuzzy c-meansを紹介します。ファジィの世界ではk-meansなどの非階層クラスタリングのことをハードクラスタリングと呼んだりします。
個体のクラスタへの帰属が0か1かで判断されますが、ファジィクラスタリングでは[0,1]の範囲で記述することができます。そのため、[サッカー: 0.5, 野球: 0.4, マラソン: 0.1]のようなまさに曖昧で柔軟な表現が可能です。
また、多くのクラスタリング手法では境界線線上のデータに困ることが多い(いずれかのクラスタに属さなければいけない)のですが、ファジィクラスタリングでは複数のクラスタに所属することが可能です。
qiita20151212.001.jpeg

また帰属度を持つことでその他のファジィ理論に応用することも可能になります。

私が所属するチームではキノコ、タケノコ論争がよく起こるのですが、Fuzzy c-meansであれば境界線上の人も安心です。(参考: Mahout で fuzzy k-means やってみた)

Pythonでの利用

最近はJupyter環境で分析を行っていますが、Pythonで実行するライブラリが提供されています。
https://github.com/scikit-fuzzy/scikit-fuzzy

$ pip install -U scikit-fuzzy

で利用可能になります。

応用

個体のクラスタへの複数所属を許すことでより個体を柔軟に表現することができます。

参考

https://github.com/scikit-fuzzy/scikit-fuzzy
ファジィクラスタリングの有用性について 宮本 定明

22
16
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
22
16