Jump to content

Connect SuperML | Leeroopedia MCP: Equip your AI agents with best practices, code verification, and debugging knowledge. Powered by Leeroo — building Organizational Superintelligence. Contact us at founders@leeroo.com.

Implementation:Online ml River Optim Nadam

From Leeroopedia


Knowledge Sources
Domains Online_Learning, Optimization
Last Updated 2026-02-08 16:00 GMT

Overview

Nadam (Nesterov-accelerated Adaptive Moment Estimation) combines Adam with Nesterov momentum for potentially faster convergence.

Description

Nadam is a variant of Adam that incorporates Nesterov accelerated gradient (NAG) into the momentum component. While Adam uses standard momentum, Nadam applies Nesterov momentum which looks ahead by computing the gradient at the anticipated future position rather than the current position. This look-ahead property can lead to faster convergence and better performance on some tasks. The algorithm maintains exponentially decaying averages of past gradients (first moment) and squared gradients (second moment) like Adam, but modifies the first moment update to include Nesterov acceleration. The bias correction is applied to both moments before computing the parameter update.

Usage

Import from river.optim and use as an optimizer in any River model. Consider Nadam when Adam performs well but you want potentially faster convergence.

Code Reference

Source Location

Signature

class Nadam(optim.base.Optimizer):
    def __init__(self, lr=0.1, beta_1=0.9, beta_2=0.999, eps=1e-8):
        ...

Import

from river import optim

I/O Contract

Inputs

Name Type Required Description
lr float No (default=0.1) Learning rate
beta_1 float No (default=0.9) Exponential decay rate for first moment estimates
beta_2 float No (default=0.999) Exponential decay rate for second moment estimates
eps float No (default=1e-8) Small constant for numerical stability

Outputs

Name Type Description
optimizer Nadam Configured optimizer instance ready for model training

Usage Examples

from river import datasets
from river import evaluate
from river import linear_model
from river import metrics
from river import optim
from river import preprocessing

# Create Nadam optimizer
optimizer = optim.Nadam()

# Use with a linear model
dataset = datasets.Phishing()
model = (
    preprocessing.StandardScaler() |
    linear_model.LogisticRegression(optimizer)
)
metric = metrics.F1()

# Evaluate
score = evaluate.progressive_val_score(dataset, model, metric)
print(score)  # F1: 86.60%

# Custom parameters
optimizer = optim.Nadam(
    lr=0.01,
    beta_1=0.95,
    beta_2=0.999,
    eps=1e-7
)

model = linear_model.LogisticRegression(optimizer)

# Good alternative to Adam for faster convergence
model_adam = linear_model.LogisticRegression(optim.Adam())
model_nadam = linear_model.LogisticRegression(optim.Nadam())

Related Pages

Page Connections

Double-click a node to navigate. Hold to expand connections.
Principle
Implementation
Heuristic
Environment