目录
自组织数据挖掘(Group Method of Data Handling,GMDH)是一种归纳算法,它基于自组织原则来构建模型。GMDH算法通过逐步筛选输入变量和构建中间模型,最终得到一个最优复杂度模型。在数据分组处理中,GMDH算法可以应用于聚类分析、分类和特征选择等任务。GMDH算法的核心思想是从简单到复杂逐步构建模型。它从一个简单的模型开始,然后逐步增加模型的复杂度,直到达到某个停止准则。在每一步中,GMDH算法都会评估当前模型的性能,并选择最优的模型作为下一步的基础。通过这种方法,GMDH算法能够自动地选择输入变量的最优子集,并构建一个具有最优复杂度的模型。
1.GMDH的基本原理
GMDH是一种自组织、自适应的建模方法,最初由苏联科学家提出,主要用于数据分析和预测模型构建。在数据分组处理中,GMDH主要通过逐步递增结构的方式自动识别和选择最优的输入变量组合,形成有效的预测或分类模型。
其基本结构如下:
应用到数据分组的具体步骤:
- 初始阶段,采用全部或者预筛选后的变量集合。
- 应用GMDH算法生成并优化模型,得到最具解释力的输入变量组合。
- 根据这些变量组合,计算每个样本点在这组变量下的特征向量。
- 利用聚类算法(如K-means、层次聚类等)对样本的特征向量进行分组。
GMDH(Group Method of Data Handling)网络是一种前馈神经网络,它特别适用于预测任务。这种网络的特点是其结构在训练过程中并不是固定的,而是会不断地变化。以下是对GMDH网络的一些主要特点的详细介绍:
- 建模过程自组织控制:GMDH网络在建模过程中不需要任何初始假设。它的建模是基于预定的标准(例如最小二乘法)来选择表现最佳的神经元或模型。这种评估和选择模型的迭代过程可以确保网络以最佳方式适应底层数据模式,从而增强其预测能力。
- 最优复杂性及高精度预测:GMDH网络能够自组织多层神经网络每层的最佳结构,这意味着它能够自动保留有用的变量并删除多余的变量。此外,它还能够自动选择最佳的网络层数和每层的神经元数目,以实现最优复杂性和高精度预测。
- 算法的自组织性:GMDH算法通过系统各输入单元交叉组合产生一系列的活动神经元。每个神经元都具有选择最优传递函数的功能。然后,从已产生的一代神经元中选择若干与目标变量最为接近的神经元,这些被选出的神经元会强强结合再次产生新的神经元。这个过程会重复进行,直到具有最佳复杂性的模型被选出。
2.GMDH数据分组
在分类任务中,GMDH算法可以用于特征选择和分类器构建。具体步骤如下:
(1)特征选择:首先,使用GMDH算法对输入特征进行筛选。通过构建一系列中间模型并评估它们的性能,GMDH算法能够自动地选择出对分类任务最有用的特征子集。这可以减少特征空间的维度,提高分类器的效率和准确性。
(2)分类器构建:在选定的特征子集上构建分类器。可以使用各种常见的分类算法(如决策树、支持向量机、神经网络等)来构建分类器。在构建过程中,同样可以使用GMDH算法来逐步增加模型的复杂度并选择最优模型。最终得到的分类器即为基于GMDH的分类结果。
需要注意的是,在分类任务中,GMDH算法可以直接对数据进行处理并实现分组(即分类)。因此,在实际应用中,需要根据具体的数据集和任务需求来选择合适的特征选择方法和分类器构建策略。
3.matlab程序
..........................................................
% Train GMDH
gmdh = GMDH(params, Inputs, Targets);
% GMDH Model on Train
Outputs{i} = ApplyGMDH(gmdh, Inputs);
end
% Converting cell to matrix
for i = 1 : Variation
Generated(:,i)=Outputs{i};
end
% Converting matrix to cell
P = size(Input); P = P (1,2);
S = size(Outputs{i});
SO = size (meas);
SF = SO (1,2);
SO = SO (1,1);
SS = S (1,2);
R = SS*SO/P;
for i = 1 : Variation
Generated1{i}=reshape(Generated(:,i),[R,SF]);
end
% Converting cell to matrix (the last time)
Synthetic = cell2mat(Generated1');
% K-means clustering to get the labels
[idx,C] = kmeans(Synthetic,classes);
%% Plot data and classes
Feature1=1;
Feature2=3;
f1=meas(:,Feature1); % feature1
f2=meas(:,Feature2); % feature 2
ff1=Synthetic(:,Feature1); % feature1
ff2=Synthetic(:,Feature2); % feature 2
figure('units','normalized','outerposition',[0 0 1 1])
subplot(2,2,1)
plot(meas, 'linewidth',1); title('Original Data');
ax = gca; ax.FontSize = 12; ax.FontWeight='bold'; grid on;
subplot(2,2,2)
plot(Synthetic, 'linewidth',1); title('Synthetic Data');
ax = gca; ax.FontSize = 12; ax.FontWeight='bold'; grid on;
subplot(2,2,3)
gscatter(f1,f2,Target,'rkgb','.',20); title('Original');
ax = gca; ax.FontSize = 12; ax.FontWeight='bold'; grid on;
subplot(2,2,4)
gscatter(ff1,ff2,idx,'rkgb','.',20); title('Synthetic');
ax = gca; ax.FontSize = 12; ax.FontWeight='bold'; grid on;
%% Train and Test
% Training Synthetic dataset by SVM
Mdlsvm = fitcecoc(Synthetic,idx); CVMdlsvm = crossval(Mdlsvm);
SVMError = kfoldLoss(CVMdlsvm); SVMAccAugTrain = (1 - SVMError)*100;
% Predict new samples (the whole original dataset)
[label5,score5,cost5] = predict(Mdlsvm,meas);
sizlbl=R;
% Test error and accuracy calculations
a=0;b=0;c=0;
for i=1:R
if label5(i)== 1
a=a+1;
elseif label5(i)==2
b=b+1;
else
label5(i)==3
c=c+1;
end;end;
erra=abs(a-50);errb=abs(b-50);errc=abs(c-50);
err=erra+errb+errc;TestErr=err*100/R;SVMAccAugTest=100-TestErr; % Test Accuracy
% Result SVM
AugResSVM = [' Synthetic Train SVM "',num2str(SVMAccAugTrain),'" Synthetic Test SVM"', num2str(SVMAccAugTest),'"'];
disp(AugResSVM);
up4031
4.仿真结果
自回归过程是GMDH方法的另一个核心步骤,它通过迭代的方式逐步构建模型。在每一次迭代中,GMDH都会根据当前的模型误差选择新的输入变量,并更新模型参数。这个过程会一直持续到模型误差达到预设的阈值或迭代次数达到预设的上限为止。