gpt4 book ai didi

python - 缩减数据集的 LDA 准确率高于原始数据集

转载 作者:行者123 更新时间:2023-11-30 09:52:35 24 4
gpt4 key购买 nike

我正在尝试使用 LDA 来减少数据集。我预计在减少的数据集上我的准确性会降低。然而,根据我得到的随机种子,有时简化版本会给我带来更高的准确性。

X, y = make_classification(1000, 50, n_informative=10, n_classes=20)
X1, X2, y1, y2 = train_test_split(X, y)

lda = LDA()
lda.fit(X1, y1)
predicted = lda.predict(X2)
full_accuracy = accuracy_score(y2, predicted)


reduction = LDA(n_components=5)
X1red = reduction.fit_transform(X1, y1)
X2red = reduction.transform(X2)


lda.fit(X1red, y1)
predicted = lda.predict(X2red)
reduced_accuracy = accuracy_score(predicted, y2)

print full_accuracy, reduced_accuracy, reduced_accuracy/full_accuracy


# prints 0.132 0.16 1.21212121212

你知道为什么降维后我的准确率更高吗?

最佳答案

没有任何东西可以保证降维会更好或更差。您分别应用两个弱模型,有时您会很幸运,它们实际上会抵消弱点并比直接应用的弱模型稍好一些。一般来说,降维不应增加维度假设您有足够的数据,并且您拟合的模型是。 LDA 不是一个强大的模型(它非常幼稚),因此您最终可能会得到不同的结果。

为了获得更多直觉,让我们看一个非常简单的示例

X = 0 900
1 1000
2 123
3 123124
4 1251251

y = 0 1 0 1 0

我的模型是一个函数f(x|theta) = sum(x) % theta,我在其中学习theta。如果我直接将其应用于我的数据,我将能够了解到这一点,因为

f(X) = 900 % theta
1001 % theta
125 % theta
123127 % theta
1251255 % theta

最好的 theta 是 theta=2,然后我得到预测 0 1 1 1 1,准确度为 60%。现在让我们应用降维技术,这对我来说非常简单,它是 g(x) = x[0],因此

g(X) = 0
1
2
3
4

如果我现在编写 f o g (将我的模型应用于简化的数据),我将再次了解到 theta=2,但这次我的预测是 0 1 0 1 0,100% 准确率!

同时我可以选择不同的降维,例如 g(x)=x[1] 并得到 0 0 1 0 1,这只是准确率20%!因此比原来更糟糕。

正如您所看到的,您总是可以两者兼而有之——更好或更糟。由于降维技术是在不知道接下来发生的事情的情况下应用的,所以它可以做任意的好事/坏事。没有保证。

关于python - 缩减数据集的 LDA 准确率高于原始数据集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42296409/

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