1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
|
% Generated by roxygen2: do not edit by hand
% Please edit documentation in R/path.sparsestep.R
\name{path.sparsestep}
\alias{path.sparsestep}
\title{Approximate path algorithm for the SparseStep model}
\usage{
path.sparsestep(
x,
y,
max.depth = 10,
gamma0 = 1000,
gammastop = 1e-04,
IMsteps = 2,
gammastep = 2,
normalize = TRUE,
intercept = TRUE,
force.zero = TRUE,
threshold = 1e-07,
XX = NULL,
Xy = NULL,
use.XX = TRUE,
use.Xy = TRUE,
quiet = FALSE
)
}
\arguments{
\item{x}{matrix of predictors}
\item{y}{response}
\item{max.depth}{maximum recursion depth}
\item{gamma0}{starting value of the gamma parameter}
\item{gammastop}{stopping value of the gamma parameter}
\item{IMsteps}{number of steps of the majorization algorithm to perform for
each value of gamma}
\item{gammastep}{factor to decrease gamma with at each step}
\item{normalize}{if TRUE, each variable is standardized to have unit L2
norm, otherwise it is left alone.}
\item{intercept}{if TRUE, an intercept is included in the model (and not
penalized), otherwise no intercept is included}
\item{force.zero}{if TRUE, absolute coefficients smaller than the provided
threshold value are set to absolute zero as a post-processing step,
otherwise no thresholding is performed}
\item{threshold}{threshold value to use for setting coefficients to
absolute zero}
\item{XX}{The X'X matrix; useful for repeated runs where X'X stays the same}
\item{Xy}{The X'y matrix; useful for repeated runs where X'y stays the same}
\item{use.XX}{whether or not to compute X'X and return it}
\item{use.Xy}{whether or not to compute X'y and return it}
\item{quiet}{don't print search info while running}
}
\value{
A "sparsestep" S3 object is returned, for which print, predict,
coef, and plot methods exist. It has the following items:
\item{call}{The call that was used to construct the model.}
\item{lambda}{The value(s) of lambda used to construct the model.}
\item{gamma0}{The gamma0 value of the model.}
\item{gammastop}{The gammastop value of the model}
\item{IMsteps}{The IMsteps value of the model}
\item{gammastep}{The gammastep value of the model}
\item{intercept}{Boolean indicating if an intercept was fitted in the
model}
\item{force.zero}{Boolean indicating if a force zero-setting was
performed.}
\item{threshold}{The threshold used for a forced zero-setting}
\item{beta}{The resulting coefficients stored in a sparse matrix format
(dgCMatrix). This matrix has dimensions nvar x nlambda}
\item{a0}{The intercept vector for each value of gamma of length nlambda}
\item{normx}{Vector used to normalize the columns of x}
\item{meanx}{Vector of column means of x}
\item{XX}{The matrix X'X if use.XX was set to TRUE}
\item{Xy}{The matrix X'y if use.Xy was set to TRUE}
}
\description{
Fits the entire regularization path for SparseStep using a
Golden Section search. Note that this algorithm is approximate, there is no
guarantee that the solutions _between_ induced values of lambdas do not
differ from those calculated. For instance, if solutions are calculated at
\eqn{\lambda_{i}}{\lambda[i]} and \eqn{\lambda_{i+1}}{\lambda[i+1]}, this
algorithm ensures that \eqn{\lambda_{i+1}}{\lambda[i+1]} has one more zero
than the solution at \eqn{\lambda_{i}}{\lambda[i]} (provided the recursion
depth is large enough). There is however no guarantee that there are no
different solutions between \eqn{\lambda_{i}}{\lambda[i]} and
\eqn{\lambda_{i+1}}{\lambda[i+1]}. This is an ongoing research topic.
Note that this path algorithm is not faster than running the
\code{sparsestep} function with the same \eqn{\lambda} sequence.
}
\examples{
x <- matrix(rnorm(100*20), 100, 20)
y <- rnorm(100)
pth <- path.sparsestep(x, y)
}
\references{
Van den Burg, G.J.J., Groenen, P.J.F. and Alfons, A. (2017).
\emph{SparseStep: Approximating the Counting Norm for Sparse Regularization},
arXiv preprint arXiv:1701.06967 [stat.ME].
URL \url{https://arxiv.org/abs/1701.06967}.
}
\seealso{
\code{\link{coef}}, \code{\link{print}}, \code{\link{predict}},
\code{\link{plot}}, and \code{\link{sparsestep}}.
}
\author{
Gerrit J.J. van den Burg, Patrick J.F. Groenen, Andreas Alfons\cr
Maintainer: Gerrit J.J. van den Burg <gertjanvandenburg@gmail.com>
}
|