Nothing
orthopen to orthoMTLThis release represents a major refactor and scope expansion of the
orthopen package (https://github.com/kevinVervier/orthopen).
survival and censored.mat arguments
in orthoMTL() enable censored time-to-event data.alpha mixing parameter in [0, 1] blending
the orthogonality penalty (alpha = 0) with L1/Lasso (alpha = 1).create_longitudinal_labels(),
create_indicator_matrix(), create_constraint_matrix().cv_orthoMTL() with parallel grid search over
lambda, step size, diagonal value, and elastic-net mixing.bootstrap_orthoMTL() compares real
coefficient variability against null-model permutations.cindex_mtl() for multi-task concordance index.plot_heatmap(), plot_correlation(),
plot_prediction(), plot_bootstrap().orthopenorthopen() → orthoMTL().$W → $B.disjoint changed from TRUE to FALSE.alpha mixing parameter in
[0, 1] (replacing the enet/lambda1 pair). The penalty is
lambda * [(1-alpha)/2 * Omega_K(W)^2 + alpha * ||W||_1], ported from
orthopen v1.1.0. This fixes the previous inconsistent mixing
(L2 ≈ 0.25lambda vs L1 = 0.5lambda1).Iso package dependency removed; replaced by internal
nnmaxheap_C().T (masking base::TRUE) renamed to numTasks.X, Y, lambda, alpha.max_iter is reached without convergence.y = -1.max(-z,0) + log1p(exp(-|z|)) and exponent clipping in the gradient.testthat runner,
inst/CITATION, GitHub Actions CI.The solver already supported regression (logistic = FALSE,
survival = FALSE) and classification (logistic = TRUE); these are now
first-class end-to-end with matching evaluation, tuning, and simulation
scaffolding (previously survival-only):
rmse_mtl(), r2_mtl() (regression) and
accuracy_mtl(), auc_mtl() (classification), complementing the
survival cindex_mtl() (unchanged).cv_orthoMTL() gains logistic and
metric arguments. The scoring metric now defaults by mode — cindex
for survival, auc for logistic, rmse otherwise — and selection
honours each metric's optimisation direction.predict() type argument: "link" (default, unchanged),
"response" (sigmoid probabilities for logistic fits), and "class"
(predicted {-1, +1} labels for logistic fits).simulate_mtl(mode = ...) now generates
"regression" and "classification" responses in addition to
"survival" (the default).schedule argument to orthoMTL()).
The previously hardcoded sqrt(i) decay is now schedule = "sqrt" (the
default, reproducing prior results exactly); "log", "const", and
"linear" are also available. An A/B study
(validation/ab_s02_gradient_schedule.R) found "log"/"const" reach the
same optimum ~12--17x faster than "sqrt", while "linear" can stall.
Changing the schedule changes the optimisation path and the exact
coefficients, so the default is unchanged. cv_orthoMTL() and
bootstrap_orthoMTL() gained a matching schedule argument (passed to every
fit), so grid search and bootstrap can use the faster schedules too.cv_orthoMTL(survival = FALSE) previously scored every fold with the
survival C-index regardless of the data; it now defaults to RMSE for
plain regression (and AUC when logistic = TRUE). Pass metric =
"cindex" to restore the old scoring.Any scripts or data that you put into this service are public.
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.