The LOGSELECT Procedure

Optimization Algorithms

Several optimization techniques are available in PROC LOGSELECT. You can choose a particular optimizer by using the TECHNIQUE= option in the PROC LOGSELECT statement. Table 11.13 summarizes the optimization techniques available in PROC LOGSELECT.

Table 11.13: Optimization Techniques

TECHNIQUE=

Algorithm

TRUREG

Trust region method

NEWRAP

Newton-Raphson method with line search

NRRIDG

Newton-Raphson method with ridging

QUANEW

Quasi-Newton methods

DBLDOG

Double-dogleg method

CONGRA

Conjugate gradient methods

NMSIMP

Nelder-Mead simplex method


There is no algorithm for optimizing general nonlinear functions that always finds the global optimum for a general nonlinear optimization problem in a reasonable amount of time. Because no single optimization technique is always superior to others, PROC LOGSELECT provides a variety of optimization techniques that work well in various circumstances. However, you can devise problems for which none of the techniques in PROC LOGSELECT can find the correct solution. Moreover, nonlinear optimization can be computationally expensive in terms of time and memory, so you must be careful when matching an algorithm to a problem. The section Choosing an Optimization Algorithm in Chapter 3: Shared Concepts, is helpful in choosing a suitable optimization algorithm.

Memory Usage

In order to use memory efficiently in computing the components for optimization, PROC LOGSELECT reads your data table in multiple batches, or pages; each page contains at most a certain number of observations. During the optimization, the procedure reads the first page of observations from the data table into memory, creates the design rows, performs the appropriate log-likelihood, gradient, and Hessian computations on that page of observations, and then discards those observations and reads in the next page of data for processing.

Generally, smaller pages use less memory but can lead to longer computation times, whereas larger pages can run faster but use more memory. In particular, with sufficient memory, the optimization is typically fastest if you can fit all your data on a single page, because then you do not have to repeatedly reaccess the data table and recompute the design rows. The default PAGEOBS=AUTO option determines that you have enough memory to use one page for the optimization if the number of observations in your data table for each thread on each machine node is less than

where

b

=

the approximate number of bytes available to a machine node, or 1GB

t

=

the number of threads available to a machine node

p

=

the number of parameters in your model

r

=

2n + 10 for continuous response models

r

=

2n + y + 9 for categorical response models

n

=

the number of observations in the data table

y

=

the number of response levels for categorical response models

If PROC LOGSELECT determines that you do not have enough memory, then PAGEOBS=256 is chosen to optimize the matrix computations, and a note is displayed in the SAS log that gives the value of the PAGEOBS= option that is required if you want to store all the data for a machine node on a single page.

Last updated: December 21, 2018