文章目录

  • 算法思想
  • PCA推导
  • 示例代码

算法思想

  1. 对原始数据标准化(均值0方差1)
  2. PCA有两种计算方法:最大投影方差与最小重构代价(可以查看下面的PCA推导)

在异常检测中,使用的逻辑是:

  1. 对训练集做特征值分解:特征向量代表方向,对应的特征值是空间中这个方向的方差,特征值越大,方差越大
  2. 我们可以把特征向量所指的方向,看做正常样本点的方向(因为训练集中绝大多数是正常样本点),而计算出的特征值越大,意味着异常点在这个方向上与正常样本的差异越大
  3. 所以接下来,我们只要把跟正常样本不是一路人的点找到就行,它们是异常点,
  4. 特征值作为权重,计算样本点特征值对应的特征向量的距离差(点乘后平方)就计算出X与这个方向的偏差程度
  5. 累加X与每个方向的偏差程度就是X与所有方向的偏差程度
  6. 有特征值加权的偏差程度累加到一定程度就是异常点了,这个阈值有PCA训练得出

PCA推导

示例代码

from pyod.utils.data import generate_data
from pyod.models.pca import PCAdef get_data():"""生成数据"""X_train, X_test, y_train, y_test = generate_data(n_features=6, contamination=0.2, behaviour='new')  # 这里生产数据return X_train, X_test, y_train, y_testdef get_score(true_data, result_prediction):"""分类问题的得分辅助函数:param true_data: 真实值,是要预测的目标:param result_prediction: 预测值,用模型预测出来的值:return:准确率,精确率,召回率,F1:rtype:list"""from sklearn.metrics import accuracy_scorefrom sklearn.metrics import precision_scorefrom sklearn.metrics import recall_score, f1_scoreacc = accuracy_score(true_data, result_prediction)  # 准确率prec = precision_score(true_data, result_prediction)  # 精确率recall = recall_score(true_data, result_prediction)  # 召回率f1 = f1_score(true_data, result_prediction)  # F1score_list = [acc, prec, recall, f1]return score_listdef main():x_train, x_test, y_train, y_test = get_data()pca_model = PCA(contamination=0.2)  # 这里指定原始数据有多少是异常点pca_model.fit(x_train)  # 训练数据# pca_model.decision_scores_  # 检测参考的分值score_list = get_score(y_test, pca_model.predict(x_test))print("准确率:{},精确率:{},召回率:{},F1:{}".format(score_list[0], score_list[1], score_list[2], score_list[3]))if __name__ == '__main__':main()

异常检测2——PCA异常检测相关推荐

  1. 【ML】异常检测、PCA、混淆矩阵、调参综合实践(基于sklearn)

    [ML]异常检测.PCA.混淆矩阵.调参综合实践(基于sklearn) 加载数据 可视化数据 异常点检测 PCA降维 使用KNN进行分类并可视化 计算混淆矩阵 调节n_neighbors参数找到最优值 ...

  2. 机器学习(四)其它技术:决策树,异常检测,PCA

    目录 一. 定义和公式 1. 决策树 Desicion Tree 2. 异常检测 Anomaly Detection 3. 主成分分析 PCA 二. 代码实战 1. 决策树:Iris鸢尾花数据分类 2 ...

  3. 异常检测/离群点检测算法汇总

    不存在普遍意义上的最优模型,不过有些模型的表现一直不错,建议优先考虑.对于大数据量和高纬度的数据集,Isolation Forest算法的表现比较好.小数据集上,简单算法KNN和MCD的表现不错. 模 ...

  4. 基于用户行为建模和异常检测算法的内部威胁检测

    Insider Threat Detection Based on User Behavior Modeling and Anomaly Detection Algorithms 内部威胁是授权用户的 ...

  5. 异常检测概念、异常检测的思路、孤立森林Isolation Forest、​​​​​​​局部异常因子LOF、OneClassSVM、EllipticEnvelop

    异常检测概念.异常检测的思路.孤立森林Isolation Forest.局部异常因子LOF.OneClassSVM.EllipticEnvelop 目录

  6. 使用VAE、CNN encoder+孤立森林检测ssl加密异常流的初探——真是一个忧伤的故事!!!...

    ssl payload取1024字节,然后使用VAE检测异常的ssl流. 代码如下: from sklearn.model_selection import train_test_split from ...

  7. 无监督学习:异常检测与剔除(局部异常因子法 SVM异常检测器)

    1.前言 前面介绍的都是有监督学习的回归和分类算法.有监督学习是指对输入和输出都有成对出现的训练样本{(xi,yi)}.在这里,主要介绍在没有输出信息时,只利用输入样本{xi}的信息进行无监督学习的方 ...

  8. 5个专注于检测和预测异常的Java工具分享

    正所谓,工欲善其事必先利其器.对于程序员来说也不例外,在程序开发中如果擅长用一些小工具,能让你的工作效率事半功倍.下面,小千将给大家分享5个专注于检测和预测异常的Java工具,帮助初学者提高编程效率. ...

  9. 深度学习助力异常胸部 X 光片检测

    关注公众号,发现CV技术之美 发布人:Google Health 软件工程师 Zaid Nabulsi 和 Po-Hsuan Cameron Chen 在医学成像中应用机器学习 (ML),为改善胸部 ...

最新文章

  1. mySQL5.5服务配置_配置mysql5.5主从服务器(转)
  2. 前端实例练习 - 进度条
  3. 搜索组件_微信连续更新6大功能,“搜索”组件还能带流量
  4. scrapy.crawler.CrawlerProcess
  5. python列表与集合
  6. Unity 之圆环算法
  7. android电视自动关机,Android定时关机问题解决
  8. thinkphp 实现新订单语音提醒功能
  9. docker the input device is not a TTY. If you are using mintty, try prefixing the command with ‘winp
  10. 大一计算机专业学期计划范文,大一新学期学习计划范文(通用5篇)
  11. 6步教你zencart模板制作
  12. D3 二维图表的绘制系列(十六)矩形树状图
  13. 解读《道德经》nbsp;五十六章nbsp;知者不言…
  14. 脚本小子_Lua数据类型
  15. Pytorch 中的detach 和detach_
  16. java list 子集_Java——List方法,获取子集
  17. 如何发布一款Android应用到安卓市场
  18. 一汽大众迈腾车前悬架系统设计
  19. 铁损分离-磁滞回线面积-离散点的面积
  20. Java使用EasyExcel下载xls、xlsx 出现文件格式与扩展名不匹配(亲测)

热门文章

  1. python必背语法_python常用语法合集
  2. metrics的timer功能在java项目中的使用方法
  3. 关于socket的一些总结
  4. android bitmap to base64_Android基础(11)—你需要知道的内存知识
  5. jquery 数字滚动特效 数字自增特效 数字位数动态适应
  6. C# 中执行 msi 安装
  7. python-ppt1
  8. 如何启动免安装版Tomcat并将Tomcat添加到服务中
  9. 理解WebKit和Chromium: Canvas2D及其实现
  10. 利用Javascrip实现web窗体的打开和关闭后的刷新