2. 赞奇科技发展有限公司, 江苏 常州 213000
2. Zanqi Science Technology Development Co., Ltd, Changzhou 213000, China
在分类问题中,最近邻算法(K-nearest neighbor,KNN)是一种古老而又精确的确定决策边界的非线性分类算法。给定一组训练数据,KNN通过k个临近的样本中大多数标签集对未知样本进行预测。研究表明[1],最近邻规则的渐近错误率最多是贝叶斯分类错误率的2倍,而且跟所使用的距离量无关。
当训练集有无限数量的样本时,类条件概率在无穷小的未标记测试样本域中是常量而与所采用距离量的形式无关。由于欧氏距离在输入空间中具有均匀的各向同性的性质,因此,欧氏距离作为距离度量来确定最近邻样本是自然的选择。在缺乏先验知识的情况下,大多数基于KNN的方法使用简单的欧氏距离衡量样本间的相似性。然而,在现实情况下,无限数量的训练样本是不存在的。因此,在有限样本下,假设局部的类条件概率为常量是不成立的,这样欧氏距离在训练数据中不能充分利用统计规律。因而,选择一个合适的距离量来提高最近邻分类的性能变得至关重要。
在统计分类和信息检索中,距离度量的学习起到了很大的作用。例如,先前研究表明[2],适当的距离度量可以明显提升KNN算法的分类精度。大多数的距离度量学习可以分为以下两大类:1)基于判别分析的度量学习如Domeniconi 和 Gunopulos[3]提出一种利用支持向量机作为指导来定义一个局部灵活度量(local flexible metric classification based on SVMs ,LFM-SVM)的方法。然而,利用核函数方式使转换数据从输入空间转换到高维特征空间时,数据不变性难以维持;2)基于统计分析的度量学习如Zhang 等[4]提出了一种通过知识嵌入从训练数据集中学习距离度量的算法。由于它们位置接近而且局部特征具有相似性,使用新的距离度量可以确定输入空间中的未标记的测试样本近邻。Gao等[6, 7, 8]提出的一种高效的分类方法,然而AdaBoost在有噪声的情况下容易产生过度拟合导致泛化性差,而且由于AdaBoost进行弱分类器训练时需要对训练数据进行多次遍历,进而导致时间效率较低。
文中提出了一种在稀疏条件下的两层分类算法(sparsity-inspired two-level classification algorithm,STLCA)。在STLCA算法低层,先用欧氏距离定义一个未标记的样本局部子空间限制高层分类器过度延伸,然后在分类器的高层,用稀疏贝叶斯方法在未标记样本局部子空间进行信息提取,算法模型框架如图 2所示。
先构建核函数分类器,在求解权值过程中引入EM方法,根据稀疏贝叶斯理论使大部分权值趋于零,其对应的核函数样本组成相关向量,保证分类器稀疏性。由于其稀疏性,在噪声影响下也有很好的稳定性,且由于分类器不必多次遍历训练样本使得时间效率较高。将得到的权值与核分类器组建概率模型,利用最小绝对误差原则进行距离度量学习,将新距离量应用到最近邻算法中,构成一种新的强分类器STLCA算法。通过对比实验可知,STLCA算法在噪声数据和视频烟雾检测应用中有很好的效果。
1 方法模型 1.1 用最小绝对误差进行距离度量学习设x是要预测的类标签未知的样本点,x′是x的最邻近点。对于一般的最近邻算法,未知样本x被错分的概率如式(1)[9]:
式中:N表示训练样本的数量,w1,w2表示类标签,为了简便起见此处只考虑二分类,对于多分类问题通常转换成多级二分类问题来处理。当训练样本的数量N→∞时,渐近条件错误率为
这样,式(1)和式(2)都表示最近邻法的条件错误率,只不过式(1)针对有限样本,而式(2)是对无限样本而言,如果考虑两者之间的误差,式(3):
在有限样本或无限样本训练样本下的平均绝对误差的误差率为式(4):
定义式(5)为
那么式(5)中σ(x,x′)和P(w1|x)-P(w1|x′)之间的对应关系如图 3所示。
由于[P(w1|x)-P(w2|x)]在式(3)中是一个常数项,那么最小化|PN(e|x)-P(e|x)|相当于最小化σ(x,x′)。通常可以通过增加训练样本的数量最小化σ(x,x′),或者定义一个等价距离量如文献[5]中所采用的方法。然而在这里所论述的,是想通过另外的方式求解。
在2类问题y∈{1,-1}中(此时规定标签w1=1,w2=-1),对于给定的x可以通过广义线性模型[10]确定属于某一类的概率:
式中:h(x)为分类器,γ为分类器权重向量。而此处Φ(z)为高斯累计分布函数(也被称为链接函数),其形式为式(7):
将概率模型的输入特征进行非线性转换可以应用到非线性函数中,对于权值向量γ其基本形式包括以下3种形式[10, 11]:
1)线性分类器:h(x)=[1 x1 … xd],此时γ是一个d+1维的向量;
2)非线性分类器:h(x)=[1 φ1(x) ... φk(x)]T,此处φ(·)是非线性函数,γ为k+1维向量;
3)核函数分类器:h(x)=[1 K(x,x(1)) … K(x,x(n))]T,此处K(·,·)为核函数,γ为n+1维向量。
如果能够得到γ值,那么就可以对变量x的标签做出预测。对于普遍使用的参数估计方法如最大似然函数法有式(8)的表现形式:
对于给定的一组训练数据R={(x(1),y(1)),...,(x(n),y(n))},由于训练数据和参数较多,如果用该方法来估计参数γ,容易出现过学习现象。为了避免这一情况,一般是将权值系数γ加上一个附加的约束,常见的形式有对似然函数加上复杂的惩罚函数或者错误函数等。此处采用稀疏贝叶斯方式[12, 13, 14]对权值γ进行评估,稀疏贝叶斯方法直接给权值参数加上一个条件概率分布的限制,给参数γ定义一个均值为零的高斯概率分布,如式(9):
或拉普拉斯条件概率分布,如式(10):
式中:α是假设参数向量。由于不能从公式中直接获得参数γ,本文采用EM迭代方法获取参数γ。对于参数γ按式(10)的拉普拉斯条件概率分布,可采用下面EM迭代步骤进行求解(算法1):
1)对于给定的训练数据集计算矩阵H;此处采用核函数对矩阵进行运算,其中h(x)=[1 K(x,x(1)) … K(x,x(n))]T,
H=[hT(x1) hT(x2) … hT(xn)]T
2)计算γ的初始值,可以通过如下公式对γ 进行初始化:
式中:ε为初始参数,I为单位矩阵。
3)(E步)根据当前(t)的值,按照式(12)计算对角矩阵Θ,按照式(13)计算向量ψ的值:
4)(M步)根据式(14)可以得到新的(t+1),如果‖(t+1)-(t)‖/‖(t)‖<δ,则停止迭代,否则转向步骤3)
稀疏贝叶斯方法与给似然函数加上惩罚函数等方法的不同之处在于:稀疏贝叶斯方法在迭代优化的过程中能使大部分权值γi趋于零,其相应的核函数和训练样本被剔除,只保留少数的权值γi不为零,这样可以保证分类器的稀疏性,其对应的保留下来的训练样本称为相关向量(relevance vector,RV)。在概率模型中,一个重要的特性是该模型包含一个隐含变量即式(15)所示:
式中:η为均值为零单位方差的高斯变量。对于二分类问题,假设分类器定义为y=1如果z(x,γ)≥0,且y=-1当z(x,γ)<0。那么概率模型可以表示为式(16):
则式(5)可以表示为式(17):
则新的距离量可以改写为式(18):
此时已经定义了一个新的距离量,下面将给出算法步骤。
1.2 稀疏条件下的两层分类算法文中提出的稀疏条件下的两层分类算法。先用最近邻算法建立一个局部子空间,即在低层使用欧氏距离为每个测试数据选定k个近邻样本组成子空间,这样可以限制稀疏贝叶斯信息提取时过度延伸;然后在STLCA分类器的高层,用上文中的新距离量从子空间选定近邻来确定测试数据标签。稀疏贝叶斯算法通过EM迭代优化的方法对权值γ进行求解,使大部分权值趋于零,保证了分类器的稀疏性,在噪声情况下也有很好的稳定性。由于在求解过程中直接进行矩阵运算而不同于AdaBoost对训练集多次遍历评估弱分类器性能,因此时间效率较好。
综上所述,STLCA算法描述如下(算法2):
1)利用上文中的算法一对权值向量γ值进行参数估计;
2)在低层,用最近邻算法为每个测试数据选定k1个近邻,建立一个局部子R(x)={x′|D(x,x′)≤d(k1)},其中d(k1)是{D(x,x′)}1N的第k1个值,D(x,x′)是为了判别最近邻的欧氏距离量。
3)在高层,用新的距离量D′(x,x′)将稀疏贝叶斯与KNN算法相结合,从子空间R(x)中选定k2个近邻建立一个新的局部子区域R′(x)={x′|D′(x,x′)≤d(k2)},其中dk2表示{D′(x,x′)}1N的第k2个值,D′(x,x′)是由式(18)定义的为了判别最近邻的新距离量。
4)对于给定的观测值x判定其标签y:y=sign(avex′∈R′(x)y′)。
2 实验与分析本次试验均在MATLAB7.10.0 平台下完成,实验环境为CPU Intel Core(TM) i3-3240 3.40 GHz,内存4 GB。通过UCI数据集和视频烟雾2种数据对算法有效性进行对比验证。
2.1 UCI标准数据集在本节中,使用真实数据集对几种算法进行比较以验证文中提出的算法和其他算法的分类效果及抗噪能力。从UCI数据库中挑选二分类数据集进行测试,数据类别标记为+1和-1,删除属性值缺失的实例,数据的基本信息如表 1所示。
名称 | 样本数 | 特征数 |
banknote | 1372 | 5 |
breast | 699 | 10 |
Clean1 | 476 | 167 |
Clean2 | 6598 | 167 |
contraceptive | 1473 | 10 |
german | 419 | 25 |
haberman | 306 | 3 |
heart | 270 | 14 |
ionosphere | 351 | 34 |
pima | 768 | 8 |
sonar | 208 | 61 |
spambase | 4601 | 58 |
spect | 267 | 23 |
spectf | 267 | 45 |
wdbc | 569 | 31 |
wpbc | 198 | 34 |
实验中所有训练数据特征先进行归一化到零均值和单位方差,测试数据使用相应的均值和方差进行归一化。将每个数据集随机分成2个大小相等的子集,使用其中一个子集作为训练集,另一个作为测试集,然后再将2个子集交换。将过程重复10次(10×2交叉验证),取平均值作为结果。在TLNN和STLCA算法中,近邻数量关系设置为k1=2·k2+1,此处设置k2=3。在AdaBoost与TLNN算法中,以单特征值训练泛化型AdaBoost的弱分类器,最大训练迭代次数T=30。在稀疏贝叶斯和STLCA算法求解向量γ值时,设置ε=10-6和δ=10-3,在计算矩阵H时,核宽值如表 2所示。
数据集 | banknote | breast | clean1 | clean2 | contraceptive | german | haberman | heart |
核宽 | 0.8 | 4 | 23 | 16 | 3.5 | 8 | 1.5 | 4 |
数据集 | ionosphere | pima | sonar | spambase | spect | spectf | wdbc | wpbc |
核宽 | 3.5 | 4 | 16 | 16 | 14 | 14 | 4 | 10 |
将STLCA与AdaBoost、TLNN、KNN和稀疏贝叶斯进行对比,各算法分类错误率如表 3所示。
AdaBoost | TLNN | 稀疏贝叶斯 | STLCA | 3NN | |
banknote | 1.32±0.60 | 0.23±0.23 | 0.20±0.26 | 0.15±0.23 | 0.17±0.14 |
breast | 4.99±1.05 | 3.58±0.92 | 3.33±0.81 | 3.15±0.82 | 3.56±0.54 |
Clean1 | 14.06±2.97 | 13.83±2.87 | 15.35±1.98 | 14.45±2.16 | 11.84±2.80 |
Clean2 | 4.77±0.37 | 7.47±0.57 | 4.15±0.38 | 3.38±0.31 | 3.94±0.28 |
contraceptive | 28.84±1.49 | 29.04±1.61 | 29.96±1.09 | 30.99±1.11 | 37.81±1.25 |
german | 25.94±1.66 | 25.50±1.67 | 24.92±1.52 | 25.14±1.56 | 30.21±1.12 |
haberman | 27.39±3.01 | 26.96±3.21 | 25.20±3.22 | 25.36±3.21 | 29.97±2.62 |
heart | 19.89±2.76 | 18.37±2.72 | 17.22±3.24 | 16.33±2.44 | 18.78±1.99 |
ionosphere | 12.69±2.73 | 14.57±2.28 | 7.17±1.75 | 11.60±1.76 | 16.77±2.07 |
pima | 24.59±1.77 | 24.32±1.57 | 23.05±1.60 | 23.00±1.54 | 27.30±1.91 |
sonar | 20.87±3.64 | 20.19±4.05 | 25.19±4.06 | 24.23±4.46 | 21.83±3.85 |
spambase | 6.92±0.50 | 6.99±0.45 | 7.36±0.40 | 7.58±0.39 | 10.08±0.80 |
spect | 18.87±2.13 | 18.83±2.12 | 18.01±3.52 | 17.71±3.04 | 21.09±4.90 |
spectf | 21.20±2.66 | 20.83±2.90 | 21.05±3.80 | 20.94±3.79 | 28.53±4.24 |
wdbc | 4.63±1.06 | 3.98±1.10 | 3.68±1.39 | 3.42±1.17 | 4.10±0.75 |
wpbc | 26.61±3.63 | 24.90±3.05 | 24.01±4.32 | 23.18±4.07 | 26.88±2.88 |
注:表中数值为错误率+标准差形式。 |
表 3中显示了不同算法数据分类的错误率,文中将错误率最低的数据加黑。从实验结果看,在16组数据中,AdaBoost和TLNN算法各有2组数据取得最低错误率,KNN算法和稀疏贝叶斯算法分别有1组和3组数据取得最低错误率,而STLCA算法在8组数据中取得最优结果。在STLCA算法未取得最优结果的8组数据中仍有3组数据的实验结果优于稀疏贝叶斯方法,可见STLCA算法在分类精度上整体要优于TLNN和稀疏贝叶斯等方法。
任何现实的算法模型在样本学习中必须处理噪声问题,因此,有必要测试在噪声数据的影响下STLCA算法的性能。本文通过对表 1中16组数据引入标签噪声来比较5种算法的抗噪性能。在训练集中随机挑选部分数据,然后调换它们的标签,而其他样本保持不变。这样构造5%、10%、15%、20%的随机噪声数据集。表 4~7给出了4种不同噪声下5种算法分类错误率结果。
AdaBoost | TLNN | 稀疏贝叶斯 | STLCA | 3NN | |
banknote | 4.93±2.86 | 3.27±2.77 | 3.29±2.71 | 3.16±2.70 | 3.29±2.71 |
breast | 7.46±2.37 | 6.36±2.42 | 5.67±2.40 | 5.54±2.37 | 9.27±2.75 |
Clean1 | 19.34±3.21 | 16.56±3.18 | 19.26±3.42 | 18.36±3.89 | 14.22±3.61 |
Clean2 | 7.44±2.32 | 9.85±2.27 | 6.79±1.98 | 6.27±2.07 | 7.61±2.30 |
contraceptive | 29.88±1.37 | 30.48±1.57 | 31.77±1.36 | 32.05±1.21 | 39.86±1.76 |
german | 26.68±1.60 | 26.51±1.68 | 27.56±1.60 | 27.61±1.59 | 32.56±2.00 |
haberman | 28.04±2.95 | 28.17±3.19 | 26.80±3.64 | 26.90±3.79 | 31.76±2.56 |
heart | 22.78±2.95 | 20.93±3.45 | 20.41±4.15 | 20.00±4.11 | 21.30±2.84 |
ionosphere | 17.20±3.18 | 17.23±3.71 | 8.83±2.11 | 13.00±3.25 | 18.31±2.60 |
pima | 26.89±2.38 | 26.59±2.21 | 25.79±1.95 | 25.59± 1.83 | 29.54±2.26 |
sonar | 26.73±5.21 | 25.38±4.76 | 28.94±4.43 | 27.64±4.55 | 22.60±4.47 |
spambase | 9.74±2.08 | 9.57±2.13 | 10.49±2.38 | 10.60±2.55 | 13.97±2.39 |
spect | 21.84±3.38 | 21.47±3.06 | 21.99±3.66 | 21.09±3.87 | 23.87±5.31 |
spectf | 24.02±3.00 | 23.68±3.27 | 22.97±2.73 | 23.01±2.57 | 30.68±3.93 |
wbdc | 9.60±4.73 | 7.20±4.27 | 7.43±2.50 | 6.67±2.33 | 7.45±2.24 |
wpdc | 29.64±4.73 | 27.71±4.27 | 24.64±4.55 | 24.58±4.64 | 30.94±3.72 |
注:表中数值为错误率+标准差形式。 |
% | |||||
AdaBoost | TLNN | 稀疏贝叶斯 | STLCA | 3NN | |
banknote | 10.27±2.79 | 8.48±2.98 | 8.53±2.71 | 8.32±2.57 | 10.09±2.62 |
breast | 12.18±2.47 | 11.30±2.53 | 10.51±2.57 | 10.38±2.56 | 18.59±3.50 |
Clean1 | 24.36±3.53 | 21.60±3.44 | 22.85±4.04 | 22.30±3.93 | 18.75±3.43 |
Clean2 | 12.27±2.41 | 14.18±2.24 | 12.13±2.01 | 11.45±2.08 | 14.20±2.19 |
contraceptive | 32.77±1.72 | 33.30±1.76 | 34.30±1.76 | 34.48±1.56 | 42.07±1.61 |
german | 29.68±2.17 | 29.41±1.91 | 29.74±2.16 | 29.69±2.07 | 35.60±2.19 |
haberman | 31.99±3.11 | 31.60±3.27 | 29.25±2.81 | 29.51±3.13 | 34.41±3.84 |
heart | 27.44±3.65 | 25.37±4.36 | 23.70±4.27 | 23.11±4.23 | 26.85±3.57 |
ionosphere | 23.69±3.75 | 23.54±3.94 | 15.63±4.75 | 18.06±4.25 | 23.00±2.49 |
pima | 29.46±1.49 | 29.29±1.43 | 28.42±1.96 | 28.17±1.90 | 33.38±2.44 |
sonar | 30.72±4.91 | 29.04±4.94 | 31.49±4.01 | 30.53±4.38 | 26.68±4.31 |
spambase | 14.56±2.07 | 14.27±2.20 | 15.42±2.41 | 15.60±2.59 | 20.53±2.02 |
spect | 27.78±3.08 | 26.80±2.95 | 24.55±4.52 | 23.83±4.87 | 27.78±5.30 |
spectf | 28.08±4.01 | 26.99±3.62 | 26.92±2.62 | 26.80±2.45 | 33.76±4.73 |
wbdc | 14.33±4.41 | 12.45±4.07 | 12.17±2.39 | 11.55±2.26 | 13.43±1.98 |
wpdc | 32.71±4.41 | 32.19±4.07 | 26.87±4.32 | 26.82±4.32 | 33.85±4.33 |
注:表中数值为错误率+标准差形式。 |
% | |||||
AdaBoost | TLNN | 稀疏贝叶斯 | STLCA | 3NN | |
banknote | 15.24±2.71 | 13.78±2.68 | 13.90±2.53 | 13.57±2.68 | 17.01±2.44 |
breast | 17.45±2.63 | 16.48±2.45 | 15.66±2.58 | 15.53±2.72 | 27.76±4.45 |
Clean1 | 29.38±4.51 | 26.37±3.60 | 26.02±3.45 | 25.66±3.32 | 24.34±4.12 |
Clean2 | 17.16±2.44 | 18.51±2.45 | 17.04±2.14 | 16.42±2.17 | 20.81±2.08 |
contraceptive | 35.64±1.92 | 36.11±1.90 | 36.13±1.47 | 36.24±1.24 | 43.87±1.57 |
german | 33.04±1.44 | 32.94±1.47 | 32.60±2.06 | 32.75±2.19 | 38.12±2.22 |
haberman | 34.35±3.03 | 34.02±3.15 | 32.03±2.65 | 32.22±2.68 | 36.44±4.89 |
heart | 31.30±3.88 | 29.41±4.09 | 26.96±4.66 | 26.70±4.36 | 31.30±4.73 |
ionosphere | 27.80±3.56 | 27.77±3.85 | 19.29±2.81 | 20.66±3.32 | 27.60±3.88 |
pima | 32.71±1.21 | 32.49±1.45 | 31.47±2.21 | 31.26±2.15 | 36.91±2.57 |
sonar | 35.38±4.62 | 33.27±4.39 | 34.71±5.82 | 33.99±6.05 | 31.11±5.00 |
spambase | 18.87±2.21 | 19.18±2.25 | 20.45±2.22 | 20.62±2.31 | 26.49±1.88 |
spect | 32.74±4.19 | 31.92±4.14 | 26.54±3.90 | 26.28±3.92 | 32.18±6.11 |
spectf | 29.54±4.31 | 29.71±3.93 | 29.32±3.31 | 29.02±3.19 | 36.58±5.26 |
wbdc | 20.53±4.32 | 18.63±4.46 | 17.29±2.47 | 16.73±2.39 | 19.52±2.57 |
wpdc | 37.86±4.32 | 37.55±4.46 | 29.38±2.61 | 29.17±2.59 | 37.66±5.69 |
注:表中数值为错误率+标准差形式。 |
% | |||||
AdaBoost | TLNN | 稀疏贝叶斯 | STLCA | 3NN | |
banknote | 20.28±2.82 | 19.35±2.84 | 19.80±2.64 | 19.18±2.57 | 24.08±2.71 |
breast | 22.43±2.59 | 21.50±2.62 | 21.41±2.51 | 20.53±2.76 | 35.13±4.15 |
Clean1 | 32.11±4.79 | 30.59±4.50 | 30.20±3.60 | 29.92±3.63 | 30.04±4.34 |
Clean2 | 21.98±2.33 | 23.08±2.30 | 21.96±2.09 | 21.26±2.17 | 27.32±2.05 |
contraceptive | 38.65±2.30 | 39.06±2.31 | 39.27±1.76 | 39.39±1.73 | 45.56±1.63 |
german | 37.18±1.89 | 36.88±1.78 | 35.55±1.87 | 35.67±1.97 | 41.50±2.00 |
haberman | 36.80±3.67 | 36.60±3.62 | 34.28±2.84 | 34.18±2.75 | 40.33±4.75 |
heart | 35.26±3.35 | 33.52±3.46 | 31.30±3.55 | 30.96±3.48 | 35.78±4.24 |
ionosphere | 32.11±3.23 | 32.00±3.95 | 27.91±6.32 | 28.14±5.80 | 33.37±4.40 |
pima | 36.49±2.78 | 36.18±2.54 | 34.74±2.64 | 34.21±2.52 | 40.39±2.69 |
sonar | 38.75±5.87 | 37.50±5.72 | 39.37±7.18 | 38.56±6.93 | 35.48±5.51 |
spambase | 23.44±2.14 | 24.07±2.09 | 24.92±2.31 | 25.36±2.24 | 31.89±1.80 |
spect | 35.71±4.22 | 35.08±4.34 | 30.45±3.91 | 29.32±3.81 | 37.48±5.63 |
spectf | 35.53±3.11 | 34.40±3.02 | 32.44±3.50 | 32.41±3.43 | 38.83±5.95 |
wbdc | 26.11±4.62 | 24.15±4.68 | 22.78±2.81 | 22.24±2.81 | 25.72±3.23 |
wpdc | 40.10±4.62 | 38.96±4.68 | 33.91±3.42 | 33.49±3.82 | 41.30±6.18 |
注:表中数值为错误率+标准差形式。 |
将表 4~7给出的 5种算法在标签噪声分布数据错误率最低的数据加黑。从实验结果可以看出,AdaBoost算法在5%、10%、15%、20%的随机噪声数据集中分别有2组、1组、2组、2组数据中取得最优,然而除contraceptive数据集外,其他最优结果数据集并不一致,可见AdaBoost算法有一定波动性,容易受噪声影响。TLNN算法分别在1组、1组、0组、0组数据集中取得最优,表明TLNN算法在噪声条件下性能出现一定退化。稀疏贝叶斯和KNN算法未出现明显波动,性能较为稳定。而STLCA在标签噪声为5%、10%、15%和20%的结果中分别有8组、9组、9组和11组数据取得最优,随着噪声数据增加分类结果变优,表明STLCA算法在噪声情况下有很好的稳定性,泛化能力强。
2.3 视频烟雾检测火灾严重威胁人类的生命和财产安全,因此及时检测和预防火灾具有重要意义,在火灾监控中,烟雾检测对于实现早期火灾预警[15, 16, 17]具有重要作用。
文中将STLCA算法应用到视频烟雾检测中,以验证算法的检测效果。实验中的烟雾视频来源于土耳其Bilkent大学机器视觉研究室(http://signal.ee.bilkent.edu.tr/VisiFire/)视频资源库(http://imagelab.ing.unimore.it/visor/video_categories.asp)。图 4所示为4组实验视频截取第60帧图像的场景,从左至右、从上至下依次为Video1~Video4。
视频分辨率为240×320,实验中将每一帧图像分为60像素×60像素的小块,因此图像被分为3×4块。实验中每组图像数据为从相应视频中每6帧取一帧图像组成数据集,然后将每个数据集随机分成2个大小相等的子集,其中一个为训练集,另一个为测试集,数据集详细信息如表 8所示。
实验中,采取普遍使用的离散余弦变换(discrete cosine transform,DCT)和离散小波变换(discrete wavelet transform,DWT)2种形式[18, 19]进行特征提取并分别进行烟雾检测(其中有烟雾标记为+1)。在采用离散余弦变换(DCT)进行特征提取时,由于低频数据存储该对象的最大信息,因此,将每个对象离散余弦变换后集中于左上角的64个图像系数作为烟雾检测的特征向量。在采用离散小波变换(DWT)进行特征提取时,小波变换是通过对离散时域信号连续的低通和高通滤波的分解:Ck=Ak,(H1,V1,D1),…,(Hk,Vk,Dk),其中Ak是图像k层分解的低频近似系数,以及(Hi,Vi,Di)图像在i层频率分解,通过高通滤波器在3个方向(水平、垂直和对角)获得的详细信息,k层小波变换将原始图像用3k+1个子图像表示。由于将所有这些系数作为特征处理是非常耗时的。为提高效率,本文用推导出的6个特征来表示子图像,这6个特征是算术平均数、几何平均数、标准差、偏度、峰度和熵,此时3层分解共60个特征。
将STLCA算法与文献[20]中采用的AdaBoost算法以及文献[5]中的TLNN算法进行烟雾检测,并采用离散余弦变换和离散小波变换2种特征提取方式进行对比试验。在STLCA算法与TLNN算法中近邻数量关系设置为k1=2·k2+1,设置k2=3。在AdaBoost与TLNN算法中,以单特征值训练泛化型AdaBoost的弱分类器,最大训练迭代次数T=30。在STLCA算法求解向量γ值时,设置ε=10-6和δ=10-2,在计算矩阵H时核宽值选择如表 9所示。
Video1+DCT | Video2+DCT | Video3+DCT | Video4+DCT |
128 | 256 | 128 | 64 |
Video1+DWT | Video2+DWT | Video3+DWT | Video4+DWT |
32 | 64 | 256 | 64 |
实验通过分类准确率和算法运行时间(训练时间+测试时间)2个方面对算法的效率进行评估,算法运行结果如表 10和表 11所示。
% | ||||
算法 | Video1 | Video2 | Video3 | Video4 |
AdaBoost+DCT | 93.59 | 90.56 | 96.12 | 89.97 |
TLNN+DCT | 93.43 | 90.00 | 96.26 | 93.70 |
STLCA+DCT | 95.91 | 93.78 | 96.56 | 96.79 |
AdaBoost+DWT | 92.79 | 88.11 | 96.98 | 91.56 |
TLNN+DWT | 93.75 | 88.22 | 96.77 | 93.53 |
STLCA+DWT | 94.34 | 91.56 | 96.77 | 95.59 |
s | ||||
算法 | Video1 | Video2 | Video3 | Video4 |
AdaBoost+DCT | 40.59 | 81.39 | 178.66 | 330.70 |
TLNN+DCT | 41.49 | 83.78 | 182.57 | 337.61 |
STLCA+DCT | 15.01 | 38.92 | 140.20 | 229.92 |
AdaBoost+DWT | 37.30 | 84.11 | 162.66 | 292.66 |
TLNN+DWT | 47.23 | 76.89 | 163.37 | 301.21 |
STLCA+DWT | 13.36 | 27.21 | 96.45 | 199.19 |
表 10和表 11分别为AdaBoost、TLNN和STLCA算法并结合离散余弦变换和离散小波变换2种方式进行实验,从检测精度和运行时间2个方面得到的实验结果。从实验结果看,4组视频中采用离散余弦变换进行特征提取检测烟雾时,STLCA在4组数据中都取得了最优的结果,在采用离散小波变换进行特征提取进行烟雾检测时,除Video3外在其余3组视频中取得最优结果。从整体实验结果看,STLCA算法在Video1、Video2和Video4等3组视频数据中取得最优结果,在Video3数据中,虽然未取得最优结果,但STLCA算法结合离散小波变换方式检测结果与最优结果非常接近。在时间效率方面,由于AdaBoost与TLNN算法在弱分类器训练时需要多次对训练集进行遍历,时间效率较低。采用STLCA算法进行视频烟雾检测,由于以稀疏贝叶斯方式为基础,使训练时间大幅减小,无论采用离散余弦变换或者离散小波变换,STLCA算法的时间效率都明显优于其他2种算法。因此STLCA算法有明显的优势。
3 结束语文中提出了一种新的在稀疏条件下的2层分类算法(STLCA),先用最近邻算法建立一个局部子空间,这样可以限制稀疏贝叶斯信息提取时过度延伸,然后在STLCA分类器的高层,用稀疏贝叶斯在未标记样本子空间进行信息提取。该方法使用少量核就可以达到很高的分类精度,由于其稀疏性在噪声影响下仍有很好的稳定性,且时间效率高。STLCA算法性能通过在噪声数据以及在视频烟雾检测中的应用得到验证。然而该算法由于需要对矩阵进行运算,在对大量数据组成的矩阵求逆时需要大量内存空间,这也成为制约该算法性能的瓶颈,所以如何提取有效特征对数据矩阵进行压缩,提高运算效率是未来研究的方向。
[1] | COVER T M, HART P E. Nearest neighbor pattern classification[J]. IEEE Transactions on Information Theory, 1967, 13(1): 21-27. |
[2] | GOLDBERGER J, ROWEIS S, HINTON G, et al. Neighborhood components analysis[J]. Advances in Neural Networks, 2005, 16(4): 899-909. |
[3] | DOMENICONI C, GUNOPULOS D. Adaptive nearest classification using support vector machines[C]//Advances in Neural Information Processing Systems. Boston: MIT Press, 2002: 655-672. |
[4] | ZHANG Yungang, ZHANG Changshui, ZHANG D. Distance metric learning by knowledge[J].Pattern Recognition, 2004, 37(1): 161-163. |
[5] | GAO Yunlong, PAN Jinyan, JI Guoli, et al. A novel two-level nearest classification algorithm using an adaptive distance metric[J]. Knowledge Based Systems, 2012, 26: 103-110. |
[6] | FREUND Y, SCHAPIRE R. A Decision-theoretic generalization of on-line learning and application to boosting[J].Journal of Computer and System Sciences,1997,55(1),119-139. |
[7] | FREUND Y, SCHAPIRE R. Experiments with a new boosting algorithm[C]//Proc of the 13th International Conference on Machine Learning. Bari, Italy,1996: 14 8-156. |
[8] | SCHAPIRE R, SINGER Y. Improved boosting algorithms using confidence-rated predictions[J]. Machine Learning, 1999, 37(3): 297-336. |
[9] | 张学工,边肇祺.模式识别:2版[M].北京:清华大学出版社, 2000: 156-158. |
[10] | FIGUEIREDO M A T. Adaptive sparseness for supervised learning [J].IEEE Transactions on Pattern Analysis and Machine Intelligence, 2003, 25(9): 1150-1159. |
[11] | KRISHNAPURAM B, HARTEMINK A J, CARIN L, et al. A Bayesian approach to joint feature select and classifier design[J]. IEEE Trans on Pattern Analysis and Machine Intelligence, 2004, 26(9): 1105-1111. |
[12] | FIGUEIREDO M A T, JAIN A K. Bayesian learning of sparse classifiers[C]//Proceedings of the IEEE Computer Society Conference on Computer Vision and Pattern Recognition. [s.l.], 2001: 35-41. |
[13] | 张旭东,陈锋,高隽,等.稀疏贝叶斯及其在时间序列预测中的应用[J].控制与决策, 2006, 26(5): 585-588.ZHANG Xudong, CHEN Feng, GAO Jun, et al. Sparse Bayesian and its application to time series forecasting[J]. Control and Decision, 2006, 26(5): 585-588. |
[14] | TIPPING M E. Sparse Bayesian learning and the relevance vector machine[J]. Journal of Machine Learning Research, 2001(1): 211-244. |
[15] | CHEN Juan, HE Yaping, WANG Jian. Multi-feature fusion based fast video flame detection[J]. Building and Environment, 2010, 45(5):1113-1122. |
[16] | KO B C, KWAK J, NAM J. Wildfire smoke detection using temporal-spatial features and random forest classifiers[J]. Optical Engineering, 2012, 51(1): 1-10. |
[17] | 罗胜,JIANG Yuzheng.视频检测烟雾的研究现状[J].中国图象图形学报,2013,18(10):1225-1236.LUO Sheng, JIANG Yuzheng. State-of-art of video based smoke detection algorithms[J].Journal of Image and Graphics, 2013, 18(10): 1225-1236. |
[18] | GUBBI J, MARUSIC S, PALANISWAMI M. Smoke detection in video using wavelets and support vector machines[J]. Fire Safety Journal, 2009, 44(8): 1110-1115. |
[19] | 盛家川.基于小波变换的国画特征提取及分类[J].计算机科学, 2014, 41(2): 317-319.SHENG Jiachuan. Automatic categorization of traditional Chinese paintings based on wavelet transform[J]. Computer Science, 2014, 41(2): 317-319. |
[20] | WANG Zhijie, BEN Salah, ZHANG Hong. Discrete wavelet transform based steam detection with Adaboost[C]//International Conference on Information and Automation. Shenyang, China, 2012: 542-547. |