Changelog¶
All notable changes to RESOLVE will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
[0.4.0] - 2025-01-25¶
Added¶
- R² metric: Coefficient of determination for regression evaluation (computed on original scale)
- Class weights: Support for imbalanced classification via
class_weightsin target config - LR scheduling: StepLR and CosineAnnealing scheduler options
- Comprehensive test suite: Catch2 tests for C++, pytest for Python, testthat for R
- CI/CD workflows: GitHub Actions for tests, PyPI release, R-CMD-check
Changed¶
- Package split: C++ bindings now distributed as
resolve-core, high-level Python wrapper asresolve - R package version synced to 0.4.0
Fixed¶
- R² now computed on original scale (before inverse transform)
- NAMESPACE exports for R metric functions
[0.2.0] - 2025-01-24¶
Changed¶
- Simplified API:
Trainernow takes onlydatasetas required argument, builds model automatically - Renamed normalization modes:
relative_plot→relative,log_scaled→log - Loss presets: New
loss_configparameter with presets"mae","combined","smape" - Confidence filtering:
trainer.predict(dataset, confidence_threshold=0.8)to filter uncertain predictions
Added¶
- Species encoding modes:
species_encoding="hash"(default) or"embed"for learned species embeddings - Tensor caching:
cache_dirparameter for faster restarts with large datasets - Gradient checkpointing: Reduced memory usage for large models
Fixed¶
- Fixed
expm1overflow in metrics computation for extreme predictions - Improved R bindings with formula API support
[0.1.0] - 2025-01-19¶
Added¶
- Initial release of RESOLVE (Representation Encoding for Structured Observation Learning with Vector Embeddings)
- Hybrid species encoding: Feature hashing for full species lists + learned embeddings for dominant taxa
- Multi-target prediction: Single shared encoder, multiple task heads (regression and classification)
- Phased training: MAE -> SMAPE -> band accuracy optimization for regression targets
- Semantic role mapping: Flexible column naming with strict structural requirements
- Unknown species tracking: Detects and quantifies novel species at inference time
- Abundance normalization: Raw, relative (per-plot), or log-scaled modes
- CPU-first design: Works without GPU, scales with CUDA when available
Core Components¶
ResolveDataset: Data loading with semantic role mappingResolveModel: Neural network architecture with shared encoder and task-specific headsTrainer: Training loop with phased optimization and early stoppingPredictor: Inference interface with embedding extraction