MLJ: 在evaluate中选择行和列进行训练

我想实现一个在MLJ中也能工作的核岭回归。此外,我希望能够选择使用特征向量或像Python中的sklearn那样使用预定义的核矩阵。

当我运行这段代码时

const MMI = MLJModelInterface    MMI.@mlj_model mutable struct KRRModel <: MLJModelInterface.Deterministic        mu::Float64 = 1::(_ > 0)        kernel::String = "linear"endfunction MMI.fit(m::KRRModel,verbosity::Int,K,y)    K = MLJBase.matrix(K)    fitresult = inv(K+m.mu*I)*y    cache = nothing    report = nothing    return (fitresult,cache,report)end   N = 10K = randn(N,N)K = K*Ka = randn(N)y = K*a + 0.2*randn(N)m = KRRModel()kregressor = machine(m,K,y)cv = CV(; nfolds=6,  shuffle=nothing, rng=nothing)evaluate!(kregressor, resampling=cv, measure=rms, verbosity=1)

evaluate!函数会对K的不同行子集进行评估。由于表示定理,核岭回归的非零系数数量等于样本数量。因此,可以使用缩减尺寸的矩阵K[train_rows,train_rows]来代替K[train_rows,:]

为了表示我正在使用核矩阵,我会设置m.kernel = ""。当m.kernel = ""时,如何让evaluate!同时选择列和行来形成一个较小的矩阵?

这是我第一次使用MLJ,我希望尽可能少地进行修改。


回答:

引用我在Julia Discourse上从@ablaom那里得到的答案

evaluate!的预期用途是通过子抽样观察来估计与某些监督学习模型相关的泛化误差,就像交叉验证中的常见用例一样。遗憾的是,evaluate!没有自然的方式来进行特征子抽样。

https://alan-turing-institute.github.io/MLJ.jl/dev/evaluating_model_performance/

仅供参考:有一个实现了MLJ模型接口的核回归版本,即来自包https://github.com/lalvim/PartialLeastSquaresRegressor.jl的核偏最小二乘回归

Related Posts

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

如何在gensim的word2vec模型中查找双词组的相似性

我有一个word2vec模型,假设我使用的是googl…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注