iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > Python >Python如何实现孤立随机森林算法
  • 484
分享到

Python如何实现孤立随机森林算法

2023-06-29 16:06:05 484人浏览 安东尼

Python 官方文档:入门教程 => 点击学习

摘要

这篇文章主要介绍python如何实现孤立随机森林算法,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!1 简介孤立森林(isolation Forest)是一种高效的异常检测算法,它和随机森林类似,但每次选择划分属性和划

这篇文章主要介绍python如何实现孤立随机森林算法,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!

1 简介

孤立森林(isolation Forest)是一种高效的异常检测算法,它和随机森林类似,但每次选择划分属性和划分点(值)时都是随机的,而不是根据信息增益或基尼指数来选择。

2 孤立随机森林算法

2.1 算法概述

Isolation,意为孤立/隔离,是名词,其动词为isolate,forest是森林,合起来就是“孤立森林”了,也有叫“独异森林”,好像并没有统一的中文叫法。可能大家都习惯用其英文的名字isolation forest,简称iForest 。

iForest算法是由南京大学的周志华和澳大利亚莫纳什大学的Fei Tony Liu,Kai Ming Ting等人共同移除,用于挖掘数据,它是适用于连续数据(Continuous numerical data)的异常检测,将异常定义为“容易被孤立的离群点(more likely to be separated)”——可以理解为分布稀疏且离密度高的群体较远的点。用统计学来解释,在数据空间里面,分布稀疏的区域表示数据发生在此区域的概率很低,因此可以认为落在这些区域里的数据是异常的。通常用于网络安全中的攻击检测和流量异常等分析,金融机构则用于挖掘出欺诈行为。对于找出的异常数据,然后要么直接清除异常数据,如数据清理中的去噪数据,要么深入分析异常数据,比如分析攻击,欺诈的行为特征。

2.2 原理介绍

iForest 属于Non-parametric和unsupervised的方法,即不用定义数学模型也不需要有标记的训练。对于如何查找哪些点是否容易被孤立(isolated),iForest使用了一套非常高效的策略。假设我们用一个随机超平面来切割(split)数据空间(data  space),切一次可以生成两个子空间(详细拿刀切蛋糕一分为二)。之后我们再继续用一个随机超平面来切割每个子空间,循环下去,直到每个子空间里面只有一个数据点为止。直观上来讲,我们可以发现那些密度很高的簇是被切分很多次才会停止切割,但是那些密度很低的点很容易很早就停到一个子空间看了。

iForest 算法得益于随机森林的思想,与随机森林由大量决策树组成一样,iForest森林也由大量的二叉树组成,iForest 中的树叫 isolation tree,简称 iTree,iTree 树和决策树不太一样,其构建过程也比决策树简单,是一个完全随机的过程。

假设数据集有 N 条数据,构建一颗 ITree时,从 N条数据中均匀抽样(一般是无放回抽样)出 n 个样本出来,作为这棵树的训练样本。在样本中,随机选出一个特征,并在这个特征的所有值范围内(最小值和最大值之间)随机选一个值,对样本进行二叉划分,将样本中小于该值的划分到节点的左边,大于等于该值的划分到节点的右边。由此得到一个分裂条件和左右两边的数据集,然后分别在左右两边的数据集上重复上面的过程,直到数据集只有一条记录或者达到了树的限定高度。

由于异常数据较小且特征值和正常数据差别很大。因此,构建 iTree的时候,异常数据离根更近,而正常数据离根更远。一颗ITree的结果往往不可信,iForest算法通过多次抽样,构建多颗二叉树。最后整合所有树的结果,并取平均深度作为最终的输出深度,由此计算数据点的异常分支。

2.3 算法步骤

怎么来切这个数据空间是iForest的设计核心思想,本文仅学习最基本的方法,由于切割是随机的,所以需要用ensemble的方法来得到一个收敛值(蒙特卡洛方法),即反复从头开始切,然后平均每次切的结果。IForest由 t个iTree(Isolation Tree)孤立树组成,每个iTree是一个二叉树结构,所以下面我们先说一下iTree树的构建,然后再看iForest树的构建。

3 参数讲解

(1)n_estimators:构建多少个itree,int,optional (default=100)指定该森林中生成的随机树数量

(2)max_samples:采样数,自动是256,int,optional(default='auto)

用来训练随机数的样本数量,即子采样的大小:

1)如果设置的是一个int常数,那么就会从总样本 X 拉取 max_samples个样本生成一棵树  iTree

2)如果设置的是一个float浮点数,那么就会从总样本 X 拉取 max_samples*X.shape[0] 个样本,X.shape[0] 表示总样本个数

3) 如果设置的是 “auto”,则max_samples=min(256, n_samples),n_samples即总样本的数量

如果max_samples 值比提供的总样本的数量还大的话,所有的样本都会用来构造数,意思就是没有采样了,构造的 n_estimators棵ITree使用的样本都是一样的,即所有的样本。

(3)contamination:c(n)默认是0.1,float in (0, 0.5),optional(default=0.1),取值范围为(0, 0.5),表示异常数据占给定的数据集的比例,就是数据集中污染的数量,定义该参数值的作用是在决策函数中定义阈值。如果设置为“auto”,则决策函数的阈值就和论文一样,在版本0.20中有变换:默认值从0.1变为0.22的auto。

(4)max_features:最大特征数,默认为1,int or float,optional,指定从总样本X中抽取来训练每棵树iTree 的属性的数量,默认只使用一个属性

如果设置为 int 整数,则抽取 max_features 个属性

如果是float浮点数,则抽取 max_features *X.shape[1] 个属性

(5)bootstrap:boolean,optional(default = False),构建Tree时,下次是否替换采样,为True为替换,则各个树可放回地对训练数据进行采样;为False为不替换,即执行不放回的采样

(6)n_jobs:int or None, optional (default = None), 在运行 fit() 和 predict() 函数时并行运行的作业数量。除了在 joblib.parallel_backend 上下文的情况下,None表示为1,设置为 -1 则表示使用所有可以使用的处理器 

(7)behaviour:str,default='old',决策函数 decision_function 的行为,可以是“old”和‘new’。设置为 behavior='new'将会让 decision_function 去迎合其它异常检测算法的api,这在未来将会设置为默认值。正如在 offset_ 属性文档中详细解释的那样,decision_function 变得依赖于 contamination 参数,以 0 作为其检测异常值的自然阈值。

New in version 0.20:behaviour参数添加到了0.20版本中以实现后向兼容

behaviour='old'在0.20版本中以经弃用,在0.22版本中将不能使用

behaviour参数将在0.22版本中弃用,将在0.24版本中移除

(8)random_state:int,RandomState instance or None,optional(default=None)

如果设置为 int 常数,则该 random_state 参数值是用于随机数生成器的种子

如果设置为RandomState实例,则该 random_state 就是一个随机数生成器

如果设置为None,则该随机数生成器就是使用在 np.random中RandomState实例

(9)verbose:int,optional(default=0)控制树构建过程的冗长性

(10)warm_start:bool,optional(default=False),当设置为TRUE时,重用上一次调用的结果去 fit,添加更多的树到上一次的森林1集合中;否则就 fit一整个新的森林

4 Python代码实现 

# _*_coding:utf-8_*_ #~~~~欢迎关注公众号:电力系统与算法之美~~~~~~~·#~~~~~~~~导入相关库~~~~~~~~~~~·import numpy as npimport matplotlib.pyplot as pltfrom pylab import *import matplotlib; matplotlib.use('TkAgg')mpl.rcParams['font.sans-serif'] = ['SimHei']mpl.rcParams['axes.unicode_minus'] = Falsefrom sklearn.ensemble import IsolationForest  #孤立随机森林 rng = np.random.RandomState(42)  #该方法为np中的伪随机数生成方法,其中的42表示种子,只要种子一致 产生的伪随机数序列即为一致。 #~~~~~~~产生训练数据~~~~~~~~~~X = 0.3 * rng.randn(100, 2)  #randn:标准正态分布;rand的随机样本位于[0, 1)中X_train = np.r_[X + 2, X - 2]X = 0.3 * rng.randn(20, 2)X_test = np.r_[X + 2, X - 2]X_outliers = rng.unifORM(low=-4, high=4, size=(20, 2)) #~~~~~~~~~训练模型~~~~~~~~~~~~·clf = IsolationForest( max_samples=100,random_state=rng, contamination='auto')clf.fit(X_train)y_pred_train = clf.predict(X_train)y_pred_test = clf.predict(X_outliers) xx, yy = np.meshgrid(np.linspace(-5, 5, 50), np.linspace(-5, 5, 50))Z = clf.decision_function(np.c_[xx.ravel(), yy.ravel()])Z = Z.reshape(xx.shape) #~~~~~~~~~~~~~~~~可视化~~~~~~~~~~~~~~~~~~·plt.title("孤立随机森林")plt.contourf(xx, yy, Z, camp=plt.cm.Blues_r)b1 = plt.scatter(X_train[:, 0], X_train[:, 1], c='green',                 s=20, edgecolor='k')b2 = plt.scatter(X_test[:, 0], X_test[:, 1], c='white',                 s=20, edgecolor='k')c = plt.scatter(X_outliers[:, 0], X_outliers[:, 1], c='red',                s=20, edgecolor='k')plt.axis('tight')plt.xlim((-5, 5))plt.ylim((-5, 5))plt.legend([b1, b2, c],           ["training observations",            "new regular observations", "new abnormal observations"],           loc="upper left")plt.show()

5 结果 

Python如何实现孤立随机森林算法

以上是“Python如何实现孤立随机森林算法”这篇文章的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注编程网Python频道!

--结束END--

本文标题: Python如何实现孤立随机森林算法

本文链接: https://www.lsjlt.com/news/325639.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Python如何实现孤立随机森林算法
    这篇文章主要介绍Python如何实现孤立随机森林算法,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!1 简介孤立森林(isolation Forest)是一种高效的异常检测算法,它和随机森林类似,但每次选择划分属性和划...
    99+
    2023-06-29
  • Python实现孤立随机森林算法的示例代码
    目录1 简介2 孤立随机森林算法2.1 算法概述2.2 原理介绍2.3 算法步骤3 参数讲解4 Python代码实现 5 结果 1 简介 孤立森林(isolati...
    99+
    2024-04-02
  • python随机森林算法怎么实现
    要实现随机森林算法,可以使用sklearn库中的RandomForestClassifier类。下面是一个简单的例子:```pyth...
    99+
    2023-10-10
    python
  • python怎么实现随机森林算法
    要实现随机森林算法,你可以使用scikit-learn库中的RandomForestClassifier类。下面是一个示例代码:``...
    99+
    2023-08-15
    python
  • 基于随机森林算法的森林生物量反演【Matlab Python】
    一、意义以及技术路线   估算森林生物量的方法大致可归为以下两种 :一是传统估算方法,大多是采用抽样方法获取野外调查数据估算森林生物量,这种方法往往需要较多的人力物力来完成,并且获取的数据不具有空间连续性特征,无法反映环境因子对估算结果的影...
    99+
    2023-09-28
    随机森林 算法 机器学习 python matlab
  • 随机森林算法(Random Forest)原理分析及Python实现
    目录 一、基础概念1.监督式机器学习2. 回归和分类3. 决策树4. 随机森林 二、Random Forest 的构造1. 算法实现2.数据的随机选取3. 待选特征的随机选取 三、Ra...
    99+
    2023-09-27
    python 算法 随机森林
  • R语言如何实现随机森林
    这篇文章主要为大家展示了“R语言如何实现随机森林”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“R语言如何实现随机森林”这篇文章吧。随机森林算法介绍算法介绍:简单的说,随机森林就是用随机的方式建立...
    99+
    2023-06-20
  • 保姆级随机森林算法Python教学
    摘要         机器学习算法是数据挖掘、数据能力分析和数学建模必不可少的一部分,而随机森林算法和决策树算法是其中较为常用的两种算法,本文将会对随机森林算法的Python实现进行保姆级教学。 0 绪论         数据挖掘和数学建模...
    99+
    2023-09-27
    python 随机森林
  • python人工智能算法之随机森林怎么实现
    这篇文章主要介绍了python人工智能算法之随机森林怎么实现的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇python人工智能算法之随机森林怎么实现文章都会有所收获,下面我们一起来看看吧。随机森林(Random...
    99+
    2023-07-06
  • R语言中怎么实现随机森林算法
    在R语言中,您可以使用 randomForest 包来实现随机森林算法。以下是一个简单的示例代码,演示如何在R中使用随机森林算法进行...
    99+
    2024-04-03
    R语言
  • python实现对森林生物量进行随机森林回归预测
    使用随机森林回归预测森林生物量(python) 随机森林算法的基本思想是基于多颗决策树的集成学习过程,使用场景广泛,一般的分类回归问题都可以使用。我们以光学影像为例,来估测森林生物量。 建立回归关系需...
    99+
    2023-09-12
    python 随机森林 回归
  • python实现H2O中的随机森林算法介绍及其项目实战
    随机森林(Random Forest)是一种集成学习方法,通过组合多个决策树来进行分类和回归。它在H2O中也有相应的实现。H2O是一...
    99+
    2023-08-15
    python
  • 使用R语言怎么实现一个随机森林算法
    这篇文章给大家介绍使用R语言怎么实现一个随机森林算法,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。R语言包“randomForest”用于创建随机森林。安装R包在R语言控制台中使用以下命令安装软件包。 您还必须安装相关...
    99+
    2023-06-15
  • python人工智能算法之随机森林流程详解
    目录随机森林优缺点总结随机森林 (Random Forest)是一种基于决策树(前文有所讲解)的集成学习算法,它能够处理分类和回归两类问题。 随机森林的基本思想是通过随机选择样本和...
    99+
    2023-03-21
    python 人工智能算法随机森林 python 人工智能
  • Matlab利用随机森林(RF)算法实现回归预测详解
    目录1 分解代码1.1 最优叶子节点数与树数确定1.2 循环准备1.3 数据划分1.4 随机森林实现1.5 精度衡量1.6 变量重要程度排序1.7 保存模型2 完整代码本文分为两部分...
    99+
    2023-02-17
    Matlab随机森林 回归预测 Matlab 回归预测 Matlab随机森林
  • python人工智能算法之随机森林流程是什么
    本文小编为大家详细介绍“python人工智能算法之随机森林流程是什么”,内容详细,步骤清晰,细节处理妥当,希望这篇“python人工智能算法之随机森林流程是什么”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。随机森...
    99+
    2023-07-05
  • R语言实现随机森林的方法示例
    目录随机森林算法介绍算法介绍:决策树生长步骤:投票过程:基本思想:随机森林的优点:缺点R语言实现随机森林模型搭建1:randomForest()函数用于构建随机森林模型2:impor...
    99+
    2024-04-02
  • 随机森林算法原理及实际应用的Python示例(带完整代码)
    随机森林算法是一种集成技术,能够使用多个决策树和一种称为Bootstrap和聚合的技术来执行回归和分类任务。这背后的基本思想是结合多个决策树来确定最终输出,而不是依赖于单个决策树。 机器学习中的随机森林 随机森林产生大量分类树...
    99+
    2024-01-23
    算法的概念
  • R语言关于随机森林算法的知识点详解
    在随机森林方法中,创建大量的决策树。 每个观察被馈入每个决策树。 每个观察的最常见的结果被用作最终输出。 新的观察结果被馈入所有的树并且对每个分类模型取多数投票。 对构建树时未使用的...
    99+
    2024-04-02
  • 如何在java中利用RandomForest实现一个随机森林效果
    如何在java中利用RandomForest实现一个随机森林效果?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。随机森林是由多棵树组成的分类或回归方法。主要思想来源于Baggin...
    99+
    2023-05-31
    java randomforest
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作