在 Sklearn 异常值检测方法中将 'contamination' 参数设置为 'auto' 有什么作用?
What does setting the 'contamination' parameter to 'auto' in Sklearn Outlier Detection methods do?
我有一个数据集,我需要能够控制异常值检测模型(隔离森林、椭圆包络、OneClassSVM...)在多大程度上将给定点视为异常值(类似于 Z -分数或 IQR 分数)。这意味着我不想提前指定我的数据集中离群点的百分比,更好地称为 contamination
参数,但我希望这个百分比取决于我希望我的模型有多“挑剔”。这是否与将参数 contamination
设置为 'auto' 相同?
以下是 Sci-kit Learn 软件包对此的说明:
“如果‘auto’,则阈值与原始论文中的一样”。
本文指的是哪篇原创论文?将 contamination
参数设置为 'auto' 是否解决了我的问题?
我看论文没有多大成功,但是看代码给了我答案。注意这部分实现:
if self.contamination == "auto":
# 0.5 plays a special role as described in the original paper.
# we take the opposite as we consider the opposite of their score.
self.offset_ = -0.5
return self
# else, define offset_ wrt contamination parameter
self.offset_ = np.percentile(self.score_samples(X),
100. * self.contamination)
您可以查看完整的实现 here。
当您设置 contamination='auto'
时,影响模型预测的 offset_
值设置为 -0.5
,而如果您使用 float
contamination
参数中的值 偏移值将发生变化以达到您之前通过的污染百分比。因此模型将根据此决定确定数据中的污染百分比。
我有一个数据集,我需要能够控制异常值检测模型(隔离森林、椭圆包络、OneClassSVM...)在多大程度上将给定点视为异常值(类似于 Z -分数或 IQR 分数)。这意味着我不想提前指定我的数据集中离群点的百分比,更好地称为 contamination
参数,但我希望这个百分比取决于我希望我的模型有多“挑剔”。这是否与将参数 contamination
设置为 'auto' 相同?
以下是 Sci-kit Learn 软件包对此的说明: “如果‘auto’,则阈值与原始论文中的一样”。
本文指的是哪篇原创论文?将 contamination
参数设置为 'auto' 是否解决了我的问题?
我看论文没有多大成功,但是看代码给了我答案。注意这部分实现:
if self.contamination == "auto":
# 0.5 plays a special role as described in the original paper.
# we take the opposite as we consider the opposite of their score.
self.offset_ = -0.5
return self
# else, define offset_ wrt contamination parameter
self.offset_ = np.percentile(self.score_samples(X),
100. * self.contamination)
您可以查看完整的实现 here。
当您设置 contamination='auto'
时,影响模型预测的 offset_
值设置为 -0.5
,而如果您使用 float
contamination
参数中的值 偏移值将发生变化以达到您之前通过的污染百分比。因此模型将根据此决定确定数据中的污染百分比。