赞
踩
孤立森林(Isolation Forest)是一种基于异常检测的机器学习算法,用于识别数据集中的异常点。孤立森林算法在异常检测、网络入侵检测、金融欺诈检测等领域有广泛应用,并且在处理大规模数据和高维数据时表现出色。孤立森林的基本思想的前提是,将异常点定义为那些 容易被孤立的离群点:
可以理解为分布稀疏,且距离高密度群体较远的点。从统计学来看,在数据空间里,若一个区域内只有分布稀疏的点,表示数据点落在此区域的概率很低,因此可以认为这些区域的点是异常的。
也就是说,孤立森林算法的理论基础有两点:
算法特点:
算法的工作过程如下:
import plotly.express as px from sklearn.datasets import load_iris from sklearn.ensemble import IsolationForest data = load_iris(as_frame=True) X,y = data.data,data.target df = data.frame # 模型训练 iforest = IsolationForest(n_estimators=100, max_samples='auto', contamination=0.05, max_features=4, bootstrap=False, n_jobs=-1, random_state=1) # fit_predict 函数 训练和预测一起 可以得到模型是否异常的判断,-1为异常,1为正常 df['label'] = iforest.fit_predict(X) # 传入的X可以是一维或多维的dataframe # 预测 decision_function 可以得出 异常评分 df['scores'] = iforest.decision_function(X)
结果可视化
## 重命名
df['anomaly'] = df['label'].apply(lambda x: 'outlier' if x==-1 else 'inlier')
## 绘制不同“scores”的概率密度分布
fig = px.histogram(df,x='scores',color='anomaly')
fig.show()
## 绘制3D散点图
fig = px.scatter_3d(df, x='petal width (cm)',
y='sepal length (cm)',
z='sepal width (cm)',
color='anomaly')
fig.show()
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。