1 个不稳定版本

0.1.0 2022年3月5日

#19#prediction

MIT 许可证

9KB
174

上下文树权重(CTW)

CTW 是由 Frans Willems、Yuri Shtarkov 和 Tjalling Tjalkens 在 1995 年发现的一种轻量级、实用且性能良好的序列预测算法。

它具有良好的查询和更新性能(与上下文长度成线性关系)。

用法

以下示例演示了 Ctw 学习交替二进制序列 101010...

use ctw::CtwTree;
let mut rng = rand::thread_rng();
let mut tree = CtwTree::new(8); // context length is 8

let pattern = [true, false].into_iter().cycle().take(100); // true, false, true, ..
tree.update_batch(&Vec::from_iter(pattern));

let mut predictions = Vec::new();

for _ in 0..10 {
    let prediction = tree.sample(&mut rng);
    tree.update(prediction);

    // convert bool to 1 and 0 for legibility
    let bit = if prediction { 1 } else { 0 };
    predictions.push(bit);
}

println!("predictions: {predictions:?}"); // --> "prediction: [1, 0, 1, 0, 1, 0, 1, 0, 1, 0]"
assert_eq!(predictions, vec![1,0,1,0,1,0,1,0,1,0]);

资源

  1. http://www.hutter1.net/publ/sctw.pdf
  2. https://web.stanford.edu/class/ee378a/lecture-notes/lecture_9.pdf
  3. http://www.data-compression.info/Algorithms/CTW/
  4. https://www.cs.cmu.edu/~aarti/Class/10704_Spring15/CTW.pdf(原始论文)

依赖项

~315KB