目录

  • 一、前言
  • 二、孤立森林算法
    • 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)=2c(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_estimators:iTree 的数量(默认 100)。树越多,结果越稳定,但计算成本越高;
  • max_samples:每棵 iTree 处理的样本量(默认 256)。过小可能导致异常点漏检,过大则降低效率;
  • max_depth:iTree 的最大深度(默认随样本量动态调整)。限制深度可避免过拟合(尤其是样本量小时)。

三、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, high=4, size=(20, 2))
X = np.r_[X_inliers, X_outliers]# 创建并训练孤立森林模型
clf = IsolationForest(n_estimators=100, contamination=0.1)
clf.fit(X)# 预测每个数据点的异常标签
y_pred = clf.predict(X)# 可视化结果
plt.scatter(X[:, 0], X[:, 1], c=y_pred, cmap='viridis')
plt.title('Isolation Forest Anomaly Detection')
plt.xlabel('Feature 1')
plt.ylabel('Feature 2')
plt.show()

请添加图片描述

四、小结

以前,有问题,找百度;现在有个更快捷的方式,有问题找chatgpt。不得不说,各类gpt工具,确实助力工作效率得到了很大的提升,相比百度搜索查找信息更加精准。最后,底层算法虽重要,但上层的思维逻辑更重要,作为数据分析师,千锤百炼自己思考问题、定义问题、解决问题的方式方法,思维逻辑尤其重要!

五、参考学习

  • 孤立森林异常值评分公式推导
  • 【异常检测】孤立森林(Isolation Forest)算法简介
  • 孤立森林(isolation):一个最频繁使用的异常检测算法

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/news/919759.shtml
繁体地址,请注明出处:http://hk.pswp.cn/news/919759.shtml
英文地址,请注明出处:http://en.pswp.cn/news/919759.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Docker容器化部署实战:Tomcat与Nginx服务配置指南

部署Tomcat搜索镜像 使用以下命令搜索可用的Tomcat镜像:docker search tomcat拉取镜像 拉取官方Tomcat镜像:docker pull tomcat创建专用目录 为Tomcat配置和数据创建专用目录:mkdir tomcat运行临时容器并复制配置文件 启动临时容器以复制配置…

Go语言实战案例-使用SQLite实现本地存储

在开发工具类软件、桌面应用或者移动端时,我们经常需要一个轻量级数据库来做 本地存储。相比 MySQL、Postgres 等服务型数据库,SQLite 体积小、零配置、单文件存储,非常适合这种场景。Go 语言通过 GORM SQLite 驱动 就能轻松实现。本文将带你…

云计算学习100天-第23天

主机192.168.88.5 安装nginx#安装编译工具,正则表达式依赖包,SSL加密依赖包 yum -y install gcc make pcre-devel openssl-devel tar -xf /root/lnmp_soft.tar.gz cd lnmp_soft/ tar -xf nginx-1.22.1.tar.gz cd nginx-1.22.1/ #指定安装路径&…

【生成树+环】题解:P3907 环的异或_图论_环_异或_搜索_算法竞赛_C++

推销洛谷博客:https://www.luogu.com.cn/article/znmr9iu9 Link:Luogu - P3907 这里默认题目中指的环都是“简单环”(即没有“环套环”的情况)。 众所周知,树是图的一种特殊情况,且一定无环。如果我们想…

数据库优化提速(二)排序优化之搜索大数据酒店,进销存AI—仙盟创梦IDE

在 MySQL 数据库管理中,排序操作对于数据的有效展示和分析至关重要。本文将以一个实际的 SQL 查询为例,深入探讨排序优化方案,并结合进销存、酒店、知识库等大数据场景,阐述这些优化策略的应用价值。原始SELECT 应用编号, 应用序列…

Linux之Ansible自动化运维(二)

一、ansible Playbook应用由于服务器数量很多,配置信息比较多,因此可以利用Ansible Playbook编写任务自动化与流程化脚本Playbook 由一个或多个play组成的列表,play的主要功能Ansible中Task定义好的角色,指定剧本对应的服务器组二…

ArrayList线程不安全问题及解决方案详解

问题背景在多线程编程中&#xff0c;我们经常会遇到集合类的线程安全问题。Java中的ArrayList是一个常用的集合类&#xff0c;但它不是线程安全的。当多个线程同时操作同一个ArrayList实例时&#xff0c;可能会出现各种不可预料的问题。问题演示List<String> list new A…

车辆方向数据集 - 物体检测

关于数据集 包含超过50,000 张图像中具有方向的车辆的 50,000 多万个注释。它通过同时提供车辆类别和方向来减少对方向进行分类的辅助神经网络的需求。 预训练权重 我们将继续添加在车辆方向数据集和合成车辆方向数据集上训练的各种对象检测模型。如果您需要一些特定的预训练权…

Nextcloud搭建教程:使用Docker在腾讯云服务器上自建私人云盘

更多云服务器知识&#xff0c;尽在hostol.com你那百兆光纤的宽带。你是否也曾看着自己最珍贵的家庭照片、最私密的个人文档&#xff0c;静静地躺在某个科技巨头的服务器上&#xff0c;感到过一丝丝的不安&#xff1f;你的数据&#xff0c;到底被如何“阅读”和“分析”&#xf…

【操作记录】MNN Chat Android App 构建笔记(二)

&#x1f4d2; MNN Chat Android App 构建笔记 一、背景知识MNN 简介 MNN 是阿里开源的轻量级深度学习框架&#xff0c;支持 Android / iOS / Linux / Windows。提供推理、LLM、Vision、Audio 等模块。Android App 里用到的是 Java JNI 调用 MNN 库。CMake NDK 的作用 CMake&…

如何在 Axios 中处理多个 baseURL 而不造成混乱

网罗开发&#xff08;小红书、快手、视频号同名&#xff09;大家好&#xff0c;我是 展菲&#xff0c;目前在上市企业从事人工智能项目研发管理工作&#xff0c;平时热衷于分享各种编程领域的软硬技能知识以及前沿技术&#xff0c;包括iOS、前端、Harmony OS、Java、Python等方…

AP服务发现PRS_SOMEIPSD_00255 的解析

[PRS_SOMEIPSD_00255 ] 「SOME/IP-SD头部的重启标志&#xff0c;对于重启后发出的所有报文&#xff0c;都应设置为 1&#xff0c;直至 SOME/IP头部中的会话 ID (Session-ID) 回绕并因此再次从 1 开始。在此回绕之后&#xff0c;重启标志应设置为 0。」(RS_SOMEIPSD_00006)核心含…

纯手撸一个RAG

纯手撸一个RAGRAG基本流程第一阶段&#xff1a;数据预处理&#xff08;索引&#xff09; - 构建知识库第二阶段&#xff1a;查询与生成&#xff08;推理&#xff09; - 回答问题总结Chunk介绍Chunk框架的介绍Chunk核心概念选择分块策略和框架如何选择分块框架Python代码实现第一…

视觉语言对比学习的发展史:从CLIP、BLIP、BLIP2、InstructBLIP(含MiniGPT4的详解)

前言 本文一开始是属于此文《图像生成(AI绘画)的发展史&#xff1a;从CLIP、BLIP、InstructBLIP到DALLE、DALLE 2、DALLE 3、Stable Diffusion(含ControlNet详解)》的&#xff0c;后独立成本文 第一部分 从CLIP、BLIP1、BLIP2到InstructBLIP 1.1 CLIP&#xff1a;基于对比文本…

HTTP代理与SOCKS代理的区别、应用场景与选择指南

在互联网日常使用与跨境业务中&#xff0c;HTTP代理 和 SOCKS代理 是两种常见的网络代理方式。无论是跨境电商、社交媒体账号运营、数据采集&#xff0c;还是科学访问海外资源&#xff0c;都需要选择合适的代理协议。什么是HTTP代理&#xff1f;定义HTTP代理 是基于 HTTP协议 的…

AI重塑职业教育:个性化学习计划提效率、VR实操模拟强技能,对接就业新路径

职业教育长期面临着一系列问题&#xff0c;包括“统一课程难以适配不同基础学员”、“实操反馈滞后”和“就业技能与企业需求脱节”等。随着人工智能技术的应用&#xff0c;这些传统教学模式正在发生变化。个性化技能培养得以实现&#xff0c;甚至可以提前识别学员的就业短板。…

主题配色下的背景透明度

用 CSS color-mix() 解决背景透明度的痛点 在设计卡片组件时&#xff0c;经常遇到这样的需求&#xff1a;卡片背景需要80%透明度&#xff0c;鼠标悬浮在内部某项时&#xff0c;修改背景色但保持同样的透明度。 问题场景 .card {background: rgba(59, 130, 246, 0.8); /* 蓝色80…

【Python代码】谷歌专利CSV处理函数

以下是一个重构后的高可用、可配置、低耦合的专利CSV处理函数&#xff0c;包含清晰的注释和结构&#xff1a; import csv import pandas as pd from datetime import datetime import os from typing import List, Dict, Any, Optional, Tuple import logging# 配置日志 loggin…

3-2〔OSCP ◈ 研记〕❘ WEB应用攻击▸WEB安全防护体系

郑重声明&#xff1a; 本文所有安全知识与技术&#xff0c;仅用于探讨、研究及学习&#xff0c;严禁用于违反国家法律法规的非法活动。对于因不当使用相关内容造成的任何损失或法律责任&#xff0c;本人不承担任何责任。 如需转载&#xff0c;请注明出处且不得用于商业盈利。 …

PCIe 5.0相比顶级PCIe 4.0有何提升?

还在为PCIe 4.0固态硬盘那7000MB/s的速度沾沾自喜&#xff1f;醒醒&#xff0c;朋友。当很多人还在讨论PCIe 4.0是否“性能过剩”时&#xff0c;真正面向未来的PCIe 5.0已经带着碾压级的实力&#xff0c;来到了我们面前。这不是一次常规的“升级”&#xff0c;更不是英特尔式的…