这里的所有功能请求都由我们的产品团队监控。

投票问题!

拥有高票数(通常≥10票)的想法在我们的路线图中被优先考虑。

注意:如果你想建议一个新的功能,请发布一个新的问题和标签为“功能请求”。谢谢你!

功能请求:可选折叠号的批量验证

varunm1varunm1 主持人,职位:1207年独角兽
亲爱的所有,

如果可能的话,我有一个简单的功能请求可以在交叉验证操作符中添加。目前,我们有一个“批验证”选项,可以帮助设置不同的批,并根据批的数量划分折叠。我正在寻找一种增强,有助于控制使用这些批次创建的折叠数量。

例如,如果我有与100个主题相关的数据,每个主题有10个样本,则有1000个数据样本。如果我需要做一个离开一次主题交叉验证,我需要设置100批ID(每个主题一个),并在交叉验证操作符做批验证。如果我只需要尝试5个批次,其中每个批次有20个学生,我需要再次使用5个批次ID生成属性,而不是这样,我们可以提供一个选项,它使用首先创建的100个批次ID作为索引,并根据该索引划分5个子集。

这将有助于在Leave one batch out和groupKfold验证之间切换。
问候,
Varun
https://www.varunmandalapu.com/

是安全的。遵循预防措施并保持社交距离

标记:
lionelderkrikor varunm1 yzan
2
2票

开放投票·最后一次更新

刺激- 897

评论

  • yzanyzan 成员职位:66独角兽
    2020年3月编辑
    对于工程师来说,所需的功能可以通过以下伪代码获得:
    函数value_to_fold = batch_validation(batch_attribute, fold_count, seed): unique_values = unique(batch_attribute) randomly_permuted_values = randperm(unique_values, seed) value_to_fold = map() fold = 0对于randomly_permuted_values中的值:value_to_fold。Put (value, fold) fold =模(fold+1, fold_count)
    它返回一个映射,该映射将batch属性中的唯一值映射到适当的折叠中。提出的解决方案的优点是:
    1. 给定随机种子,赋值是确定的。
    2. 但是如果我们改变种子,我们将(很可能)得到不同的折叠赋值。
    3. 在batch属性中唯一值的计数>=所需折叠的计数之前,我们可以保证每个折叠至少有一个样本。这是一个非常理想的属性:我们不想要2-fold交叉验证失败仅仅因为其中一个训练集是空的。
    还要注意,有时我们不仅希望通过单个属性,还希望通过多个属性来分配折叠。就我个人而言,我喜欢这幅插图http://www.rogermstein.com/wp-content/uploads/SobehartKeenanStein2000.pdf我们可能想要估计一个模型的泛化能力,不仅是跨主题的,而且是跨时间的。

    如何在RapidMiner实现多属性批处理验证?从GUI的角度来看,只需在交叉验证操作符中添加另一个高级参数“拆分属性”(复选框)。当这个复选框被选中时,不相关的参数就会消失(比如“split on batch attribute”)。但是出现了一个新的参数(按钮):“Select attributes”,打开一个选择属性的对话框(类似于Select attributes操作符中的“Select attributes”)。这个对话框将有两列(类似于设置角色操作符中的“设置额外角色”对话框):左边是“属性名称”,右边是“箱子的最大计数”。“最大箱数”的默认值应该是一个小的、严格正的整数(例如:3)。

    我们怎么处理“最大箱数”呢?我们必须根据属性的类型对每个“批处理属性”进行“bin”。选项有:
    1. 标称的:使用上面的伪代码进行分组。
    2. 数值:使用离散频率操作符(我喜欢有相同大小的折叠,如果可能的话。因此选择离散化算法)。
    3. 日期:使用日期到数字运算符。然后把它当作一个数值属性来对待。
    日期属性的处理可能看起来过于简单(特别是如果您习惯于使用“滚动窗口回测”和其他类似的算法)。但这实际上是Bergmeir和Hyndman推荐的方法:https://www.sciencedirect.com/science/article/pii/S0167947317302384(他们将这种“简单化”的方法与一些“更彻底”的方法进行了比较。“简单化”的方法赢了)。如果海因德曼说没问题,我也同意。

    一旦批处理属性被绑定(即:对于每个批处理属性,我们都有从值到折叠的映射),我们可以运行以下嵌套循环(在伪代码中):
    函数training_set, testing_set = training_testing_split(exampleSet, batch_attribute_to_map, testing_fold): training_set = set() testing_set = set()对于exampleSet中的row: is_training = True is_testing = True对于batch_attribute, value_to_fold在batch_attribute_to_map: assigned_fold = value_to_folds。如果assigned_fold == testing_fold: is_testing = False如果assigned_fold == testing_fold: is_training = False如果is_training: training_set.add(exampleSet[row,:])如果is_testing: testing_set.add(exampleSet[row,:])
    它返回训练集和测试集。注意,当使用多个batch属性时,不会将样本分配到training_settesting_set而是进入training_set, testing_setnot_used_in_this_split-这是我们在一次估计模型对多个属性的泛化能力时必须支付的税。

    为了向用户反馈验证是如何执行的,交叉验证操作符可以在“分割批属性”时包含“添加批属性”选项勾选(类似于提供“添加集群属性”的分段操作符)。

    我很抱歉这篇文章太长了。但是,快速估计模型跨id类属性(可能跨越时间)的泛化能力的能力是如此有用,以至于我觉得有必要写这篇文章。
  • sgenzersgenzer 管理员,版主,员工,RapidMiner认证分析师,社区经理,成员,大学教授,PM版主职位:2959年社区经理
    哇,谢谢@yzan。我已经复制粘贴了你的整个帖子到我们的内部系统的工程师。
  • MartinLiebigMartinLiebig 管理员,版主,员工,RapidMiner认证分析师,RapidMiner认证专家,大学教授职位:3362年RM数据科学家
    @yzan,感谢您的贡献!
    - RapidMin乐鱼平台进入er数据科学服务主管
    德国多特蒙德
登录注册置评。