gpt4 book ai didi

machine-learning - 缩放决策树中的数据会改变我的结果吗?

转载 作者:行者123 更新时间:2023-11-30 08:49:55 24 4
gpt4 key购买 nike

我知道决策树不会受到数据缩放的影响,但是当我在决策树中缩放数据时,它会给我带来糟糕的性能(糟糕的召回率、精度和准确性)

但是当我不扩展所有性能指标时,决策树会给我一个惊人的结果。怎么会这样?

注意:我使用 GridSearchCV 但我不认为交叉验证是我的问题的原因。这是我的代码:

scaled = MinMaxScaler()

pca = PCA()

bestK = SelectKBest()

combined_transformers = FeatureUnion([ ("scale",scaled),("best", bestK),
("pca", pca)])

clf = tree.DecisionTreeClassifier(class_weight= "balanced")

pipeline = Pipeline([("features", combined_transformers), ("tree", clf)])

param_grid = dict(features__pca__n_components=[1, 2,3],
features__best__k=[1, 2,3],
tree__min_samples_split=[4,5],
tree__max_depth= [4,5],
)

grid_search = GridSearchCV(pipeline, param_grid=param_grid,scoring='f1')
grid_search.fit(features,labels)

使用缩放函数 MinMaxScaler() 我的性能是:

f1 =  0.837209302326
recall = 1.0
precision = 0.72
accuracy = 0.948148148148

但没有缩放:

f1 =  0.918918918919
recall = 0.944444444444
precision = 0.894736842105
accuracy = 0.977777777778

最佳答案

我对 scikit-learn 不熟悉,所以如果我误解了什么,请原谅。

首先,PCA是否标准化了特征?如果不这样做,它将为缩放和非缩放输入提供不同的结果。

其次,由于样本分割的随机性,CV 在每次运行中可能会给出不同的结果。这会影响结果,特别是对于小样本量。此外,如果样本量较小,结果可能并没有那么不同。

我有以下建议:

  1. 缩放可以被视为额外的超参数,可以通过 CV 进行优化。
  2. 执行额外的 CV(称为嵌套 CV)或保留来评估性能。这是通过保留一个测试集,使用训练数据上的 CV 选择模型,然后评估其在测试集上的性能来完成的(如果是嵌套 CV,您可以对所有折叠重复执行此操作,并对性能估计进行平均)。当然,您的最终模型应该在整个数据集上进行训练。一般来说,您不应该使用用于模型选择的 CV 的性能估计,因为它会过于乐观。

关于machine-learning - 缩放决策树中的数据会改变我的结果吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37711205/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com