目录

1 概述

2 异常检测算法

2.1 孤立随机森林算法思想

2.2 孤立随机森林算法步骤

2.3 其他异常检测算法

3 Python代码

4 甲虫天线搜索算法(Python实现)


1 概述

用电行为包含了电力用户在外界影响下进行的用电活动和背后的用电规律 。用电活动可以通过智能电表采样以负荷曲线的形式表现出来,用电规律包含了用户用电习惯爱好,需要通过数据挖掘才能表示出来。

分析用户用电行为,可以为客户提供节能建议,以及及时发现窃电用户,减少电网损失。进行用户家庭用电行为分析的前提是先进行家用负荷分解,负荷分解得到各电器功率数据之后,再通过这些电器功率数据进行数据处理与分析,分析用户用电行为。

2 异常检测算法

2.1 孤立随机森林算法思想

孤立随机森林是无监督学习模型中用于检测异常值的一种方法,不同于其他通过计算距离和密度来识别样本点是否是孤立点,而是通过样本的疏密程度来判断样本的是否孤立。仅适用于连续型数据。这是一种通过隔离数据中的离群值识别异常的无监督学习算法。

孤立森林的原理是:异常值是少量且不同的观测值,因此更易于识别。孤立森林集成了多棵孤立树,在给定的数据样本中隔离异常值。孤立森林采用二分法将样本点进行分区,该算法将样本中所有样本进行切分,直到每个样本点或极少样本点被划分在同一区域呢,这样样本越密集的区域,区域中的点被孤立时所需要的切分次数就越多,如果样本是孤立点,则该点被孤立时切分的次数就越低。因此异常值是树中路径更短的样本点,路径长度是从根节点到叶子节点经过的边数.

2.2 孤立随机森林算法步骤

孤立随机森林是和随机森林的概念类似,孤立随机森林是由多颗孤立树构成,先使用训练集集训练每颗孤立树,然后再计算验证集每个样本的异常分数值(0,1]判断该样本是否异常,分值越接近1样本越孤立,即样本异常可能性越大。


其算法流程如下:

(1)训练:
先从全部数据中抽取一批样本,构建t棵孤立树,对于每棵孤立树,然后随机选择一个特征作为起始节点,并随机选择一个值,这个值应在该特征的最小值和最大值之间,将样本中小于该取值的数据划到左分支,大于等于该取值的划到右分支。然后,在左右两个分支数据中,重复上述步骤,直到满足如下条件:数据不可再分,即:只包含一条数据,或者全部数据相同或者二叉树达到限定的最大深度。


(2)预测:
获得t个孤立树之后,孤立随机森林训练就结束,然后我们可以用生成的孤立随机森林来评估测试数据。对于一个训练样本数据x,我们令其遍历每一棵孤立树,然后计算x最终落在每个树第几层(x在树的高度),然后我们可以得出x在每棵树的高度平均值。值得注意的是,如果x落在一个节点中含多个训练数据,可以使用一个公式来修正x的高度计算计算样本数据x的异常分值时,先要估算它在每棵孤立树中的路径长度(也可以叫深度)。具体的,先沿着一棵孤立树,从根节点开始按不同特征的取值从上往下,直到到达某叶子节点。假设孤立树的训练样本中同样落在x所在叶子节点的样本数为T.size ,则数据x在这棵孤立树上的路径长度h(x),可以用下面这个公式计算:

式中:e 表示数据x从孤立树的根节点到叶节点过程中经过的边的数目,C(T.size)可以认为是一个修正值,它表示在一棵用T.size 条样本数据构建的二叉树的平均路径长度。


平均路径长度计算公式如下:

式中:H(n-1) 可用 ln(n-1)+0.5772156649 估算,这里的常数是欧拉常数。

数据 x 最终的异常分值 Score(x) 综合了多棵 iTree 的结果。


异常分值公式如下:

式中: E(h(x)) 表示数据 x 在多棵 iTree 的路径长度的均值, 表示单棵iTree 的训练样本的样本数, c( ) 表示用 Ψ条数据(样本点)构建的二叉树的平均路径长度。得分越接近 1,表明数据 x 越异常,得分越接近 0,表示数据 x 越正常.


2.3 其他异常检测算法

(1)k 均值聚类做异常检测

在一般任务中,我们可以使用k均值聚类进行异常检测,流程如下:
1)利用“轮廓系数法”、“拐点法”、“间隔统计量法”或者“经验法”确定聚类的个数。
2)基于具体的聚类个数,对数据实施k均值聚类的应用,得到簇中心点的坐标。
3)计算簇内每个点到簇中心点的距离。
4)将距离跟阈值相比较,如果其大于阈值则认为是异帘,省则止吊。一般一个簇有一个阈值,阈值设定规则为:簇内每个点到簇中心的距离的平均值+3倍簇内每个点到簇中心的距离的标准差。

(2)密度聚类做异常检测

密度聚类(Density-Based Spatial Clustering of Applications with Noise,DBSCAN)该算法将具有足够密度的区域划分为子区域簇,并在具有噪声 的空间数据库中可以发现任意形状的簇,在一个空间中,将距离近的点分为一类,将低密度的点抛弃。

形象来说,我们可以认为这是系统在众多样本点中随机选中一个,围绕这个被选中的样本点画一个圆,规定这个圆的半径以及圆内最少包含的样本点,如果在指定半径内有足够多的样本点在内,那么这个圆圈的圆心就转移到这个内部样本点,继续去圈附近其它的样本点,就像传销一样,继续去发展下线。等到这个滚来滚去的圈发现所圈住的样本点数量少于预先指定的值,就停止了。那么我们称最开始那个点为核心点,如A,停下来的那个点为边界点,如B、C,在这个区域外的点为离群点。

3 Python代码

孤立随机森林(Isolation Forest)(Python实现)

4 甲虫天线搜索算法(Python实现)

甲虫天线搜索算法(Python实现)

用户用电行为分析+甲虫天线搜索算法(Python实现)相关推荐

  1. kmeans聚类算法_基于K-means聚类的用户用电行为分析

    大数据时代,通过简单的仪表监测家庭.工厂等地的实时用电量后,可以通过聚类算法对用户用电特征进行聚类,这有利于: 1.将用电行为类似的用户进行聚合,以便用电公司提供更合理的套餐服务: 2.根据不同类型的 ...

  2. 中型项目(1)——电信用户购买套餐分析预测(基于python)

    数据来源 是在kaggle上下载的,或者来自某个社区的数据集,点赞后私信我拿数据集哦~ 全流程 1,导入包 import warnings from pandas_profiling import P ...

  3. 利用Python实现用户群组分析!

    本文中介绍的是一种数据分析方法:群组分析Cohort Analysis. 群组分析是用于研究用户行为和提高增长的分析思路.在本文中,将结合一个数据集利用Python来实现该分析方法. https:// ...

  4. 利用Python对淘宝用户行为进行分析

    1. 项目背景 该项目的数据集来源于天池,是由阿里巴巴提供的一个淘宝用户行为数据集,其中包含了2017年11月25日至2017年12月3日之间,一百万个随机用户的所有用户行为(行为包括点击.购买.加购 ...

  5. 是不是感觉被淘宝监控了!看啥立马就推送过来!用Python对淘宝用户行为进行分析!

    一.认识数据 1.1 数据来源及介绍 本数据来源于阿里云天池,是其随机选择约100万用户在2017年11月25日至12月3日之间发生的行为记录,具有包括点击.购买.加购物车和收藏商品的行为. 数据集的 ...

  6. python 淘宝用户行为数据集 分析与数据源

    利用Python对淘宝用户行为进行分析 源数据来源于: https://tianchi.aliyun.com/dataset/dataDetail?dataId=649&userId=1 可以 ...

  7. mysql+web日志分析工具_用Python+MySQL实现2017年web日志分析报告

    日志分析在web系统中故障排查.性能分析方面有着非常重要的作用.目前,开源的ELK系统是成熟且功能强大的选择.但是部署及学习成本亦然不低,这里我实现了一个方法上相对简单(但准确度和效率是有保证的)的实 ...

  8. python制作动图、怎么运行_漫画:如何分析运行中的 Python 程序?

    漫画:如何分析运行中的 Python 程序? 内容简介如何使用 py-spy 如何读懂火焰图 遇到的问题 大佬组长透露出几个关键信息:1. 要排查的是线上服中正在运行的 Python 程序 2.&qu ...

  9. 基于用户评论情感分析详细设计与技术实现

    基于用户评论情感分析详细设计与技术实现 文章目录 基于用户评论情感分析详细设计与技术实现 前言 一.技术架构 二.分析服务器构建 1.1 创建flask项目 1.2 编写数据库连接脚本,获取用户评论数 ...

最新文章

  1. selenium之如何等待页面元素加载完成
  2. objective c 语法
  3. TCP/IP总结(4)TCP 概述
  4. C# 总结const、 readonly、 static三者区别:
  5. CF1178H Stock Exchange
  6. Java程序员从笨鸟到菜鸟之(八十七)跟我学jquery(三)jquery动态创建元素和常用函数示例...
  7. 在 Mac 上右键单击的方法
  8. ContactsProvider系统源码导入配置AndroidStudio编译环境
  9. 简单的java游戏编程代码_java游戏编程(1)线程
  10. Android 批量修改文件格式/文件名的骚操作
  11. php仿抖音短视频小程序开发,微信小程序中实现类似抖音短视频切换效果
  12. Windows 2016 服务器安全配置
  13. 深度学习图像-半自动和自动标注工具
  14. 网红释一刀考察潮汕特色美食土虾
  15. PS人物换装--白色换纯色
  16. 第五章 事务控制语言(Transaction Control Language,TCL)
  17. 腾讯、字节、蘑菇街、阿里实习生面经(面试记录)(2)
  18. C语言之链表:单向链表,循环链表,双向链表
  19. 《俄罗斯方块》项目简介
  20. 使用C语言编写三子棋小游戏

热门文章

  1. CVE-2021-4034漏洞原理解析
  2. 2、sipeed Maix Bit开发板使用小记(二)
  3. 怎么做竞价托管,流程是怎么样的?
  4. android studio一键生成快速开发实现语言国际化
  5. Corel Painter 2018破解安装详细图文教程
  6. mudbox安装未完成,某些产品无法安装的解决方法
  7. Java中的poi是什么_java poi介绍
  8. 酷狗音乐的大数据平台重构
  9. 云呼服务器网站,云呼服务器地址
  10. Python-count函数