我有一个特点就是个人收入。它的范围从 1 万到 1.16 亿。我有大约 300k+ 条记录。
显然,我不能按原样使用此功能,因为它会扭曲模型输出并且存在异常值。
我正在考虑将所有值从 0 标准化为 1。同时还消除异常值。就像大多数值从 30k 到 200k 一样,那么收入为 200k 的人将获得 1 左右的分数。
我有2个问题?1)这种方法是否合理或者我应该以不同的方式思考它。2)以及如何规范化和/或缩放值以避免异常值的建议?
我有一个特点就是个人收入。它的范围从 1 万到 1.16 亿。我有大约 300k+ 条记录。
显然,我不能按原样使用此功能,因为它会扭曲模型输出并且存在异常值。
我正在考虑将所有值从 0 标准化为 1。同时还消除异常值。就像大多数值从 30k 到 200k 一样,那么收入为 200k 的人将获得 1 左右的分数。
我有2个问题?1)这种方法是否合理或者我应该以不同的方式思考它。2)以及如何规范化和/或缩放值以避免异常值的建议?
我可以想出很多想法,但它们是否有用取决于您正在构建的内容:
我特别喜欢第二个,因为我真的很喜欢基于树的方法,它在这些方法中大放异彩。
标准化相当普遍。我认为您可能需要考虑数据的分布以及是否要对异常值做任何事情。一些流行的归一化技术:min-max和z-score. 通过谷歌搜索,您将看到大量资源。从我处理收入数据的有限时间来看,有时您可能希望使用对数刻度进行测试,而前 1% 的人也倾向于扭曲标准化。
我认为收入的分配将是幂律分配。但我认为你最应该担心的不是输入特征,而是输出,因为输出对你的模型有直接影响,而输入特征的影响还不确定。并且不要只是消除异常值,首先要研究特征(尤其是输出)的分布。
我认为幂律是分布是机器学习中需要驯服的强大野兽。这可能会鼓励每个规模的多模型方法,但我会尝试制作类似以下的功能:示例(116,299,900):百万 <- 116 千 <- 299 个 <- 900。百万、千和一是新功能。然后我将对每个特征应用规范化。