上海网站推广大全,企业展示型网站程序,共享ip网站 排名影响,怎么做好营销推广目录一、前言二、孤立森林算法2.1 算法简介2.2 基本原理2.3 算法步骤2.4 异常分数计算方式2.5 python调用方式三、python代码示例四、小结五、参考学习一、前言
近期在研究构建寿命预测模型#xff0c;相信很多数据人都懂建模的过程#xff0c;其实有80%的时间都是在和数据处…
目录一、前言二、孤立森林算法2.1 算法简介2.2 基本原理2.3 算法步骤2.4 异常分数计算方式2.5 python调用方式三、python代码示例四、小结五、参考学习一、前言
近期在研究构建寿命预测模型相信很多数据人都懂建模的过程其实有80%的时间都是在和数据处理打交道。
在数据处理过程中一种常见的处理场景即异常值处理。日常常用的异常值处理最常用的几种方式 西格玛法则、四分位距、指定阈值 来识别检测异常值其它使用过的方法主要是基于距离或者密度的方法来识别不过这类方法小数据量还行大数据量就很很影响检测效率。调研发现一种以前没用过的一种方法孤立森林算法Isolation Forest因此作一记录学习。
二、孤立森林算法
2.1 算法简介
孤立森林Isolation Forest是一种用于异常检测的无监督学习算法属于ensemble的方法由 Fei Tony Liu、Kai Ming Ting 和 Zhi-Hua Zhou 于 2008 年提出。它通过构建多棵孤立树Isolation Tree来识别数据中的异常点具有线性时间复杂度和高精准度计算效率高、能够处理高维数据等优点广泛应用于网络安全、金融欺诈检测、工业设备故障检测等领域。
2.2 基本原理
孤立森林算法的核心思想基于这样一个事实异常点通常是数据集中少数且与其他数据点差异较大的点因此它们更容易被孤立出来。该算法通过递归地随机划分数据空间将异常点快速地隔离到树的浅层节点而正常点则需要更多的划分才能被隔离从而根据数据点在孤立树中的路径长度来判断其是否为异常点。
2.3 算法步骤
步骤一构建孤立树iTree 从原始数据集中随机选择一部分样本通常为固定数量记为 sample_size作为当前树的训练样本。随机选择一个特征和该特征上的一个分割值将样本集划分为两个子集。对每个子集重复上述步骤直到满足停止条件例如子集中只有一个样本或达到最大树深度。 步骤二构建孤立森林 重复步骤一构建多棵孤立树通常记为 n_estimators这些树构成了孤立森林。 步骤三计算路径长度 对于每个数据点将其输入到孤立森林中的每棵树中记录该数据点在每棵树中从根节点到叶节点所经过的路径长度。 步骤四计算异常分数 根据数据点在所有孤立树中的平均路径长度计算其异常分数。异常分数的取值范围在 0 到 1 之间分数越接近 1 表示该数据点越可能是异常点分数越接近 0 表示该数据点越可能是正常点。 2.4 异常分数计算方式
为了量化异常程度孤立森林定义了异常分数 s(x,n)s(x,n)s(x,n)公式如下 s(x,n)2−E(h(x))c(n)s(x,n)2^{-\frac{E(h(x))}{c(n)}}s(x,n)2−c(n)E(h(x)) 其中
h(x)样本x在iTree上的路径长度E(h(x))样本 x 在所有 iTree 中的平均路径长度c(n)样本量为 n 时的 “平均路径长度期望”作为归一化因子由理论推导得出与 n 近似成对数关系n构建 iTree 时的样本子集大小。
分数解读
s≈1样本极可能是异常点路径长度远短于平均s≈0样本极可能是正常点路径长度接近平均s≈0.5样本处于正常与异常的边界路径长度接近随机划分的平均水平。
2.5 python调用方式
python中有现在的算法库通过下述方式即可导入使用。
from sklearn.ensemble import IsolationForest** 函数关键参数解析**
n_estimatorsiTree 的数量默认 100。树越多结果越稳定但计算成本越高max_samples每棵 iTree 处理的样本量默认 256。过小可能导致异常点漏检过大则降低效率max_depthiTree 的最大深度默认随样本量动态调整。限制深度可避免过拟合尤其是样本量小时。
三、python代码示例
# 导入必要的库
import pandas as pd # 数据处理库
import numpy as np # 数值计算库
import matplotlib.pyplot as plt # 数据可视化库
from sklearn.model_selection import train_test_split # 数据集划分工具
from sklearn.preprocessing import StandardScaler # 数据标准化工具
from sklearn.ensemble import IsolationForest # 异常检测模型
from sklearn.metrics import mean_squared_error, r2_score ,root_mean_squared_error # 模型评估指标
from itertools import groupby
from operator import itemgetter# 生成一些示例数据
np.random.seed(42)
X_inliers 0.3 * np.random.randn(100, 2)
X_inliers np.r_[X_inliers 2, X_inliers - 2]
X_outliers np.random.uniform(low-4, high4, size(20, 2))
X np.r_[X_inliers, X_outliers]# 创建并训练孤立森林模型
clf IsolationForest(n_estimators100, contamination0.1)
clf.fit(X)# 预测每个数据点的异常标签
y_pred clf.predict(X)# 可视化结果
plt.scatter(X[:, 0], X[:, 1], cy_pred, cmapviridis)
plt.title(Isolation Forest Anomaly Detection)
plt.xlabel(Feature 1)
plt.ylabel(Feature 2)
plt.show()四、小结
以前有问题找百度现在有个更快捷的方式有问题找chatgpt。不得不说各类gpt工具确实助力工作效率得到了很大的提升相比百度搜索查找信息更加精准。最后底层算法虽重要但上层的思维逻辑更重要作为数据分析师千锤百炼自己思考问题、定义问题、解决问题的方式方法思维逻辑尤其重要
五、参考学习
孤立森林异常值评分公式推导【异常检测】孤立森林Isolation Forest算法简介孤立森林(isolation)一个最频繁使用的异常检测算法