【问题标题】:Sagemaker - Random Cut Forest - Feature Normalization? Pre-Processing?Sagemaker - 随机森林 - 特征归一化?预处理?
【发布时间】:2019-12-05 19:04:21
【问题描述】:

我无法理解 RCF 算法,尤其是它如何预期/预期数据或应完成的预处理?例如,我有大约 50 万条记录的以下数据/特征(带有示例值):

我的 RCF 模型的结果(针对 57 个特征的 500K 记录进行训练 - 数量、30 个国家/地区和 26 个虚拟类别)非常关注数量特征(例如,所有异常都高于约 1000.00,绝对没有变化基于国家或类型)。

此外,我还对金额字段进行了标准化,结果也不是那么强。事实上,可以肯定地说我的结果很糟糕,我显然错过了一些东西。

总的来说,我正在寻找一些关于正确使用功能的指导(再次 - 1 个数量字段和 2 个分类字段和虚拟 1 和 0 - 导致大约 57 个字段)。我想知道使用 kmeans 之类的东西是否会更好。

编辑:这里有一些上下文......我想知道:
1) 加权 - 有没有办法给某些变量赋予权重(即,一个分类变量比另一个更重要)。例如,我使用 Country 和 Category 作为关键属性,并希望给予 Category 比 Country 更多的权重。
2) 上下文 - 我如何确保在其同行(分类数据)的上下文中考虑异常值?例如,一笔 5000 美元的“机票”费用交易不是该类别的异常值,而是任何其他类别的异常值。我可以创建 N 个模型,但这会变得混乱和繁琐,对吧?

我浏览了大部分可用的文档 (https://docs.aws.amazon.com/sagemaker/latest/dg/rcf_how-it-works.html),但找不到任何描述这个的东西!

非常感谢您提前提供的帮助!

编辑:在我什至没有半合理的结果的这一点上不确定它是否重要,但我使用了以下超参数:
num_samples_per_tree=256,
num_trees=100

【问题讨论】:

    标签: scikit-learn amazon-sagemaker feature-engineering


    【解决方案1】:

    我从未使用过 Amazon RCF,但一般来说,基于树的模型在使用 One Hot Encoding(或虚拟编码)时表现不佳。从这个意义上说,我宁愿使用数字编码(给出从 1 到 len(category) 的数字)或二进制编码器(同样的东西,但使用二进制变量)。这应该允许树对这些变量进行更有意义的拆分。

    在超参数方面很难说,num_samples_per_trees 取决于您期望的异常值的比率,而 num_trees 会影响每个分区中的数据量,从而影响单个树的大小,因此它取决于数据集的大小。

    尝试更改这些内容,如果您没有发现任何改进,您可以尝试不同的东西。但老实说,我建议 DBSCAN 而不是 Kmeans,但据我所知,它们都需要定义点之间的距离或度量,这并非易事,因为您使用的是分类变量和数字变量的混合

    编辑:
    1 - 不,我认为没有办法在 RCF 中对特征进行加权,只要我知道,通常在任何基于树的算法中都没有办法做到这一点。但是,如果您使用基于距离的方法(分层聚类、Kmeans 等),您可以定义自己的距离度量,该度量对您的特征具有不同的权重
    2 - 好吧,这就是算法的用途。它应该根据所有特征的分布来查找异常值,而不仅仅是一个。

    如果您愿意,您也可以尝试隔离森林。它不需要任何指标,在我看来它比 RCF 更容易理解。

    【讨论】:

    • Davide DN - 谢谢。我现在意识到这一点...... DBSCAN 看起来很有希望,甚至可能来自 sklearn 的 OPTICS。我将首先使用 RCF 测试数字编码。我还在上面的问题中添加了一些上下文。你介意检查一下吗?
    • 我确实为类别执行了一些数字标记,但我可以看到模型可能没有对具有 25 个值(“类别”)的变量执行有意义的拆分。我可以想象它为拆分到的那个字段选择了一些值来拆分,但这当然没有意义。因此,它仍然过于依赖 value 字段来判断它是否是异常值。我不知道如何考虑这个类别变量。感谢您的任何进一步想法! PS - 我也在研究 DBSAN / OPTICS 模型。
    • 更莫名其妙的是,当我将 RCF 归结为两个变量时,一个连续测量(不变)和一个单一编码变量(如果 XXX,则为 0,如果 YYY,则为 1),仍然不好差异化。它实际上只关注连续测量 - 即,超过 XXX 的任何东西都是异常值。呃 - 我一定是错过了什么。
    • 嗯,如果 XXX 和 YYY 的连续变量分布相同,则很容易出现这种情况
    猜你喜欢
    • 2018-06-17
    • 2020-05-16
    • 2015-12-16
    • 2015-09-28
    • 2021-05-09
    • 2019-12-06
    • 2022-11-05
    • 2014-09-03
    • 2019-01-28
    相关资源
    最近更新 更多