我使用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 个体进行优化?
我查看了包描述和源代码,但没有找到明确的答案。
答案 0 :(得分:0)
此处的“个人”一词不是指样本中的个体(即数据集中的个体单位),而是指遗传算法使用的虚拟个体。这些个体是要优化的一组变量的个体图。它们与您的样本无关。
遗传匹配的目标是为每个协变量选择一组缩放因子(return RefreshIndicator(
onRefresh: () {
setState(() {});
},
...
)
文档将其称为权重),以权衡该协变量在缩放的欧几里得距离匹配中的重要性。我不是遗传算法的专家,但是我对遗传算法的理解是,它对这些比例因子的最佳值进行了一系列猜测,从最佳标准的意义上保持了“做得最好”的猜测。 (由Matching
中的fit.func
确定),并创建新的猜测,作为对保留的猜测的轻微扰动。然后,它多次重复此过程,模拟自然选择如何优化生物的特征。每个猜测就是GenMatch()
描述中“单个”一词的含义,它对应于算法每一代的猜测次数。
pop.size
始终使用整个样本(除非您提供了卡尺,精确匹配要求或通用支持规则之类的限制);它不会从样本中抽取单位来构成每个猜测(这就是其他机器学习环境中的包容)。
由于遗传算法本身是一个随机过程,因此结果将在很多次运行中发生变化。它可以渐近收敛于一个解,但是由于它是在块状表面上进行优化的,因此每次在具有有限代数和有限总体大小(即GenMatch()
)的有限样本中每次都会找到不同的解。