【发布时间】:2019-01-05 15:49:55
【问题描述】:
这个问题与在执行 PCA 后比较基于完整特征集的随机森林分类器模型与基于减少组件数量的随机森林模型之间的速度有关。我正在使用 MNIST 数据集,其中有 60,000 行用于我的训练 (X_train) 和 10,000 行用于我的测试 (X_test),以及代表 28x28 图像的像素的 784 个特征。
对于全套功能,我正在测量使用 clock() 拟合所需的时间,如下所示:
clf = RandomForestClassifier()
t0 = time.clock()
clf.fit(X_train, y_train)
runtime = time.clock() - t0
为了做 PCA 和随机森林,我正在做类似的事情:
pca = PCA(n_components = 0.95)
t0 = time.clock()
components = pca.fit_transform(X_train)
clf.fit(components, y_train)
runtime = time.clock() - t0
对于整套,我的运行时间约为 6 秒,而对于第二套,我的运行时间约为 27 秒。即使我分开查看拟合的运行时间(除去执行 pca 所需的时间),与 14 秒相比,我仍然始终得到大约 6 秒。全套功能的数量为 784,而 PCA 将其减少到 154 个组件。我有限的理解是,由于特征数量减少,至少使用 PCA 拟合模型应该更快 - 为什么不呢?
我在 PCA 之前尝试过缩放、调整超参数等,但它与运行时的反直觉差异非常一致,我相信这只是我在概念上不理解的东西。
【问题讨论】:
标签: python scikit-learn random-forest pca mnist