如何处理在RapidMiner回归问题上的高基数变量

tlg265tlg265 成员职位:1贡献我
你好,我正在研究一个回归问题,一个数据集看起来像:
> str (myds)

'data.frame': 841500字节。$ score: num 0 0 0 0 0 0 0 0 0 0 0…$ amount_sms_received: int 0 0 0 0 0 0 3 0 0 3…$ amount_emails_received: int 3 36 3 12 0 63 9 6 63…$ distance_from_server: int 17 17 7 7 7 14 10 7 34 10…$年龄:int 17 44 16 16 30 29 26 18 19 43…$ points_earned: int 929 655 286 357 571 833 476 414 726 857…$ registrationYYYY:因子w/ 2级…$ registrationDateMM:因子w/ 9级…$ registrationDateDD:因子w/ 31级… $ registrationDateHH : Factor w/ 24 levels ... $ registrationDateWeekDay : Factor w/ 7 levels ... $ catVar_05 : Factor w/ 2 levels ... $ catVar_06 : Factor w/ 140 levels ... $ catVar_07 : Factor w/ 21 levels ... $ catVar_08 : Factor w/ 1582 levels ... $ catVar_09 : Factor w/ 70 levels ... $ catVar_10 : Factor w/ 755 levels ... $ catVar_11 : Factor w/ 23 levels ... $ catVar_12 : Factor w/ 129 levels ... $ catVar_13 : Factor w/ 15 levels ... $ city : Factor w/ 22750 levels ... $ state : Factor w/ 55 levels ... $ zip : Factor w/ 26659 levels ... $ catVar_17 : Factor w/ 2 levels ... $ catVar_18 : Factor w/ 2 levels ... $ catVar_19 : Factor w/ 3 levels ... $ catVar_20 : Factor w/ 6 levels ... $ catVar_21 : Factor w/ 2 levels ... $ catVar_22 : Factor w/ 4 levels ... $ catVar_23 : Factor w/ 5 levels ...
我的目标是预测目标变量:“分数”。

我正在使用R,但我也想使用Rapidminer。根据我目前所读到的,我认为这两个工具可以很好地协同工作。

在链接:http:// mod.m.turtlecreekpls.com/#app上,我指定了上面显示的数据集的性质,它建议我使用KNN来预测目标变量:“分数”。

这里我主要关注的是高基数变量:{"city", "zip"}。

解决这个问题的方法之一是使用“目标编码”(又名“平均编码”)。但正如这里所述:

https:// maxhalford.github.io /博客/ target-encoding-done-the-right-way /

目标编码的问题有一个名字:过度拟合 。事实上,当平均值中使用的值的数量很低时,依赖平均值并不总是一个好主意。你必须记住,你正在训练的数据集是一个更大集合的样本。这意味着你在训练集中发现的任何工件在应用于另一个数据集(即测试集)时可能都不成立。”

看起来处理这种副作用的方法是“正则化”。

我一直在使用R,其中一个最流行的包来处理这个问题是:“vtreat”,在这里使用:

https:// www.r-bloggers.com/vtreat-prepare-data/

当然,这个包很棒,但我想我需要一段时间才能熟悉。

我的问题是:Rapidminer也可以做“目标编码”吗?在同一时间做:“正规化”?可能是非常直观的UI有帮助。
Tghadially

答案

  • Telcontar120Telcontar120 主持人,RapidMiner认证分析师,RapidMiner认证专家,会员职位:1635年独角兽
    您可以通过使用聚合操作符在RapidMiner中完成“目标编码”,其中您使用X类别作为“分组”,Y的平均值作为聚合函数,然后将其作为新属性连接回数据集。
    (我必须考虑这在回归上下文中是如何真正不同的含义,而不是简单地使用虚拟编码将原始分类属性转换为数字,并将所有这些都投入到回归中。)乍一看,它们似乎不太可能产生截然不同的结果。)

    无论哪种方式,对于高基数的名义变量,这都不是一个好主意,因为过度拟合。而且我不会依赖于正则化(这是RapidMiner中GLM操作符中支持的选项)来修复它。

    在我看来,你最好在建模预处理之前进行适当的特征工程,以组合相关的类别(对于任何具有高基数的属性)。例如,不使用完整的邮政编码,而只使用前1-3个字符并以这种方式组合(在RapidMiner中很容易进行转换),以获得更大、更有代表性的样本。或者使用City到Metro Region映射数据集(稍微复杂一些,但仍然可行)来加入Metro Region,并使用它。RapidMiner有大量的分组和组合操作符来支持这种ETL(连接、离散、映射、替换、替换稀有值、生成属性等)。




    布莱恩·T。
    Lindon合资企业
    乐鱼平台进入来自认证RapidMiner专家的数据科学咨询
    MartinLiebig Tghadially sgenzer
登录注册置评。