# HoeffdingTreeRegressor


霍夫丁(Hoeffding)树回归模型

函数库: TyMachineLearning

# 语法

mdl = HoeffdingTreeRegressor(; Name=Value)

# 说明

mdl = HoeffdingTreeRegressor(; Name=Value) 该函数创建一个霍夫丁树回归模型。霍夫丁树是一种用于流式数据的决策树学习算法,在不完整遍历整个数据流的情况下,可以进行决策树的增量学习。

# 示例

霍夫丁树回归
加载数据。
using CSV
using DataFrames
using TyMachineLearning
file_feature = pkgdir(TyMachineLearning, "data", "Regression", "fsr_x.csv")
file_target = pkgdir(TyMachineLearning, "data", "Regression", "fsr_y.csv")
feature = Matrix{Float64}(DataFrame(CSV.File(file_feature; header=false)))
target = Matrix(DataFrame(CSV.File(file_target; header=false)))

创建霍夫丁树回归模型并用updateMetricsAndFit函数使增量模型拟合训练数据,同时每训练 1000 个样本输出 MAE 指标。

mdl = HoeffdingTreeRegressor(;grace_period=700, leaf_prediction="adaptive", model_selector_decay=0.9)
mdl = updateMetricsAndFit(mdl, feature, target; print_every=1000);
[1,000] MAE: 0.78874
[2,000] MAE: 0.798343
[3,000] MAE: 0.803101
[4,000] MAE: 0.801406
[5,000] MAE: 0.799992
[6,000] MAE: 0.793905
[7,000] MAE: 0.797391

# 输入参数

standardize-标准化标志
bool(默认为 true)
是否标准化处理数据的标志,默认值为 true。

数据类型: bool

grace_period-观察间隔
整数(默认值 200)
定义了叶子节点尝试拆分的间隔,即在每次尝试分裂之前,叶子节点应该观察多少个数据实例。较大的值可能导致树生长较慢。

数据类型: Int64

max_depth-最大深度
整数(默认为 nothing)
定义了树的最大深度。如果设置为 nothing,树将无限制地生长。如果设置一个整数值,树将被限制在达到指定深度。

数据类型: Int64

split_confidence-允许误差
浮点数(默认为 1e-7)
表示在做分裂决策时允许的误差。较接近 0 的值会导致需要更多时间来做出分裂决策。

数据类型: Float64

tie_threshold-平局阈值
浮点数(默认为 0.05)
用于强制打破分裂决策平局的阈值。当分裂标准评分相同时,小于此阈值的分裂将被选择。

数据类型: Float64

leaf_prediction-叶子节点预测机制
字符串(默认为 "model")
定义了叶子节点的预测机制。可选的值包括:"mean" - 目标均值,"model" - 使用在叶子节点定义的模型,"adaptive" - 动态选择 "mean" 和 "model"。

数据类型: String

model_selector_decay-权重衰减因子
浮点数(默认为 0.95)
参数用于在叶子节点采用 "adaptive" 预测机制时,调整学习模型的平方误差的权重衰减因子。当 model_selector_decay 接近 1 时,过去的观察将被赋予更高的权重,因为指数衰减会减小较早观察到的平方误差的重要性。这意味着更多的历史数据将影响模型的选择。

数据类型: Float64

nominal_attributes-标称属性
字符串向量(默认为 nothing)
列出了名义属性的标识符列表。如果为空,则假定所有数值属性都应被视为连续属性。

数据类型: Vector{String}

min_samples_split-分支最小样本数
整型(默认为 5)
参数用于指定分裂候选产生的每个分支必须具有的最小样本数,以便被视为有效分裂。较小的值可能会生成更复杂的树,对训练数据更拟合,但可能导致过拟合。较大的值会生成更简单的树,更容易泛化到新数据,但可能会失去一些数据的细节。要根据具体情况来选择一个合适的值。

数据类型: Int64

binary_split-二元拆分
Bool(默认为 false)
如果设置为 true,则只允许进行二元拆分。

数据类型: Bool

max_size-最大规模
整数(默认为 100)
以兆字节(MB)为单位定义了树的最大大小。

数据类型: Int64

memory_estimate_period-内存检查间隔
整数(默认为 1000000)
定义了内存消耗检查之间的处理实例数的间隔。

数据类型: Int64

stop_mem_management-限制增长
Bool(默认为 false)
如果设置为 true,则一旦达到内存限制,树的增长将停止。

数据类型: Bool

remove_poor_attrs-禁用不良属性
Bool(默认为 false)
如果设置为 true,则禁用不良属性以减少内存使用。不良属性通常指的是在模型中对性能没有太大贡献或者可能带来过多内存消耗的属性。这些属性可能是冗余的、无关的、或者具有较高的内存开销,但对模型的性能影响有限。

数据类型: Bool

merit_preprune-预修剪
Bool(默认为 true)
如果设置为 true,则启用树预修剪,可以防止树变得过于复杂,减少过拟合的风险。

数据类型: Bool

# 输出参数

mdl-增量学习模型
对象
增量学习的霍夫丁树回归模型。

# 另请参阅

updateMetricsAndFit