IsolationForestLearner
IsolationForestLearner ¶
IsolationForestLearner(
label: Optional[str] = None,
task: Task = ANOMALY_DETECTION,
*,
weights: Optional[str] = None,
ranking_group: Optional[str] = None,
uplift_treatment: Optional[str] = None,
features: Optional[ColumnDefs] = None,
include_all_columns: bool = False,
max_vocab_count: int = 2000,
min_vocab_frequency: int = 5,
discretize_numerical_columns: bool = False,
num_discretized_numerical_bins: int = 255,
max_num_scanned_rows_to_infer_semantic: int = 100000,
max_num_scanned_rows_to_compute_statistics: int = 100000,
data_spec: Optional[DataSpecification] = None,
extra_training_config: Optional[TrainingConfig] = None,
max_depth: int = -2,
min_examples: int = 5,
num_trees: int = 300,
pure_serving_model: bool = False,
random_seed: int = 123456,
sparse_oblique_max_num_features: Optional[int] = None,
sparse_oblique_normalization: Optional[str] = None,
sparse_oblique_projection_density_factor: Optional[
float
] = None,
sparse_oblique_weights: Optional[str] = None,
sparse_oblique_weights_integer_maximum: Optional[
int
] = None,
sparse_oblique_weights_integer_minimum: Optional[
int
] = None,
sparse_oblique_weights_power_of_two_max_exponent: Optional[
int
] = None,
sparse_oblique_weights_power_of_two_min_exponent: Optional[
int
] = None,
split_axis: str = "AXIS_ALIGNED",
subsample_count: Optional[int] = 256,
subsample_ratio: Optional[float] = None,
working_dir: Optional[str] = None,
num_threads: Optional[int] = None,
tuner: Optional[AbstractTuner] = None,
feature_selector: Optional[
AbstractFeatureSelector
] = None,
explicit_args: Optional[Set[str]] = None
)
基类: GenericCCLearner
Isolation Forest 学习算法。
一种 Isolation Forest 算法是一种决策树集合,它们在没有标签的情况下独立训练,用于划分特征空间。Isolation Forest 的预测结果是一个异常分数,指示示例是否来自与训练示例相同的分布。我们将 Isolation Forest 指代 Liu 等人提出的原始算法及其扩展。
使用示例
import ydf
import pandas as pd
dataset = pd.read_csv("project/dataset.csv")
model = ydf.IsolationForestLearner().train(dataset)
print(model.describe())
超参数已配置为对典型数据集提供合理结果。超参数也可以手动修改(参见下面的描述),或通过应用 IsolationForestLearner.hyperparameter_templates()
提供的超参数模板(有关详细信息,请参阅此函数的文档)。
属性
名称 | 类型 | 描述 |
---|---|---|
label |
数据集的标签。标签列不应在 |
|
task |
要解决的任务(例如 Task.CLASSIFICATION, Task.REGRESSION, Task.RANKING, Task.CATEGORICAL_UPLIFT, Task.NUMERICAL_UPLIFT)。 |
|
weights |
标识每个示例权重的特征名称。如果未指定权重,则假定为单位权重。权重列不应在 |
|
ranking_group |
仅适用于 |
|
uplift_treatment |
仅适用于 |
|
features |
如果为 None,则所有列都用作特征。特征的语义是自动确定的。否则,如果 include_all_columns=False(默认),则仅导入 |
|
include_all_columns |
参见 |
|
max_vocab_count |
存储为字符串的 CATEGORICAL 和 CATEGORICAL_SET 列词汇表的最大大小。如果存在更多唯一值,则仅保留最频繁的值,其余值被视为词汇外(out-of-vocabulary)。 |
|
min_vocab_frequency |
CATEGORICAL 和 CATEGORICAL_SET 列中值的最小出现次数。出现次数少于 |
|
discretize_numerical_columns |
如果为 true,则在训练前对所有数值列进行离散化。离散化的数值列训练速度更快,但可能会对模型质量产生负面影响。使用 |
|
num_discretized_numerical_bins |
对数值列进行离散化时使用的 bin 数量。 |
|
max_num_scanned_rows_to_infer_semantic |
如果未明确指定列的语义,则扫描的行数。仅在从文件读取时使用,内存中的数据集始终完全读取。将其设置为较低的值会加快数据集读取速度,但可能导致列语义不正确。设置为 -1 以扫描整个数据集。 |
|
max_num_scanned_rows_to_compute_statistics |
计算列统计信息时扫描的行数。仅在从文件读取时使用,内存中的数据集始终完全读取。列的统计信息包括类别特征的字典以及数值特征的均值 / 最小值 / 最大值。将其设置为较低的值会加快数据集读取速度,但会扭曲 dataspec 中的统计信息,这可能会损害模型质量(例如,如果类别特征的一个重要类别被视为 OOV)。设置为 -1 以扫描整个数据集。 |
|
data_spec |
要使用的数据规范(高级)。如果给定了数据规范,则将忽略 |
|
extra_training_config |
训练配置 proto(高级)。如果设置,此训练配置 proto 将与学习器隐式定义的配置合并。可用于设置未作为构造函数参数公开的内部或高级参数。extra_training_config 中的参数比构造函数参数具有更高的优先级。 |
|
max_depth |
树的最大深度。 |
|
min_examples |
节点中的最小示例数。默认值: 5。 |
|
num_trees |
决策树的数量。增加树的数量可以提高模型质量,但会牺牲大小、训练速度和推理延迟。默认值: 300。 |
|
pure_serving_model |
清除模型中任何与模型服务无关的信息。这包括调试、模型解释和其他元数据。序列化模型的大小可以显著减小(模型大小减小 50% 很常见)。此参数对模型服务的质量、服务速度或 RAM 使用没有影响。默认值: False。 |
|
random_seed |
模型训练的随机种子。学习器应根据随机种子具有确定性。默认值: 123456。 |
|
sparse_oblique_max_num_features |
用于稀疏倾斜分割,即 |
|
sparse_oblique_normalization |
用于稀疏倾斜分割,即 |
|
sparse_oblique_projection_density_factor |
投影密度,表示为特征数量的指数。对于每个投影,每个特征都有一个概率“projection_density_factor / num_features”被考虑在投影中。论文“Sparse Projection Oblique Random Forests”(Tomita 等人,2020)将此参数称为 |
|
sparse_oblique_weights |
用于稀疏倾斜分割,即 可能的值:- |
|
sparse_oblique_weights_integer_maximum |
用于稀疏倾斜分割,即 |
|
sparse_oblique_weights_integer_minimum |
用于稀疏倾斜分割,即 |
|
sparse_oblique_weights_power_of_two_max_exponent |
用于稀疏倾斜分割,即 |
|
sparse_oblique_weights_power_of_two_min_exponent |
用于稀疏倾斜分割,即 |
|
split_axis |
数值特征要考虑的分割结构。- |
|
subsample_count |
用于生成每棵树的示例数。只能设置“subsample_ratio”和“subsample_count”之一。默认情况下,每棵树采样 256 个示例。请注意,此参数还限制了树的最大深度为 log2(每棵树使用的示例数),除非显式设置了 max_depth。默认值: 256。 |
|
subsample_ratio |
用于生成每棵树的训练示例数量比例。只能设置“subsample_ratio”和“subsample_count”之一。默认情况下,每棵树采样 256 个示例。请注意,此参数还限制了树的最大深度为 log2(每棵树使用的示例数),除非显式设置了 max_depth。默认值: None。 |
|
working_dir |
供学习算法存储中间计算结果的目录路径。根据学习算法和参数,working_dir 可能是可选的、必需的或被忽略。例如,分布式训练算法总是需要一个“working_dir”,并且梯度提升树和超参数调优器如果提供了“working_dir”,会将工件导出到其中。 |
|
num_threads |
用于训练模型的线程数。不同的学习算法使用多线程的方式和效率不同。如果为 |
|
tuner |
如果设置,则使用提供的调优器自动选择最佳超参数。使用分布式训练时,调优也是分布式的。 |
|
feature_selector |
如果设置,则使用指定的特征选择器自动选择模型的输入特征。 |
|
explicit_args |
内部使用的辅助参数。如果用户显式提供,则抛出异常。 |
hyperparameters property
¶
此学习器的(可变)超参数字典。
此对象可用于在创建学习器后检查或修改超参数。在构建学习器后修改超参数适用于某些高级用例。由于此方法绕过了对给定超参数集的一些可行性检查,通常最好为每个模型重新创建学习器。当前超参数集可以使用 validate_hyperparameters()
手动验证。
cross_validation ¶
cross_validation(
ds: InputDataset,
folds: int = 10,
bootstrapping: Union[bool, int] = False,
parallel_evaluations: int = 1,
) -> Evaluation
hyperparameter_templates classmethod
¶
train ¶
train(
ds: InputDataset,
valid: Optional[InputDataset] = None,
verbose: Optional[Union[int, bool]] = None,
) -> IsolationForestModel
在给定数据集上训练模型。
数据集读取选项在学习器上给出。有关 YDF 中数据集读取的更多信息,请查阅学习器或 ydf.create_vertical_dataset() 的文档。
使用示例
import ydf
import pandas as pd
train_ds = pd.read_csv(...)
learner = ydf.IsolationForestLearner(label="label")
model = learner.train(train_ds)
print(model.summary())
如果训练被中断(例如,通过中断 Colab 中的单元格执行),模型将恢复到中断时的状态。
参数
名称 | 类型 | 描述 | 默认值 |
---|---|---|---|
ds
|
InputDataset
|
训练数据集。 |
必需 |
valid
|
Optional[InputDataset]
|
可选的验证数据集。某些学习器(如 Random Forest)不需要验证数据集。某些学习器(如 GradientBoostedTrees)如果在未提供验证数据集的情况下,会自动从训练数据集中提取一个验证数据集。 |
None
|
verbose
|
Optional[Union[int, bool]]
|
训练期间的详细程度。如果为 None,则使用 |
None
|
返回值
类型 | 描述 |
---|---|
IsolationForestModel
|
一个已训练的模型。 |