RandomizedPcaTrainer 类

定义

用于 IEstimator<TTransformer> 使用随机 SVD 算法训练近似 PCA。

public sealed class RandomizedPcaTrainer : Microsoft.ML.Trainers.TrainerEstimatorBase<Microsoft.ML.Data.AnomalyPredictionTransformer<Microsoft.ML.Trainers.PcaModelParameters>,Microsoft.ML.Trainers.PcaModelParameters>
type RandomizedPcaTrainer = class
    inherit TrainerEstimatorBase<AnomalyPredictionTransformer<PcaModelParameters>, PcaModelParameters>
Public NotInheritable Class RandomizedPcaTrainer
Inherits TrainerEstimatorBase(Of AnomalyPredictionTransformer(Of PcaModelParameters), PcaModelParameters)
继承

注解

若要创建此训练程序,请使用 RandomizedPcaRandomizedPca(Options)。

输入和输出列

输入特征列数据必须是已知大小的向量 Single。 该训练程序输出以下列:

输出列名称 列类型 Description
Score Single 由异常情况检测模型计算得出的非负无界分数。
PredictedLabel Boolean 基于阈值的预测标签。 高于阈值的分数映射到 true 阈值,分数低于阈值映射到 false。 默认阈值为 0.5.用于 <xref:AnomalyDetectionCatalog.ChangeModelThreshold> 更改默认值。

训练器特征

机器学习任务 异常检测
是否需要规范化? 是的
是否需要缓存?
除 Microsoft.ML 之外所需的 NuGet None
可导出到 ONNX

训练算法详细信息

此训练器使用顶部特征函数来近似包含普通类的子空间。 对于每个新实例,它计算原始特征向量与该子空间上的投影特征之间的规范差。 如果错误接近 0,则实例被视为正常(非异常)。

更具体地说,此训练器使用随机方法训练近似 PCA,以计算矩阵的奇数分解(SVD),其行是输入向量。 此训练程序生成的模型包含三个参数:

  • 投影矩阵 $U$
  • 原始特征空间中的平均值向量 $m$
  • 投影特征空间中的平均值向量 $p$

对于输入特征向量$x$,异常分数是通过比较原始输入向量的 $L_2$ 规范和投影向量的 $L_2$ 规范计算的:$\sqrt{\left(|x-m|_2^2 - | |Ux-p|_2^2\right)|x-m|_2^2}$。

此处介绍了该方法。

请注意,在将数据传递给训练程序之前,可以将算法应用于 ApproximatedKernelTransformer 内核 PCA。

有关使用示例的链接,请查看“另请参阅”部分。

字段

名称 说明
FeatureColumn

训练程序期望的功能列。

(继承自 TrainerEstimatorBase<TTransformer,TModel>)
LabelColumn

训练程序期望的标签列。 可以是 null,指示标签不用于训练。

(继承自 TrainerEstimatorBase<TTransformer,TModel>)
WeightColumn

训练器期望的权重列。 可以 null,指示权重不用于训练。

(继承自 TrainerEstimatorBase<TTransformer,TModel>)

属性

名称 说明
Info

用于 IEstimator<TTransformer> 使用随机 SVD 算法训练近似 PCA。

方法

名称 说明
Fit(IDataView)

火车并返回一个 ITransformer

(继承自 TrainerEstimatorBase<TTransformer,TModel>)
GetOutputSchema(SchemaShape)

用于 IEstimator<TTransformer> 使用随机 SVD 算法训练近似 PCA。

(继承自 TrainerEstimatorBase<TTransformer,TModel>)

扩展方法

名称 说明
AppendCacheCheckpoint<TTrans>(IEstimator<TTrans>, IHostEnvironment)

将“缓存检查点”追加到估算器链。 这将确保根据缓存的数据训练下游估算器。 在执行多个数据传递的训练器之前,拥有缓存检查点会很有帮助。

WithOnFitDelegate<TTransformer>(IEstimator<TTransformer>, Action<TTransformer>)

给定估算器后,返回一个包装对象,该对象将调用委托一次 Fit(IDataView) 。 估算器通常必须返回有关拟合情况的信息,这就是为什么 Fit(IDataView) 该方法返回特定类型化对象的原因,而不仅仅是常规 ITransformer对象。 但是,同时, IEstimator<TTransformer> 通常形成成包含许多对象的管道,因此我们可能需要通过 EstimatorChain<TLastTransformer> 估算器链来生成一个估算器链,而我们想要获取转换器的估算器被埋在此链中的某个位置。 对于这种情况,我们可以通过此方法附加一个委托,该委托将在调用拟合后调用。

适用于

另请参阅