1、模型识别的问题提出
模型识别,通俗地理解即是对一个类别未知的对象进行归类(或者叫分类)。这里与聚类不同的是,聚类实际上是要区分出已有的样本哪些属于同一类,但并没有参考标准。而识别则事先有参考的标准,在此前提下对模型进行识别。
简单抽象描述这一问题即是,现有对象 x x x,它有多种属性,此时有标准模型 I , I I , I I I , . . . I,II,III,... I,II,III,...,如何通过一系列的方法来判断对象 x x x 究竟属于哪一种类型。比如医生通过病人的症状进行诊断(判断其属于哪种疾病),农业中对作物进行分级等,都属于模型识别问题。
2、预备知识
- 模糊向量:所有元素均在 [ 0 , 1 ] [0,1] [0,1] 上取值的向量可称为模糊向量。如:
a = ( a 1 , a 2 , … , a n ) , 0 ⩽ a i ⩽ 1 ( i = 1 , 2 , ⋯ , n ) \boldsymbol{a}=(a_{1},a_{2},\dots,a_{n}),\quad 0\leqslant a_{i} \leqslant 1 \quad(i=1,2, \cdots, n) a=(a1,a2,…,an),0⩽ai⩽1(i=1,2,⋯,n)
模糊向量可以用于表示一个模糊集
A
A
A:
a
i
=
A
(
x
i
)
(
i
=
1
,
2
,
⋯
,
n
)
a_{i}=A\left(x_{i}\right) \quad(i=1,2, \cdots, n)
ai=A(xi)(i=1,2,⋯,n)
其中
A
(
x
i
)
A\left(x_{i}\right)
A(xi) 表示该模糊集的隶属度函数。
- 模糊向量的内积:
a ∘ b = ⋁ i = 1 n ( a i ∧ b i ) \boldsymbol{a} \circ \boldsymbol{b}=\bigvee _{i=1}^{n}\left(a_{i} \wedge b_{i}\right) a∘b=i=1⋁n(ai∧bi)
- 模糊向量的外积:
a ⊙ b = ⋀ i = 1 n ( a i ∨ b i ) \boldsymbol{a}\odot \boldsymbol{b}=\bigwedge_{i=1}^{n}\left(a_{i} \vee b_{i}\right) a⊙b=i=1⋀n(ai∨bi)
3、最大隶属度原则
- 最大隶属原则 I : 设论域
U
U
U 上有
m
m
m 个模糊 子集
A
1
,
A
2
,
⋯
,
A
m
A_{1}, A_{2}, \cdots,A_m
A1,A2,⋯,Am (即
m
m
m 个模型),构成一个标准模型库,若对任一
x
0
∈
U
,
x_{0} \in U,
x0∈U, 有
i
0
∈
{
1
,
2
,
⋯
,
m
}
i_{0} \in\{1,2, \cdots, m\}
i0∈{1,2,⋯,m}, 使得
A i 0 ( x 0 ) = ⋁ k = 1 m A 1 ( x 0 ) A_{i_{0}}\left(x_{0}\right)=\bigvee_{k=1}^{m} A_{1}\left(x_{0}\right) Ai0(x0)=k=1⋁mA1(x0)
则认为 x 0 x_0 x0相对隶属于 A i 0 A_{i_{0}} Ai0.
这里需要稍作解释。上述内容里面 A 1 , A 2 , ⋯ , A m A_{1}, A_{2}, \cdots,A_m A1,A2,⋯,Am 即是 m m m 个标准模型,而 x 0 x_0 x0 是待识别的对象。上面公式的意思通俗的解释即是:它相对哪一个模型的隶属度最大,那么它就属于哪个模型。
- 例:考虑年轻、中年、老年的三类标准模型 A 1 , A 2 , A 3 A_1,A_2,A_3 A1,A2,A3分别定义如下:
A 1 ( x ) = { 1 0 < x ⩽ 20 1 − 2 ( x − 20 20 ) 2 20 < x ⩽ 30 2 ( x − 40 20 ) 2 30 < x ⩽ 40 0 40 < x ⩽ 100 A 2 ( x ) = { 0 0 < x ⩽ 20 2 ( x − 20 20 ) 2 20 < x ⩽ 30 1 − 2 ( x − 40 20 ) 2 30 < x ⩽ 40 1 40 < x ⩽ 50 1 − 2 ( x − 50 20 ) 2 50 < x ⩽ 60 2 ( x − 70 20 ) 2 60 < x ⩽ 70 0 70 < x ⩽ 100 A 3 ( x ) = { 0 0 < x ⩽ 50 2 ( x − 50 20 ) 2 50 < x ⩽ 60 1 − 2 ( x − 70 20 ) 2 60 < x ⩽ 70 1 70 < x ⩽ 100 A_{1}(x)=\left\{\begin{matrix} 1 & 0<x \leqslant 20 \\ 1-2\left(\frac{x-20}{20}\right)^{2} & 20<x \leqslant 30 \\ 2\left(\frac{x-40}{20}\right)^{2} & 30<x \leqslant 40 \\ 0 & 40<x \leqslant 100 \end{matrix} \right. \\ A_{2}(x)=\left\{\begin{array}{cl} 0 & 0<x \leqslant 20 \\ 2\left(\frac{x-20}{20}\right)^{2} & 20<x \leqslant 30 \\ 1-2\left(\frac{x-40}{20}\right)^{2} & 30<x \leqslant 40 \\ 1 & 40<x \leqslant 50 \\ 1 - 2\left(\frac{x-50}{20}\right)^{2} & 50<x \leqslant 60 \\ 2\left(\frac{x-70}{20}\right)^{2} & 60<x \leqslant 70 \\ 0 & 70<x \leqslant 100 \end{array}\right. \\ A_{3}(x)=\left\{\begin{matrix} 0 & 0<x \leqslant 50 \\ 2\left(\frac{x-50}{20}\right)^{2} & 50<x \leqslant 60 \\ 1-2\left(\frac{x-70}{20}\right)^{2} & 60<x \leqslant 70 \\ 1 & 70<x \leqslant 100 \end{matrix}\right. A1(x)=⎩⎪⎪⎨⎪⎪⎧11−2(20x−20)22(20x−40)200<x⩽2020<x⩽3030<x⩽4040<x⩽100A2(x)=⎩⎪⎪⎪⎪⎪⎪⎪⎪⎪⎨⎪⎪⎪⎪⎪⎪⎪⎪⎪⎧02(20x−20)21−2(20x−40)211−2(20x−50)22(20x−70)200<x⩽2020<x⩽3030<x⩽4040<x⩽5050<x⩽6060<x⩽7070<x⩽100A3(x)=⎩⎪⎪⎨⎪⎪⎧02(20x−50)21−2(20x−70)210<x⩽5050<x⩽6060<x⩽7070<x⩽100
那么考虑 x = 40 x=40 x=40: A 1 ( 40 ) = 0 , A 2 ( 40 ) = 1 , A 3 ( 40 ) = 0 A_{1}(40)=0, A_{2}(40)=1, A_{3}(40)=0 A1(40)=0,A2(40)=1,A3(40)=0,此时应属于中年人
再考虑 x = 35 x=35 x=35: A 1 ( 35 ) = 0.125 , A 2 ( 35 ) = 0.875 , A 3 ( 35 ) = 0 A_{1}(35)=0.125, A_{2}(35)=0.875, A_{3}(35)=0 A1(35)=0.125,A2(35)=0.875,A3(35)=0,按照这一标准,35岁也应该算作中年人。
4、小结
由上述描述可见,模糊模型识别的操作过程实际上是比较简单的。但这里也很容易看出一个问题,在上例中我们是直接给出了隶属度函数,然而这种做法显然并不是最好的。因为可以看到35岁也被归为了中年人之列。那么容易看到不同隶属度函数对应的是不同的选择标准,因此合理的隶属度函数是合理的识别方法的前提。
关于隶属度函数的选取,前文中已经讲过,可以参考:https://blog.csdn.net/cauchy7203/article/details/107365236