#machine-learning #linfa #ai #ftrl

linfa-ftrl

一个用于Rust的机器学习框架

3个不稳定版本

0.7.0 2023年10月16日
0.6.1 2022年12月3日
0.6.0 2022年6月15日

#894 in 机器学习

MIT/Apache

225KB
4K SLoC

跟随正则化领导者

linfa-ftrl 提供了跟随正则化领导者(FTRL)模型,该模型是近端模型,具有L1和L2正则化,来自逻辑回归,主要用于CTR预测。它主动存储z和n值,这些值用于计算权重。没有L1和L2正则化时,它与在线梯度下降相同。

整体视图

linfa-ftrllinfa 生态系统中的一个crate,该生态系统致力于创建一个在纯Rust中实现的经典机器学习工具包,类似于Python的 scikit-learn

当前状态

linfa-ftrl crate提供了逻辑回归中的跟随正则化领导者-近端模型,具有L1和L2正则化,主要用于CTR预测。它主动存储z和n值,这些值用于计算权重。没有L1和L2正则化时,它与在线梯度下降相同。

另请参阅

示例

examples/ 目录中有一个使用示例。要运行,请使用

$ cargo run --example winequality
显示源代码
use linfa::prelude::*;
use linfa::dataset::{AsSingleTargets, Records};
use linfa_ftrl::{Ftrl, Result};
use rand::{rngs::SmallRng, SeedableRng};

// load Winequality dataset
let (train, valid) = linfa_datasets::winequality()
    .map_targets(|v| if *v > 6 { true } else { false })
    .split_with_ratio(0.9);

let params = Ftrl::params()
    .alpha(0.005)
    .beta(1.0)
    .l1_ratio(0.005)
    .l2_ratio(1.0);

let valid_params = params.clone().check_unwrap();
let mut model = Ftrl::new(valid_params, train.nfeatures());

// Bootstrap each row from the train dataset to imitate online nature of the data flow
let mut rng = SmallRng::seed_from_u64(42);
let mut row_iter = train.bootstrap_samples(1, &mut rng);
for _ in 0..train.nsamples() {
    let b_dataset = row_iter.next().unwrap();
    model = params.fit_with(Some(model), &b_dataset)?;
}
let val_predictions = model.predict(&valid);
println!("valid log loss {:?}", val_predictions.log_loss(&valid.as_single_targets().to_vec())?);
# Result::Ok(())

依赖项

~5.5MB
~110K SLoC