SKLearn KernelRidge 内存需求

数据挖掘 Python scikit-学习 回归 支持向量机
2022-03-16 08:16:12

我正在使用 SKLearn KernelRidge 拟合具有 100,000 个样本 x 10 个特征(6 个整数和 4 个浮点数)的模型:

model = KernelRidge(kernel='linear')

查看任务管理器,“Python”进程大约需要 40GB。

你能解释一下为什么会有这么高的需求吗?后台构建了什么样的矩阵?

1个回答

这是比较常见的。KernelRidge 的算法需要执行 SVD。遗憾的是,SVD 无法处理稀疏矩阵,因此 sklearn 中的 _pre_compute_svd 函数只是将矩阵转换为密集矩阵并继续前进。这往往会很快炸毁内存。

你有几个选择。重写处理稀疏矩阵的方法或只使用不同的方法。SVR 将是最相似的选择。