A. 请问,遗传算法优化的神经网络中的权值和阈值是怎样的选择变异过程呢
如果安装了遗传算法GAOT工具箱,可以直接用ga函数,会自动进行各类操作。如果要自己编程,则选择用轮盘赌原则、交叉用实数方法(a*x1+(1-a)*x2)、变异也是随机给一个增量(x+(1-a)*b)。
你红框框出来的部分是从染色体中提取神经网络权值和阈值,染色体的排序是隐层权值、隐层阈值、输出层权值、输出层阈值。
ga函数的用法:function [x,endPop,bPop,traceInfo] = ga(bounds,evalFN,evalOps,startPop,opts,...
termFN,termOps,selectFN,selectOps,xOverFNs,xOverOps,mutFNs,mutOps)
% Output Arguments:
% x - the best solution found ring the course of the run 求得的最优解
% endPop - the final population 最终得到的种群
% bPop - a trace of the best population 最优种群的一个搜索轨迹
% traceInfo - a matrix of best and means of the ga for each generation 每一代种群的最优个体和均值
B. 大数据挖掘常用的方法有哪些
1.基于历史的MBR分析
基于历史(Memory-Based Reasoning)的MBR分析方法最主要的概念是用已知的案例(case)来预测未来案例的一些属性(attribute),通常找寻最相似的案例来做比较。
MBR中有两个主要的要素,分别为距离函数(distance function)与结合函数(combination function)。距离函数的用意在找出最相似的案例;结合函数则将相似案例的属性结合起来,以供预测之用。
MBR的优点是它容许各种型态的数据,这些数据不需服从某些假设。另一个优点是其具备学习能力,它能借由旧案例的学习来获取关于新案例的知识。较令人诟病的是它需要大量的历史数据,有足够 的历史数据方能做良好的预测。此外记忆基础推理法在处理上亦较为费时,不易发现最佳的距离函数与结合函数。其可应用的范围包括欺骗行为的侦测、客户反应预测、医学诊疗、反应的归类等方面。
2.购物篮分析
购物篮分析(Market Basket Analysis)最主要的目的在于找出什么样的东西应该放在一起?商业上的应用在借由顾客的购买行为来了解是什么样的顾客以及这些顾客为什么买这些产品, 找出相关的联想(association)规则,企业借由这些规则的挖掘获得利益与建立竞争优势。举例来说,零售店可借由此分析改变置物架上的商品排列或是设计 吸引客户的商业套餐等等。
购物篮分析基本运作过程包含下列三点:
1. 选择正确的品项:这里所指的正确乃是针对企业体而言,必须要在数以百计、千计品项中选择出真正有用的品项出来。
2. 经由对共同发生矩阵(co-occurrence matrix)的探讨挖掘出联想规则。
3. 克服实际上的限制:所选择的品项愈多,计算所耗费的资源与时间愈久(呈现指数递增),此时必须运用一些技术以降低资源与时间的损耗。
购物篮分析技术可以应用在下列问题上:针对信用卡购物,能够预测未来顾客可能购买什么。对于电信与金融服务业而言,经由购物篮分析能够设计不同的服务组合以扩大利润。保险业能借由购物篮分析侦测出可能不寻常的投保组合并作预防。对病人而言,在疗程的组合上,购物篮分析能作为是否这些疗程组合会导致并发症的判断依据。
3.决策树
决策树(Decision Trees)在解决归类与预测上有着极强的能力,它以法则的方式表达,而这些法则则以一连串的问题表示出来,经由不断询问问题最终能导出所需的结果。典型的决策树顶端是一个树根,底部有许多的树叶,它将纪录分解成不同的子集,每个子集中的字段可能都包含一个简单的法则。此外,决策树可能有着不同的外型,例如二元 树、三元树或混和的决策树型态。
4.遗传算法
遗传算法(Genetic Algorithm)学习细胞演化的过程,细胞间可经由不断的选择、复制、交配、突变产生更佳的新细胞。基因算法的运作方式也很类似,它必须预先建立好一个模式,再经由一连串类似产生新细胞过程的运作,利用适合函数(fitness function)决定所产生的后代是否与这个模式吻合,最后仅有最吻合的结果能够存活,这个程序一直运作直到此函数收敛到最佳解。基因算法在群集 (cluster)问题上有不错的表现,一般可用来辅助记忆基础推理法与类神经网络的应用。
5.聚类分析
聚类分析(Cluster Detection)这个技术涵盖范围相当广泛,包含基因算法、类神经网络、统计学中的群集分析都有这个功能。它的目标为找出数据中以前未知的相似群体,在许许多多的分析中,刚开始都运用到群集侦测技术,以作为研究的开端。
6.连接分析
连接分析(Link Analysis)是以数学中之图形理论(graph theory)为基础,借由记录之间的关系发展出一个模式,它是以关系为主体,由人与人、物与物或是人与物的关系发展出相当多的应用。例如电信服务业可藉连结分析收集到顾客使用电话的时间与频率,进而推断顾客使用偏好为何,提出有利于公司的方案。除了电信业之外,愈来愈多的营销业者亦利用连结分析做有利于 企业的研究。
7.OLAP分析
严格说起来,OLAP(On-Line Analytic Processing;OLAP)分析并不算特别的一个数据挖掘技术,但是透过在线分析处理工具,使用者能更清楚的了解数据所隐藏的潜在意涵。如同一些视觉处理技术一般,透过图表或图形等方式显现,对一般人而言,感觉会更友善。这样的工具亦能辅助将数据转变成信息的目标。
8.神经网络
神经网络是以重复学习的方法,将一串例子交与学习,使其归纳出一足以区分的样式。若面对新的例证,神经网络即可根据其过去学习的成果归纳后,推导出新的结果,乃属于机器学习的一种。数据挖掘的相关问题也可采类神经学习的方式,其学习效果十分正确并可做预测功能。
9.判别分析
当所遭遇问题它的因变量为定性(categorical),而自变量(预测变量)为定量(metric)时,判别分析为一非常适当之技术,通常应用在解决分类的问题上面。若因变量由两个群体所构成,称之为双群体 —判别分析 (Two-Group Discriminant Analysis);若由多个群体构成,则称之为多元判别分析(Multiple Discriminant Analysis;MDA)。
a. 找出预测变量的线性组合,使组间变异相对于组内变异的比值为最大,而每一个线性组合与先前已经获得的线性组合均不相关。
b. 检定各组的重心是否有差异。
c. 找出哪些预测变量具有最大的区别能力。
d. 根据新受试者的预测变量数值,将该受试者指派到某一群体。
10.逻辑回归分析
当判别分析中群体不符合正态分布假设时,逻辑回归分析是一个很好的替代方法。逻辑回归分析并非预测事件(event)是否发生,而是预测该事件的机率。它将自变量与因变量的关系假定是S行的形状,当自变量很小时,机率值接近为零;当自变量值慢慢增加时,机率值沿着曲线增加,增加到一定程度时,曲线协 率开始减小,故机率值介于0与1之间。
C. 遗传算法实现数字水印用MATLAB,程序怎么写啊可以把我的积分都给了你
一、嵌入水印信息的MATLAB程序
首先读入原始图象并设置参数,然后嵌入水印信息,程序代码如下:
clear
%
%读入原图象
trueImage=imread('C:\Documents and Settings\ks001\My Documents\My Pictures\lean.tif');
alfa=.1;
LENGTH=2500;
subplot(2,2,1);
imshow(trueImage);
title('原始图象');
%
%对原图象进行DCT变换
dctF1=dct2('C:\Documents and Settings\ks001\My Documents\My Pictures\lean.tif');
subplot(2,2,2);
imshow(log(abs(dctF1)),[ ]);
title('DCT cofficient matrix');
[m,n]=size(dctF1);
%
%产生水印序列并对其排序
radon('right',10);
watermark1=radon(LENGTH,1);
subplot(2,2,3);
title('watermark seqence')
[Y0,I0]=sort(watermark1);
%
%找出水印嵌入位置(幅值较大的n个频域成分)
A=dctF1(:);
[Y1,I1]=sort(A);
x=m*n;
k=LENGTH;
M=zeros(x,1);
%
%修改幅值较大的n个频域成分的幅值,嵌入水印(因为两个问题不同,所以有两个注释符)
for i=1:x
if k>=1
M(x)=Y1(x)*(1+alfa*Y0(k));
k=k-1;
else
M(x)=Y1(x);
end
x=x-1;
end
N=zeros(x,1);
x=m*n;
for i=1:x
N(I1(i))=M(i);
end
a=1;
for j=1:n
for i=1:m
dctF2(i,j)=N(a);
a=a+1;
end
end
%
%DCT反变换,得到嵌入水印的图象
idctF1=idct2(dctF2);
subplot(2,2,4);
imshow(idctF1,[ ]);
title('嵌入水印后的图象');
end
二、提取恢复水印信息的MATLAB程序
水印提取过程是水印嵌入过程的逆过程,相对嵌入过程来说比较复杂,难度较大,下面是水印提取检测的MATLAB程序代码:
function watermark_detect(image,Y1,I0,waterMark1)
%image:嵌入水印的图象
%Y1:原始图象的序列排序
%I0:原始水印的序列排序
%waterMark1:原始水印序列
%
%对嵌入水印图象进行DCT变化
dctW1=dct2(image);
%
%找出幅值较大的系数
B=dtW1(:);
[Y1,I2]=sort(B);
[m1,n1]=size(dctW1);
y=m1*n1;
k=length(waterMark1);
N0=zeros(k,1);
%
%提取水印序列
while k>=1
N0(k)=(Y2(y)-Y1(y))/alfa/Y1(y);
k=k-1;
y=y-1;
end
k=length(waterMark1);
waterMark2=zeros(k,1);
for i=1:k
waterMark2(I0(i))=N0(i);
end
%
%选取50个测试序列,其中第10个为提取出的水印
figure;
for i=1;50
if i==10;
waterMark=waterMark2;
else
waterMark=rand(k,1);
end
%计算各个序列与原来水印序列的相关值
c=waterMark'*waterMark1/sqrt(waterMark'*waterMark);
stem(i,c);
hold on;
end
%
三、接下来对嵌入水印的图象进行不同的攻击,用以测试水印的鲁棒性。
程序的目的和程序代码如下:
%
%攻击实验
disp('input you choice according to the following
image processing operation:');
disp('0--exit');
disp('1--smoothing patterns');
%添加噪音
disp('2--adding uniorm noise 添加噪音');
%滤波
disp('3--adding filter [10 10] 滤波');
%剪切
disp('4--cutting part of the image 剪切');
%压缩
disp('5--10 quality JPEG compressing 压缩');
%旋转45度
disp('6--rotate 45 旋转');
%
d=input('please input you choice(请输入您的选择):');
while d~=0
switch d
case 1
watermark_detect(idctF1,Y1,I0,waterMark1);
case 2
WImage2=idctF1;
noise0=10*rand(size(WImage2));
WImage2=WImage2+noise0;
figure;
imshow(WImage2,[ ]);
title('adding uniform noise 添加噪音');
watemark_detect(WImage2,Y1,I0,waterMark1);
case 3
WImage3=idctF1;
H=fspcial('gaussian高斯',[10,10],5);
WImage3=imfilter(WImage3,H);
figure;
imshow(WImage3,[ ]);
title(through filter [10,10] 滤波');
watemark_detect(WImage3,Y1,I0,waterMark1);
case 4
WImage4=idctF1; WImage4(1:128,1;128)=256;
figure;
imshow(WImage4);
title('cutting part of the image 剪切');
watemark_detect(WImage4,Y1,I0,waterMark1);
case 5
WImage5=idctF1;
WImage5=im2double(WImage5);
cnum=10;
dctm=dctmtx(8);
p1=dctm;
p2=dctm.';
imageDCT=blkproc(WImage5,[8,8],'p1*p2*x',dctm,dctm.');
DCTvar=im2col(imageDCT,[8,8],'distinct').';
n=size(DCTvar,1);
DCTvar=(sum(DCTvar.*DCTvar)-(sum(DCTvar)/n).^2)/n;
[m,order]=sort(DCTvar);
cnum=64-cnum;
mask=ones(8,8);
mask(order(1:cnum))=zeros(1,cnum);
im88=zeros(9,9);
im88(1:8,1:8)=mask;
im128128=kron(im88(1:8,1:8),ones(16));
dctm=dctmtx(8);
p1=dctm.';
p2=mask(1;8,1:8);
p3=dctm;
Wimage5=bikproc(imageDCT,[8,8],'p1*(x.8p2)*p3',dctm.',mask(1:8,1:8),dctm);
figure;
imshow(Wimage5);
title('JPEG Image 压缩');
watemark_detect(WImage5,Y1,I0,waterMark1);
case 6 WImage6=idctF1;
WImage6=imrotate(WImage6,45,'bilinear','corp');
figure;
imshow(Wimage6);
title('rotate 45 旋转');
watemark_detect(WImage6,Y1,I0,waterMark1);
case 0
break;
otherwise
error('you have a valid value(您的输入错误)');
end
d=input('please input you choice(请输入您的选择):');
end
%结束
D. 遗传算法
遗传算法是从代表问题可能潜在解集的一个种群开始的,而一个种群则由经过基因编码的一定数目的个体组成。每个个体实际上是染色体带有特征的实体。染色体作为遗传物质的主要载体,即多个基因的集合,其内部表现(即基因型)是某种基因的组合,它决定了个体形状的外部表现,如黑头发的特征是由染色体中控制这一特征的某种基因组合决定的。因此,在一开始需要实现从表现型到基因型的映射即编码工作。由于仿照基因编码的工作很复杂,我们往往进行简化,如二进制编码。初始种群产生之后,按照适者生存和优胜劣汰的原理,逐代(generation)演化产生出越来越好的近似解。在每一代,根据问题域中个体的适应度(fitness)大小挑选(selection)个体,并借助于自然遗传学的遗传算子(genetic operators)进行组合交叉(crossover)和变异(mutation),产生出代表新的解集的种群。这个过程将导致种群自然进化一样的后生代种群比前代更加适应环境,末代种群中的最优个体经过编码(decoding),可以作为问题近似最优解。
5.4.1 非线性优化与模型编码
假定有一组未知参量
xi(i=1,2,…,M)
构成模型向量m,它的非线性目标函数为Φ(m)。根据先验知识,对每个未知量都有上下界αi及bi,即αi≤x≤bi,同时可用间隔di把它离散化,使
di=(bi-αi)/N (5.4.1)
于是,所有允许的模型m将被限制在集
xi=αi+jdi(j=0,1,…,N) (5.4.2)
之内。
通常目标泛函(如经济学中的成本函数)表示观测函数与某种期望模型的失拟,因此非线性优化问题即为在上述限制的模型中求使Φ(m)极小的模型。对少数要求拟合最佳的问题,求目标函数的极大与失拟函数求极小是一致的。对于地球物理问题,通常要进行杀重离散化。首先,地球模型一般用连续函数表示,反演时要离散化为参数集才能用于计算。有时,也将未知函数展开成已知基函数的集,用其系数作为离散化的参数集xi,第二次离散化的需要是因为每一个未知参数在其变化范围内再次被离散化,以使离散模型空间最终包含着有限个非线性优化可选择的模型,其个数为
地球物理数据处理教程
其中M为未知参数xi的个数。由此式可见,K决定于每个参数离散化的间隔di及其变化范围(αi,bi),在大多数情况下它们只能靠先验知识来选择。
一般而言,优化问题非线性化的程度越高,逐次线性化的方法越不稳定,而对蒙特卡洛法却没有影响,因为此法从有限模型空间中随机地挑选新模型并计算其目标函数 Φ(m)。遗传算法与此不同的是同时计算一组模型(开始时是随机地选择的),然后把它进行二进制编码,并通过繁殖、杂交和变异产生一组新模型进一步有限的模型空间搜索。编码的方法可有多种,下面举最简单的例说明之,对于有符号的地球物理参数反演时的编码方式一般要更复杂些。
假设地球为有三个水平层的层次模型,含层底界面深度hj(j=1,2,3)及层速度vj(j=1,2,3)这两组参数。如某个模型的参数值为(十进制):
h1=6,h2=18,h3=28,单位为10m
v1=6,v2=18,v3=28,单位为 hm/s
按正常的二进制编码法它们可分别用以下字符串表示为:
地球物理数据处理教程
为了减少字节,这种编码方式改变了惯用的单位制,只是按精度要求(深度为10m,波速为hm/s)来规定参数的码值,同时也意味着模型空间离散化间距di都规格化为一个单位(即10m,或hm/s)。当然,在此编码的基础上,还可以写出多种新的编码字符串。例如,三参数值的对应字节顺序重排,就可组成以下新的二进制码串:
地球物理数据处理教程
模型参数的二进制编码是一种数学上的抽象,通过编码把具体的非线性问题和生物演化过程联系了起来,因为这时形成的编码字符串就相当于一组遗传基因的密码。不仅是二进制编码,十进制编码也可直接用于遗传算法。根据生物系统传代过程的规律,这些基因信息将在繁殖中传到下一带,而下一代将按照“适者生存”的原则决定种属的发展和消亡,而优化准则或目标函数就起到了决定“适者生存”的作用,即保留失拟较小的新模型,而放弃失拟大的模型。在传带过程中用编码表示的基因部分地交合和变异,即字符串中的一些子串被保留,有的改变,以使传代的过程向优化的目标演化。总的来说,遗传算法可分为三步:繁殖、杂交和变异。其具体实现过程见图5.8。
图5.8 遗传算法实现过程
5.4.2 遗传算法在地震反演中的应用
以地震走时反演为例,根据最小二乘准则使合成记录与实测数据的拟合差取极小,目标函数可取为
地球物理数据处理教程
式中:Ti,0为观测资料中提取出的地震走时;Ti,s为合成地震或射线追踪算出的地震走时;ΔT为所有合成地震走时的平均值;NA为合成地震数据的个数,它可以少于实测Ti,0的个数,因为在射线追踪时有阴影区存在,不一定能算出合成数据Tj,0。利用射线追踪计算走时的方法很多,参见上一章。对于少数几个波速为常数的水平层,走时反演的参数编码方法可参照上一节介绍的分别对深度和速度编码方法,二进制码的字符串位数1不会太大。要注意的是由深度定出的字符串符合数值由浅到深增大的规律,这一约束条件不应在杂交和传代过程中破坏。这种不等式的约束(h1<h2<h3…)在遗传算法中是容易实现的。
对于波场反演,较方便的做法是将地球介质作等间距的划分。例如,将水平层状介质细分为100个等厚度的水平层。在上地壳可假定波速小于6400 m/s(相当于解空间的硬约束),而波速空间距为100m/s,则可将波速用100m/s为单位,每层用6位二进制字符串表示波速,地层模型总共用600位二进制字符串表示(l=600)。初始模型可随机地选取24~192个,然后通过繁殖杂交与变异。杂交概率在0.5~1.0之间,变异概率小于0.01。目标函数(即失拟方程)在频率域可表示为
地球物理数据处理教程
式中:P0(ωk,vj)为实测地震道的频谱;ωk为角频率;vj为第j层的波速;Ps(ωk,vj)为相应的合成地震道;A(ωk)为地震仪及检波器的频率滤波器,例如,可取
A(ω)=sinC4(ω/ωN) (5.4.6)
式中ωN为Nyquist频率,即ωN=π/Δt,Δt为时间采样率。参数C为振幅拟合因子,它起到合成与观测记录之间幅度上匹配的作用。C的计算常用地震道的包络函数的平均比值。例如,设E[]为波动信号的包络函数,可令
地球物理数据处理教程
式中:tmax为包络极大值的对应时间;J为总层数。包络函数可通过复数道的模拟取得。
用遗传算法作波速反演时失拟最小的模型将一直保存到迭代停止。什么时候停止传代还没有理论上可计算的好办法,一般要显示解空间的搜索范围及局部密度,以此来判断是否可以停止传代。值得指出的是,由(5.4.4)和(5.4.5)式给出的目标函数对于有误差的数据是有问题的,反演的目标不是追求对有误差数据的完美拟合,而是要求出准确而且分辨率最高的解估计。
遗传算法在执行中可能出现两类问题。其一称为“早熟”问题,即在传代之初就随机地选中了比较好的模型,它在传代中起主导作用,而使其后的计算因散不开而白白浪费。通常,增加Q值可以改善这种情况。另一类问题正相反,即传相当多代后仍然找不到一个特别好的解估计,即可能有几百个算出的目标函数值都大同小异。这时,最好修改目标函数的比例因子(即(5.4.5)式的分母),以使繁殖概率Ps的变化范围加大。
对于高维地震模型的反演,由于参数太多,相应的模型字符串太长,目前用遗传算法作反演的计算成本还嫌太高。实际上,为了加快计算,不仅要改进反演技巧和传代的控制技术,而且还要大幅度提高正演计算的速度,避免对遗传算法大量的计算花费在正演合成上。
E. 计算智能的概要
计算智能的主要方法有人工神经网络、遗传算法、遗传程序、演化程序、局部搜索、模拟退火等等。这些方法具有以下共同的要素:自适应的结构、随机产生的或指定的初始状态、适应度的评测函数、修改结构的操作、系统状态存储器、终止计算的条件、指示结果的方法、控制过程的参数。计算智能的这些方法具有自学习、自组织、自适应的特征和简单、通用、鲁棒性强、适于并行处理的优点。在并行搜索、联想记忆、模式识别、知识自动获取等方面得到了广泛的应用。
典型的代表如遗传算法、免疫算法、模拟退火算法、蚁群算法、微粒群算法,都是一种仿生算法,基于“从大自然中获取智慧”的理念,通过人们对自然界独特规律的认知,提取出适合获取知识的一套计算工具。总的来说,通过自适应学习的特性,这些算法达到了全局优化的目的。
F. 大数据挖掘有哪些方法
方法1.可视化分析
无论是日志数据分析专家还是普通用户,数据可视化都是数据分析工具的最基本要求。可视化可以直观地显示数据,让数据自己说话,让听众看到结果。
方法2.数据挖掘算法
如果说可视化用于人们观看,那么数据挖掘就是给机器看的。集群、分割、孤立点分析和其他算法使我们能够深入挖掘数据并挖掘价值。这些算法不仅要处理大量数据,还必须尽量缩减处理大数据的速度。
方法3.预测分析能力
数据挖掘使分析师可以更好地理解数据,而预测分析则使分析师可以根据可视化分析和数据挖掘的结果做出一些预测性判断。
方法4.语义引擎
由于非结构化数据的多样性给数据分析带来了新挑战,因此需要一系列工具来解析,提取和分析数据。需要将语义引擎设计成从“文档”中智能地提取信息。
方法5.数据质量和主数据管理
数据质量和数据管理是一些管理方面的最佳实践。通过标准化流程和工具处理数据可确保获得预定义的高质量分析结果。
G. 用R语言实现遗传算法
模式识别的三大核心问题包括:
特征选择 和 特征变换 都能够达到降维的目的,但是两者所采用的方式方法是不同的。
特征提取 主要是通过分析特征间的关系,变换原来特征空间,从而达到压缩特征的目的。主要方法有:主成分分析(PCA)、离散K-L变换法(DKLT)等。
特征选择 选择方法是从原始特征集中挑选出子集,是原始特征的选择和组合,并没有更改原始特征空间,特征选择的过程必须确保不丢失重要特征。主要方法有:遗传算法(GA)、统计检验法、分支定界法等。
这里主要讲讲特征选择中 遗传算法 以及它的R语言实现(因为要写作业,虽然不一定写对了)。
遗传算法受进化论启发,根据“物竞天择,适者生存”这一规则,模拟自然界进化机制,寻找目标函数的最大值。
采用遗传算法对男女生样本数据中的身高、体重、鞋码、50m成绩、肺活量、是否喜欢运动共6个特征进行特征选择。
由于有6个特征,因此选用6位0/1进行编码,1表示选中该特征。
适应度函数的实现
示例
结果如下
有什么不对的地方欢迎大家在评论区指出。