ファジィ集合のはなし(5)

前回はファジィ集合間の演算。というより、メンバーシップ関数間の演算を見てきました。
今回はというと、補集合演算をちょっと補足し、それから普通の集合との間のかかわりを見ていこうと思います。
そういう意味では前回より地味です。


前回やったように、否定演算、補集合もいろいろ遊べます。
前回裃は面倒になって話を終わらせてしまいましたが、それじゃああまりに無責任なのでいくつか演算を紹介しておこうとおもいます。

補集合演算として欲しい性質は、$${[0,1]\mapsto[0,1]}$$であること、$${n(0)=1,n(1)=0}$$と、単調減少、あと二回演算で元に戻る$${(x=n(n(x)))}$$ことでした。

・$${\lambda}$$補集合

$$
A^{c_\lambda}:\mu_{A^{c_\lambda}}=\dfrac{1-\mu_A}{1+\lambda\mu_A},\;(\lambda>1)
$$

こいつは$${\lambda}$$を変化させることができます。
$${\lambda=0}$$が(標準的な)否定演算$${n(x)=1-x}$$に対応します。
$${\lambda=-0.5,0,1,100}$$を書いてみますと、

$${-0.5}$$(赤)だと、0(緑)より膨らみ、1(黄)だと0(緑)より萎みます。100なんかはもう顕著で、ほぼ角のようになってしまいます。
端っこに少し見える青の線は$${\lambda=-2}$$で、$${\lambda\leq-1}$$はこんな感じで$${[0,1]\mapsto[0,1]}$$とならなくなるのでNGになります。

二回演算してみましょうか。

$$
\begin{array}{}\mu_{(A^{c_\lambda})^{c_\lambda}}&=&\dfrac{1-\dfrac{1-\mu_A}{1+\lambda\mu_A}}{1+\lambda\dfrac{1-\mu_A}{1+\lambda\mu_A}}\\\\&=&\dfrac{\lambda\mu_A+\mu_A}{1+\lambda}\\\\&=&\mu_A\end{array}
$$

ちゃんと戻りますね。よかったよかった。

変数付きの否定演算を作ったことで、ある程度色々な状況には対応できるようになりますが、やはり0.5を境に対称になる$${n(x)=1-x}$$が一番感覚的にも、数式的にも飲み込みやすそうですね。

このほかにも$${\sqrt{1-x^2}}$$なんかも上述の性質を満たしますが、$${\lambda}$$補集合で $${\lambda=-0.75}$$とするとほぼ同じ挙動の関数が作れるので、あまり意味がないかもしれません。
一般化すると$${(1-x^{1/h})^h}$$なんかもよさそうですよね。
あれ、この形$${\pm}$$こそ違うけど、どこかでみたな……。


さて、続いては今回のメインテーマ、普通の集合(クリスプ集合)との関係です。

いくらファジィといっても、メンバーシップ関数が一度定まれば、メンバーシップ関数が値を確定できるなら、普通の集合への橋渡しができるはずです。

何を言いたいかというと、メンバーシップ関数の値が0.5の範囲(元)、というのは普通の集合みたいに書き出せるということです。
イメージは等高線です。高さ0.5がどこの $${x}$$にあるか調べて書き出したものは普通の集合(クリスプ集合)になります。

え、メンバーシップ関数自体もファジィならどうするかって? その話はまたいずれね。

それはさておき、こういう値のスライスを数学的にはレベル集合というもので扱います。

$$
L_c(f)=\{x|x\in U,f(x)=c\}
$$

これに倣って、ファジィ集合には「指定した値以上のメンバーシップ関数値を返す元$${x}$$」の集合というものがあります。
カットする高さの指定値を$${\alpha}$$として、$${\alpha-}$$レベル集合、または$${\alpha}$$カットと呼ばれるもので、

$$
A^{\geq\alpha}=\{x|x\in U,\mu_A(x)\geq \alpha\}
$$

と定められます。
この不等式の等号を無くしたもの、

$$
A^{>\alpha}=\{x|x\in U,\mu_A(x) > \alpha\}
$$

強$${\alpha-}$$レベル集合といいます。もちろんこっちも強$${\alpha}$$カット、いや、strong alpha cutの方がカッコいいかな。

この呼称、どっちがいいんだろうと言うのは悩ましいのですが、

$$
A^{=\alpha}=\{x|x\in U,\mu_A(x) = \alpha\}
$$

のことを$${ \alpha}$$ level of  $${A}$$、つまり「$${A}$$の$${\alpha}$$レベル」と呼ぶので、$${>,\geq}$$付きの方は $${\alpha}$$カットと呼ぶべきなのかもしれません。

注意して欲しいのは、このカット操作、メンバーシップ関数という山を等高線できり取り帽子みたいな山を取り出す操作ではありません
あくまでメンバーシップ関数値が指定値より大きくなる範囲を教えるものです。
ですから、指定値よりメンバーシップ関数値が大きいか小さいか "はっきり" 二者択一(クリスプ)した集合ができるのです。


$${\alpha-}$$レベル集合を定義したら、エアコンの温度を上げるか下げるかみたいな、具体的な議論に必要な部分(元)だけを取り出す準備も整います。

というのも、ファジィ集合は「あいまい」を売りにして、ある種めちゃくちゃ広く全体集合をとりたくなるのですが、実際はそんなにいらないよってことは多いわけです。
例えば「東京から近い駅」といった時に日本全国の駅をインプットする必要が果たしてあるか、正直ないわけです。札幌は遠いと思うでしょ、普通。
でも稚内よりは近いでしょ?

とはいえ人によって「近い」は違うので、念のため広く取ります。
で、誰かが「近い」を決めた(メンバーシップ関数を確定させた)ならば、もう「近くない」ところはあってもなくてもいいわけです。
むしろ、いろいろデータ処理する上では、「近さ0」のところは議論の俎上から省きたいわけです。
一方、逆に誰もが近いと証言する「近さ1」も注目したくなるでしょうか。

そこで出てくるのが、台(support)と核(core)です。

$$
\begin{array}{}台&:&{\rm Supp}(A)=A^{>0}=\{x|x\in U,\mu_A(x) > 0\}\\核&:&{\rm Core}(A)=A^{=1}=\{x|x\in U,\mu_A(x) =1\}\end{array}
$$

と定義されます。
そうなると、どこにも1がないようなファジィ集合は核(Core)のない集合になります。
逆に核をもつ集合はちょっと特別に正規ファジィ集合と呼びます。

正規ファジィ集合ではないファジィ集合を正規化するには、メンバーシップ関数の上限値を1にするべく、ノーマライズ(正規化)すればいいわけです。
普通に拡大縮小すればよろしい。
一応メンバーシップ関数の上限値は高さといって$${{\rm Hgt}(A)}$$と表すそうです。

高さがあるならもちろん幅もありますが、これは台が実数の場合に定義できます。
台$${{\rm Supp}(A)}$$の上限と下限をとってきて、その差を取ることで、台の幅としてファジィ集合の幅は定義されます。

$$
{\rm Width}(A)=\sup\bigl({\rm Supp}(A)\bigr)-\inf\bigl({\rm Supp}(A)\bigr)
$$


続いてはちょっとどういうものか一見しただけでは分かりにくいものです。
凸ファジィ集合というものを考えます。注意して欲しいのは、凸集合とは名前こそ近いのですが、ちょっと異なるものです。メンバーシップ関数だと0.6くらいかな?

全体集合$${U}$$の元$${a,b}$$と、 $${0\leq \lambda \leq 1}$$なる$${\lambda}$$を用意して、

$$
\mu_A\bigl(\lambda a+(1-\lambda)b\bigr)\geq \min\bigl(\mu_A(a),\mu_A(b)\bigr)
$$

が全ての$${a,b,lambda}$$について成立する時、このファジィ集合は凸ファジィ集合と呼ばれます。

この表式に出てくる$${\lambda a+(1-\lambda)b}$$の形は座標の内分点の式ですね。
つまりこの式は、「元$${a,b}$$のいかなる内分点においてもメンバーシップ関数値がその両端のメンバーシップ関数値のどちらか一方よりは大きい」という条件で、「その$${a,b}$$を全体集合$${U}$$のどこをとっても条件が成立」するとき、「そんなメンバーシップ関数を持つ君は凸ファジィ集合だよ」ということになります。

定義を言っておいて大雑把にと言い直すのはどうかと思いますが、大雑把に言うなら、「メンバーシップ関数が極小値をもつなら、それは端っこにしてくれ(持たなくてもいい)」ってことです。
極大については特に触れてませんが、メンバーシップ関数が連続なら極大は自動的に一つ以下に限られます。

非凸ファジィ集合。緑の内分点はOKだが黄色の内分点がNG。

つまり、メンバーシップ関数が大きい領域はせいぜい一つしかない。あっちもこっちも大きいなんていうことはない、そんなファジィ集合が凸ファジィ集合というわけです。

じゃあ凸集合とは全く無関係なのかというと、そんなことはありません。
ファジィ集合$${A}$$の任意の$${\alpha-}$$カットが凸集合ならば$${A}$$は凸ファジィ集合になります。
イメージでいうと、凸じゃないファジィ集合は例えばコブが二つあるようなメンバーシップ関数を持ちます。
そうすると、ある$${\alpha}$$での$${\alpha-}$$カットは二箇所の離れた区間を返してくるはずです。

凸ではないファジィ集合。0.5でカットならいいが……。
0.75でカットすると領域が二つになる。

この二つの区間は離れてしまっているのですから、 $${\alpha-}$$カットは凸集合ではありません。
念のため確認ですが、$${\alpha-}$$カットは普通の集合(クリスプ集合)ですから、普通の集合にある物事が適用できるというわけです。


さて、以上で大体の道具が出揃いましたので、次回はいよいよファジィな数の四則演算に入ろうかと思います。

この記事が気に入ったらサポートをしてみませんか?