GenMatch()中的pop.size参数分别为genoud()

时间:2018-01-29 11:32:12

标签: r genetic-algorithm

我使用GenMatch在R中使用遗传匹配,以找到可比较的治疗组和对照组来估计治疗效果。匹配的默认代码如下所示:

GenMatch(Tr, X, BalanceMatrix=X, estimand="ATT", M=1, weights=NULL,
         pop.size = 100, max.generations=100,...)

包中pop.size参数的描述是:

  

人口规模。这是genoud使用的人数   解决优化问题。证明遗传的定理   算法发现好的解决方案在种群规模上是渐近的。   因此,重要的是该值不小。见genoud   了解更多详情。

查看gnoud其他说明是:

  

......这个数字的值可以有几个限制   是。无论用户请求的人口规模如何,数量都是   自动调整以确定相关限制   很满意。这些限制源于所需要的   几个运营商。特别是运营商6(简单   Crossover)和8(Heuristic Crossover)需要偶数个   个人工作 - 即,他们需要两个父母。因此,   pop.size变量和运算符集必须是这三个   运营商有很多人可以合作。如果这   没有发生,人口规模会自动增加,直到   满足这种约束。

我想知道gnoud(resp。GenMatch)如何合并种群大小参数。算法是否从群体中随机选择 n 个体进行优化?

我查看了包描述和源代码,但没有找到明确的答案。

1 个答案:

答案 0 :(得分:0)

此处的“个人”一词不是指样本中的个体(即数据集中的个体单位),而是指遗传算法使用的虚拟个体。这些个体是要优化的一组变量的个体图。它们与您的样本无关。

遗传匹配的目标是为每个协变量选择一组缩放因子(return RefreshIndicator( onRefresh: () { setState(() {}); }, ... ) 文档将其称为权重),以权衡该协变量在缩放的欧几里得距离匹配中的重要性。我不是遗传算法的专家,但是我对遗传算法的理解是,它对这些比例因子的最佳值进行了一系列猜测,从最佳标准的意义上保持了“做得最好”的猜测。 (由Matching中的fit.func确定),并创建新的猜测,作为对保留的猜测的轻微扰动。然后,它多次重复此过程,模拟自然选择如何优化生物的特征。每个猜测就是GenMatch()描述中“单个”一词的含义,它对应于算法每一代的猜测次数。

pop.size始终使用整个样本(除非您提供了卡尺,精确匹配要求或通用支持规则之类的限制);它不会从样本中抽取单位来构成每个猜测(这就是其他机器学习环境中的包容)。

由于遗传算法本身是一个随机过程,因此结果将在很多次运行中发生变化。它可以渐近收敛于一个解,但是由于它是在块状表面上进行优化的,因此每次在具有有限代数和有限总体大小(即GenMatch())的有限样本中每次都会找到不同的解。