模式识别的三大核心问题包括:
特征选择 和 特征变换 都能够达到降维的目的,但是两者所采用的方式方法是不同的。
特征提取 主要是通过分析特征间的关系,变换原来特征空间,从而达到压缩特征的目的。主要方法有:主成分分析(PCA)、离散K-L变换法(DKLT)等。
特征选择 选择方法是从原始特征集中挑选出子集,是原始特征的选择和组合,并没有更改原始特征空间,特征选择的过程必须确保不丢失重要特征。主要方法有:遗传算法(GA)、统计检验法、分支定界法等。
这里主要讲讲特征选择中 遗传算法 以及它的R语言实现(因为要写作业,虽然不一定写对了)。
遗传算法受进化论启发,根据“物竞天择,适者生存”这一规则,模拟自然界进化机制,寻找目标函数的最大值。
采用遗传算法对男女生样本数据中的身高、体重、鞋码、50m成绩、肺活量、是否喜欢运动共6个特征进行特征选择。
由于有6个特征,因此选用6位0/1进行编码,1表示选中该特征。
适应度函数的实现
示例
结果如下
有什么不对的地方欢迎大家在评论区指出。
有两种方法,一种是用matlab自带的遗传算法工具箱;还有一种是自己编写遗传算法解决问题。第二种方法的话,网上可以找到很多遗传算法的matlab代码,我也可以提供。第一种的话,有一定的局限性。tags: R
Categories: 遗传参数
···
param= function(){
GA=as.matrix(read.table("GA.csv",h=F,sep=","))
PE=as.matrix(read.table("PE.csv",h=F,sep=","))
Parity3PE =as.matrix(read.table("Parity3PE.csv",h=F,sep=","))
R=as.matrix(read.table("R.csv",h=F,sep=","))
P1 = as.matrix(GA+PE+Parity3PE+R)
h2 = as.matrix((diag(GA)/diag(P1)))
r =as.matrix(diag(GA+PE+Parity3PE) / diag(P1))
diagGC=diag(x = 1, nrow(GA), ncol(GA), names = TRUE)
diag(diagGC) <- sqrt(diag(GA))
GC=solve(diagGC) % % GA % % solve(t(diagGC))
diagPEC=diag(x = 1, nrow(PE), ncol(PE), names = TRUE)
diag(diagPEC) <- sqrt(diag(PE+Parity3PE))
PEC = solve(diagPEC)% % (PE+Parity3PE) % % solve(t(diagPEC))
diagPC=diag(x = 1, nrow(P1), ncol(P1), names = TRUE)
diag(diagPC) <- sqrt(diag(P1))
PC = solve(diagPC)% % P1 % % solve(t(diagPC))
return(list(h2,r,GC,PC))
}
···
param()