我正在使用 SKLearn KernelRidge 拟合具有 100,000 个样本 x 10 个特征(6 个整数和 4 个浮点数)的模型:
model = KernelRidge(kernel='linear')
查看任务管理器,“Python”进程大约需要 40GB。
你能解释一下为什么会有这么高的需求吗?后台构建了什么样的矩阵?
我正在使用 SKLearn KernelRidge 拟合具有 100,000 个样本 x 10 个特征(6 个整数和 4 个浮点数)的模型:
model = KernelRidge(kernel='linear')
查看任务管理器,“Python”进程大约需要 40GB。
你能解释一下为什么会有这么高的需求吗?后台构建了什么样的矩阵?
这是比较常见的。KernelRidge 的算法需要执行 SVD。遗憾的是,SVD 无法处理稀疏矩阵,因此 sklearn 中的 _pre_compute_svd 函数只是将矩阵转换为密集矩阵并继续前进。这往往会很快炸毁内存。
你有几个选择。重写处理稀疏矩阵的方法或只使用不同的方法。SVR 将是最相似的选择。