[ 
https://issues.apache.org/jira/browse/SPARK-1503?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14644560#comment-14644560
 ] 

Xiangrui Meng commented on SPARK-1503:
--------------------------------------

There are couple stop criteria in TFOCS (implemented in 
https://github.com/cvxr/TFOCS/blob/master/private/tfocs_iterate.m and 
documented in section 2.4.4 of 
https://github.com/cvxr/TFOCS/raw/master/userguide.pdf)

Copied from 
https://github.com/cvxr/TFOCS/blob/e34c0daeb136935d23b8df506de8b7b191f6b0a3/userguide.tex#L536:

{code}
\subsubsection{Stopping criteria}

There are a variety of ways to decide when the algorithm should terminate:
\begin{trivlist}
\item \texttt{tol}: TFOCS terminates when the iterates satisfy
$\|x_{k+1}-x_k\|/\max\{1,\|x_{k+1}\|\}\leq\texttt{tol}$.
The default value is $10^{-8}$; if set to zero or a negative value,
this criterion will never be engaged.
\item \texttt{maxIts}: The maximum number of iterations the algorithm
should take; defaults to \verb@Inf@.
\item \texttt{maxCounts}: This option causes termination after a certain
number of function calls or linear operations are made; see 
\S\ref{sec:opcounts}
for details. It defaults to \verb@Inf@.
\item \texttt{stopCrit}: Choose from one of several stopping criteria.
    By default, \texttt{stopCrit} is 1, which is our recommended stopping 
criteria
    when not using the SCD model.
    Setting this to 3 will use a stopping criteria applied to the dual value
    (so this is only available in SCD models, where the dual is really the 
primal),
    and setting this to 4 is similar but uses a relative error tolerance.
    A value of 4 is recommended when using the SCD model with continuation.
    For details, see the code in \verb@private/tfocs_iterate.m@.
\item \texttt{stopFcn}: This option allows you to supply one or more
stopping criteria of your own design. To use it, set \verb@stopFcn@
must be a function handle or a cell array of function handles. For
\verb@tfocs.m@, these function handles will be called as follows:
\begin{code_}
        stop = stopFcn( f, x );
\end{code_}
where \verb@f@ is the function value and \verb@x@ is the current point.
\begin{code_}
        stop = stopFcn( f, z, x );
\end{code_}
where \verb@f@ is the current \emph{dual} function value, \verb@z@ is
the current dual point, and  \verb@x@ is the current primal point.
The output should either be  \verb@true@ or \verb@false@; if
\verb@true@, the algorithm will stop.

Note that the standard stopping criteria still apply, so the algorithm will halt
when any of the stopping criteria are reached.  To ignore the standard stopping 
criteria,
set \texttt{stopCrit} to $\infty$.
\end{trivlist}
{code}

> Implement Nesterov's accelerated first-order method
> ---------------------------------------------------
>
>                 Key: SPARK-1503
>                 URL: https://issues.apache.org/jira/browse/SPARK-1503
>             Project: Spark
>          Issue Type: New Feature
>          Components: MLlib
>            Reporter: Xiangrui Meng
>            Assignee: Aaron Staple
>         Attachments: linear.png, linear_l1.png, logistic.png, logistic_l2.png
>
>
> Nesterov's accelerated first-order method is a drop-in replacement for 
> steepest descent but it converges much faster. We should implement this 
> method and compare its performance with existing algorithms, including SGD 
> and L-BFGS.
> TFOCS (http://cvxr.com/tfocs/) is a reference implementation of Nesterov's 
> method and its variants on composite objectives.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

---------------------------------------------------------------------
To unsubscribe, e-mail: issues-unsubscr...@spark.apache.org
For additional commands, e-mail: issues-h...@spark.apache.org

Reply via email to