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

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

“data.frame”:841500奥林匹克广播服务公司。$ score: num 0 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…$ age: 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 ...
我的目标是预测目标变量:“score”。

我用的是R,但我也想用Rapidminer。根据我目前所了解的情况,我认为这两种工具可以很好地协同工作。

在链接:http://mod.www.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类别作为您的“分组by”和Y的平均值作为您的聚合函数,然后将其作为一个新属性加入到您的数据集中。
    (我必须仔细思考这在回归上下文中的真正不同之处,而不是简单地使用名义编码将原始的类别属性转换为带有虚拟编码的数值,然后将所有这些都扔到回归中。乍一看,它们似乎不太可能导致显著不同的结果。)

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

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




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