agn*_*zka 8 machine-learning feature-selection genetic-algorithm
我有数据集nxm,其中有n个观察值,每个观察值由m个属性的m个值组成.每次观察也观察到分配给它的结果.我很大,对我的任务来说太大了.我试图找到仍然代表整个数据集的m个属性的最佳和最小子集,以便我只能使用这些属性来教授神经网络.
我想用遗传算法.问题是fittness功能.它应该告诉生成的模型(属性子集)如何仍然反映原始数据.而且我不知道如何针对整个集合评估某些属性的子集.当然,我可以使用神经网络(以后将使用这个选定的数据)来检查子集的好坏 - 误差越小,子集越好.但是,在我的情况下,这需要一点时间,我不想使用这个解决方案.我正在寻找一些其他方式,最好只对数据集进行操作.
我想到的是:使用子集S(通过遗传算法找到),修剪数据集,使其仅包含子集S的值,并检查此数据序列中的多少观察值不再可区分(具有相同属性的相同值),而具有不同的结果值.数字越大,它的子集就越差.但在我看来,这似乎有点太耗费精力.
有没有其他方法可以评估属性子集仍然代表整个数据集的程度?
此成本函数应该按照您的要求执行:将与每个子集组成的要素对应的因子载荷相加.
总和越高,响应变量的可变性份额就越大,仅用这些特征来解释.如果我理解OP,这个成本函数是OP的忠实翻译"代表整个集合".
减少代码很简单:
计算数据集的协方差矩阵(首先删除包含响应变量的列,即可能是最后一个).如果您的数据集是mxn(列x行),则此协方差矩阵将为nxn,主对角线下方为"1".
接下来,对该协方差矩阵执行特征值分解 ; 这将给出响应变量中总变异性的比例,由该特征值(每个特征值对应于特征或列)贡献.[ 注意,奇异值分解(SVD)通常用于此步骤,但它是不必要的 - 特征值分解更简单,只要矩阵是正方形,协方差矩阵总是如此,它总能完成工作.
您的遗传算法将在每次迭代时返回一组候选解决方案(在您的情况下为特征子集).GA中的下一个任务,或任何组合优化,是通过其成本函数得分对这些候选解决方案进行排名.在您的情况下,成本函数是该子集中每个要素的特征值比例的简单求和.(我想你会想要缩放/标准化那个计算,以便更高的数字是最不适合的.)
示例计算(使用python + NumPy):
>>> # there are many ways to do an eigenvalue decomp, this is just one way
>>> import numpy as NP
>>> import numpy.linalg as LA
>>> # calculate covariance matrix of the data set (leaving out response variable column)
>>> C = NP.corrcoef(d3, rowvar=0)
>>> C.shape
(4, 4)
>>> C
array([[ 1. , -0.11, 0.87, 0.82],
[-0.11, 1. , -0.42, -0.36],
[ 0.87, -0.42, 1. , 0.96],
[ 0.82, -0.36, 0.96, 1. ]])
>>> # now calculate eigenvalues & eivenvectors of the covariance matrix:
>>> eva, evc = LA.eig(C)
>>> # now just get value proprtions of each eigenvalue:
>>> # first, sort the eigenvalues, highest to lowest:
>>> eva1 = NP.sort(eva)[::-1]
>>> # get value proportion of each eigenvalue:
>>> eva2 = NP.cumsum(eva1/NP.sum(eva1)) # "cumsum" is just cumulative sum
>>> title1 = "ev value proportion"
>>> print( "{0}".format("-"*len(title1)) )
-------------------
>>> for row in q :
print("{0:1d} {1:3f} {2:3f}".format(int(row[0]), row[1], row[2]))
ev value proportion
1 2.91 0.727
2 0.92 0.953
3 0.14 0.995
4 0.02 1.000
Run Code Online (Sandbox Code Playgroud)
所以它是上面的第三列值(每个特征一个)被求和(有选择地,取决于您使用成本函数评估的给定子集中存在哪些特征).
| 归档时间: |
|
| 查看次数: |
3556 次 |
| 最近记录: |