1.有一组基因芯片数据,样本的个数为 216, 其中肺癌 90 个,其余为正常人, 每个样本的基因芯片数据维度为 10500。 计划用 2/3 数据训练,剩下测试。
1)要求用
GA
算法实现从中选取
10 个与肺癌相关的关键的基因,编写 matlab 程序实现预测模型。
% 假设P是个矩阵,里面存放着216个维度为10500的基因芯片数据
PP=P(:,1:144); %训练集216×(2/3)
PT=P(:,145:216);%测试集216×(1/3)
TR=(PP);
TE=(PT);
%假设T1是TR的目标集
%假设T2是TE的目标集
options=gaoptimset('PopulationSize',50,'Generations',20,'PlotFcns',@gaplotbestf);%调用遗传算法工具箱,种群数50,迭代数20
spread=5;
FitnessFunction=@(x)fit_crab_features(x,TR,T1,TE,T2,spread);
n=10; %关键数据的值
LB=[1 ... 1]; %10个1
UB=[10500 ... 10500]; %10个10500
[x,fval]=ga(FitnessFunction,n,[],[],[],[],LB,UB,[],options);
有一组基因芯片数据,样本的个数为 216, 其中肺癌 90 个,其余为正常人, 每个样本的基因芯片数据维度为 10500。 计划用 2/3 数据训练,剩下测试。
2)1.设计
RBF 精确神经网络的预测模型, 标注隐含层的神经元的个数, 以及隐含层的权值是如何计算的, 以及采用的激活函数.。
2. 编写 matlab 简单程序实现预测模型。rbf+wavalet
隐含层的神经元的个数:216×2/3 = 144个 (隐含层神经元的个数=用于训练的样本的个数)
隐含层的权值如何计算:隐含层的权值就是输入矩阵的转置。
激活函数:
% 第一步用小波对数据进行处理:
% 假设X是个矩阵,里面存放着216个维度为10500的基因芯片数据
lev=5; %小波分解的层数
nam='db7'; %小波的名字
for i=1:216
[C,L]= wavedec(X(i,:),lev,nam);
a = appcoef(C,L,nam,lev);
P(i,:)=a(:);
end
PN=mapminmax(double(P));
P=PN’;
PP=P(:,1:144); %训练集 216×(2/3)
PT=P(:,145:216); %测试集 216×(1/3)
TR=(PP);
TE=(PT);
%假设T是TR的目标集
%第二步对小波处理后的数据建立RBF神经网络:
spread=10;
net=newrbe(TR,T,spread);
out=sim(net,TE);
2. 有 10 个学生, 每人 8 张黑白照片, 照片大小为 128X96, 拿出 5 张训练, 3 张测试。
1)1. 画出
BP 神经网络的预测模型, 一个隐含层,
40 个隐含神经元, 同时写出隐含层和输出层权值的维度,输入矩阵的维度, 输出矩阵的维度,以及采用的激活函数。
2. 编写出matlab程序。
激活函数:
%第一步:使用PCA对人脸数据进行降维:
%假设P是个矩阵,存储着所有的照片数据
PP=[P(1,1:5)...P(10,1:5)];%PP是训练集
PT=[P(1,6:8)...P(10,6:8)];%PT是测试集
[coeff]=pca(PP);
TR=PP*coeff';
TE=PT*coeff';
TR=TR(1:5,:); %得到训练集降维后的矩阵,想降到n维,就写1:n,这里是降到5维。
TE=TE(1:5,:);
TR=mapstd(TR); %降维后的训练集标准化
TE=mapstd(TE); %降维后的测试集标准化
%设T为TR的目标集
net=newff(minmax(TR),[111 10],{'logsig' 'logsig'},'traingdx');
%[111 10]第一个值是隐含层神经元的个数I,I=Sqrt(128×96+10)=111。第二个值是输出的个数为10(10个人)。
net.trainParam.epochs=1000;
net.trainParam.goal=0.001;
[net,tr]=train(net,TR,T);
out=sim(net,TE);
有 10 个学生, 每人 8 张黑白照片, 照片大小为 128X96, 拿出 5 张训练, 3 张测试。
2)1. 画出
CNN 的预测模型,
使用一个卷积层和池化层,
16 个 5X5 的过滤核, 过滤步长为 3, 池化的大小为 2X2,步长为 2。写出权值矩阵以及神经元的个数,即 feature map 的维度。
2. 编写 matlab 程序实现预测模型。
预测模型:
权值矩阵的大小:
公式:(h×w×c+1)×Number of Filters
在题目中h×w即为5×5 c为1(
灰度图或者说黑白图的c为1,彩色图的c为3)
结果:(5×5×1+1)×16 = 26×16 =416
神经元的个数:
求神经元的个数,先求出feature map的大小,然后再乘上filter的个数
求feature map大小的公式: (InputSize - FilterSize + 2×Padding) / Stride+1
Padding不用管,如果题目给出Padding的值就照着代进去。
Stride是步长。
结果:第一维大小 (128-5)/3 + 1 = 42 第二维大小(96-5)/3 + 1 = 31 所以feature map的大小为 42 × 31
所以神经元的个数为: 42×31×16 = 20832
% 假设训练集为TR 目标集为TT
layers=[imageInputLayer([128 96 1]); %128×96的黑白照片 黑白第三个值是1 彩色第三个值是3
convolution2dLayer(5,16,'Stirde',3); %16个5X5 的过滤核, 过滤步长为 3
reluLayer();
maxPooling2dLayer(2,'Stride',2); %池化的大小为 2X2,步长为 2
fullyConnectedLayer(10); % 全连接层10个输出(10个人)
softmaxLayer();
classificationLayer()];
options=trainingOptions('sgdm');
net=trainNetwork(TR,TT,layers,options);
3. 有 30000 个维度为 21000 的数据, PCA 和 WAVELET 特征提取,那个更适合, 为什么?如果做离散 WAVELET 三层分解, 提取特征的维度是多少?
PCA,PCA更适合用于高维数据的降维。 如果做离散Wavelet三层分解,提取特征的维度是 30000×21000× (1/8) (几层就乘几个1/2)
4.
写出我们所学的特征提取和特征选取方法,以及有指导的学习和无指导学习的方法。
特征提取的方法:BP、RBF、SOM、PCA、Wavelet 、CNN
特征选取的方法:GA
有指导的学习方法:BP、RBF、CNN
无指导的学习方法:SOM
5.
写出以下本课程所学智能技术的英文全名称和中文名称,并连接下面算法的关系
1.BP 反向传播 Back Propagation
2.RBF 径向基函数 Radial Basis Function
3.SOM 自组织映射 Self-organizing Maps
4.PCA 主成分分析技术 Principal Components Analysis
5.Wavelet 小波 Wavelet
6.GA 遗传算法 Genetic Algorithm
7.CNN 卷积神经网络 Convolutional Neural Networks
各个算法的关系: BP、RBF、CNN属于前馈神经网络中的多层前馈神经网络 ,属于有指导的学习方法
SOM属于自组织神经网络,属于无指导的学习方法
PCA、Wavelet、GA用于数据处理