数据预处理后,预测结果的取值是否还需要还原?

0
数据预处理时对于数值型数据常常需要做log1p等转换,使得数据符合正态分布。如果回归问题的模型训练真实值也做了这样的转换,预测结果以后是不是也需要再取自然对数转换回来?我看的例子为什么预测以后不再做转换呢?有人知道吗?
已邀请:
0

博观 - 数据方案解决专家 2018-11-12 回答

第一,你看的例子可能太少,有的例子是需要转换的;
第二,有的例子预测不转换,是因为很多机器学习案例,就是一个例子,其目的在于预测结果的最佳,而不是预测出来的结果用于现实,所以常常在得到最优预测结果就结束了,而不会去考虑转换;
第三,取自然对数转换回来很容易,也就是一个函数就行了,所以很多人可能会忽略了这一步
0

Kiwi2021 2021-07-14 回答

随机森林
随机森林允许单个决策树使用特征的最大数量。 Python为最大特征数提供了多个可选项。 下面是其中的几个:

Auto/None :简单地选取所有特征,每颗树都可以利用他们。这种情况下,每颗树都没有任何的限制。

sqrt :此选项是每颗子树可以利用总特征数的平方根个。 例如,如果变量(特征)的总数是100,所以每颗子树只能取其中的10个。“log2”是另一种相似类型的选项。

0.2:此选项允许每个随机森林的子树可以利用变量(特征)数的20%。如果想考察的特征x%的作用, 我们可以使用“0.X”的格式。

max_features如何影响性能和速度?

增加max_features一般能提高模型的性能,因为在每个节点上,我们有更多的选择可以考虑。 然而,这未必完全是对的,因为它降低了单个树的多样性,而这正是随机森林独特的优点。 但是,可以肯定,你通过增加max_features会降低算法的速度。 因此,你需要适当的平衡和选择最佳max_features。 B. n_estimators:

在利用最大投票数或平均值来预测之前,你想要建立子树的数量。 较多的子树可以让模型有更好的性能,但同时让你的代码变慢。 你应该选择尽可能高的值,只要你的处理器能够承受的住,因为这使你的预测更好更稳定。 C. min_sample_leaf:

如果您以前编写过一个决策树,你能体会到最小样本叶片大小的重要性。 叶是决策树的末端节点。 较小的叶子使模型更容易捕捉训练数据中的噪声。 一般来说,我更偏向于将最小叶子节点数目设置为大于50。在你自己的情况中,你应该尽量尝试多种叶子大小种类,以找到最优的那个。

1) RF划分时考虑的最大特征数max_features: 可以使用很多种类型的值,默认是”None”,意味着划分时考虑所有的特征数;如果是”log2”意味着划分时最多考虑log2Nlog2N 个特征;如果是”sqrt”或者”auto”意味着划分时最多考虑N−−√N 个特征。如果是整数,代表考虑的特征绝对数。如果是浮点数,代表考虑特征百分比,即考虑(百分比xN)取整后的特征数。其中N为样本总特征数。一般来说,如果样本特征数不多,比如小于50,我们用默认的”None”就可以了,如果特征数非常多,我们可以灵活使用刚才描述的其他取值来控制划分时考虑的最大特征数,以控制决策树的生成时间。

2) 决策树最大深度max_depth: 默认可以不输入,如果不输入的话,决策树在建立子树的时候不会限制子树的深度。一般来说,数据少或者特征少的时候可以不管这个值。如果模型极速赛车样本量多,特征也多的情况下,推荐限制这个最大深度,具体的取值取决于数据的分布。常用的可以取值10-100之间。

3) 内部节点再划分所需最小样本数min_samples_split: 这个值限制了子树继续划分的条件,如果某节点的样本数少于min_samples_split,则不会继续再尝试选择最优特征来进行划分。 默认是2.如果样本量不大,不需要管这个值。如果样本量数量级非常大,则推荐增大这个值。

4) 叶子节点最少样本数min_samples_leaf: 这个值限制了叶子节点最少的样本数,如果某叶子节点数目小于样本数,则会和兄弟节点一起被剪枝。 默认是1,可以SG飞艇输入最少的样本数的整数,或者最少样本数占样本总数的百分比。如果天津快乐十分样本量不大,不需要管这个值。如果样本量数量级非常大,则推荐增大这个值。
 

要回复问题请先登录注册