Machine Learning第九讲[异常检测] --(二)创建一个异常检测系统

内容来自Andrew老师课程Machine Learning的第九章内容的Building an Anomaly Detection System部分。


一、Developing and Evaluating an Anomaly Detection System(异常检测系统的衡量指标)

对于某一算法,我们可以通过借助某些数字指标来衡量算法的好坏,仍旧以飞机引擎的例子来说:
假设有10000个正常的引擎,20个有瑕疵的引擎(异常)
我们将这些引擎分为以下数据集:
  • 训练集:使用6000个正常的引擎(y=0)
  • 交叉验证集:使用2000个正常的引擎(y=0),10个异常的引擎(y=1)
  • 测试集:使用2000个正常的引擎(y=0),10个异常的引擎(y=1)
也就是10000个正常的引擎在训练集、交叉验证集和测试集里面都有,且这三个数据集中没有重合的数据。
当然,也有一部分人这样分类:
  • 训练集:使用6000个正常的引擎(y=0)
  • 交叉验证集:使用4000个正常的引擎(y=0),10个异常的引擎(y=1)
  • 测试集:使用4000个正常的引擎(y=0),10个异常的引擎(y=1)
但是我们并不赞成第二种分类方法,因为它的交叉验证集和测试集使用的是同一组数据。
接下来,对于算法的评估过程如下:
(1)使用训练集训练模型p(x)
(2)使用模型p(x)在交叉验证集上做预测,若p(x)<ε,则预测值y=0,若p(x)≥ε,则预测值y=1。
因为预测异常点,这里面的数据肯定会比较偏斜,即正常的样本(y=0)比较多,而异常样本(y=1)比较少,因此使用Accuracy会产生虽然Accuracy高但是预测效果并不好的情况。我们可以采用下面的指标来衡量:
  • True Positive, False Positive, False Negative, True Negative
  • Precision/Recall
  • F1-score
我们可以选出交叉验证集中F1-score最大值时对应的ε值,作为衡量指标ε。我们也可以使用交叉验证集来评价算法,确定应该选择哪些特征。


二、Anomaly Detection vs. Supervised Learning(异常检测 vs. 监督学习)


我们应该什么时候使用异常检测,什么使用监督学习呢?

异常检测监督学习
(1)正样本(y=1)(正样本的数量一般是0-20,也可能是50)的数量比较少(very small)--可以将这些正样本存为交叉验证集和测试集
负样本(y=0)的数量有很多(large)--用大部分的负样本训练模型,因此只要有足够的负样本,便可以很好地拟合数据
(2)异常检测有很多种类型,我们很难从数目较多的正样本中学习出模型来预测未知的样本,因为未知的样本异常的原因可能多种多样,而且可能是之前没有见过的类型。(以飞机引擎为例,异常可能有很多种原因,可能是一个零件的损坏,也可能是全部零件的损坏)
(1)正样本和负样本的数目都很多。
(2)有足够数目的正样本用来训练模型,而且未来需要预测的样本和模型中训练样本较为相似,这种情况需要使用监督学习算法。(可能我们会觉得垃圾邮件的例子也很很多分类,那为什么不适用异常检测而使用监督学习呢?因为虽然垃圾邮件的类型有很多,但是我们垃圾邮件的训练样本也有很多,因此使用监督学习算法)


实践中,异常检测和监督学习的例子有哪些?

异常检测监督学习
  • 诈骗预测--虽然诈骗预测一般使用异常检测,但是如果有大量欺诈用户的数据,预测模型能够预测未知数据,我们倾向于使用监督学习算法
  • 工业界,如飞机引擎的检测
  • 数据中心用来检测数据是否异常
  • 垃圾邮件分类
  • 天气预测,根据已有数据预测未来的天气趋势(晴天/阴天等)
  • 癌症分类


三、Choosing What Features to Use(如何选择特征?)

首先,如果根据特征画出来的图形和高斯分布的图形相差比较大,则我们需要对特征做一些处理,使得图形与高斯分布的图形相似,这样能够提高预测准确率,具体如下图:


上面的图形与高斯分布的图形很类似,所以我们不需要处理,而对于下面的图形,因其与高斯分布图形相差太大,所以我们需要处理,可以使用log,或者开平方等函数。

将图形变成高斯分布之后,有利用我们进行预测,那我们应该怎么进行异常检测中的错误分析呢?

  1. 我们期望对于normal的样本,p(x)的值大一些,对于anomalous的样本,p(x)的值小一些
  2. 但是,大多数的情况是:无论是对于normal的样本还是anomalous的样本,p(x)都很大或者都很小

面对这种情况,我们需要找出那些预测错误的样本(无论是normal还是anomalous),找出其共有特征,看看是否可以提取出一些新特征来提高预测准确率,来看下面的例子:


左图是原始的图形,它只包含一个特征x1,其中A点是一个异常点,但是A点对应的p(x)还是比较大的,因此在预测的时候它是被错误预测的,即预测值y=0,将其预测为normal,但是其是anomalous的。我们分析之后发现其有一个特征x2,因为我们加入特征x2,加入x2之后,所有样本的分布图如右图,这时候,可能红圈之内的样本被预测为normal,红圈之外的样本被预测为anomalous,因此在含有2个特征的情况下,这个异常样本是可以被检测出来的,这样也就提高了预测的准确率。

再举一个数据中心检测的例子:

我们在选择特征时,需要会选择那些取值不是很大也不是很小的特征,比如:

  • x1 = memory use of computer
  • x2 = number of disk accesses/sec
  • x3 = CPU load
  • x4 = network traffic

我们将下来想知道哪些地方出现问题了,我认为CPU load和network traffic应该互为线性关系,在程序运行的过程中,发现有一组数据CPU load和network traffic都很大,但是怀疑一种情形:在执行的过程中,计算机进入了死循环,因此被卡住了,因此CPU load升高,但是network traffic没有变化,在这种情况下,要检测出异常,我可以新增新的特征:x5 = (CPU load)/(network traffic)或者x6 = (CPU load)^2/(network traffic),这样,若network traffic不变,而CPU load变大,x5或者x6就会出现异常,以便检测。





  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Intelligent video systems and analytics represent an active research field combining methods from computer vision, machine learning, data mining, signal processing and other areas for mining meaningful information from raw video data. The availability of cheap sensors and need for solving intelligent tasks facilitate the growth of interest in this area. Vast amount of data collected by different devices require automatic systems for analysis. These systems should be able to make decisions without human interruption or with minimal assistance from a human operator. Video analytics systems should understand and interpret a scene, detect motion, classify and track objects, explore typical behaviours and detect abnormal events [1]. The application area of such systems is huge: preventing crimes in public spaces such as airports, railway stations, or schools; counting objects at stadiums or shopping malls; detection of breaks or leaks; smart homes for elderly people maintenance with fall detection functionality and others. Behaviour analysis and anomaly detection are essential parts of intelligent video systems [2,3]. The objectives of anomaly detection are to detect and inform about any unusual, suspicious and abnormal events happening within the observed scene. These may be pedestrians crossing a road in a wrong place, cars running on the red light, abandoned objects, a person fall, a pipe leak and others. Decisions made by a system should be interpretable by a human therefore the system should also provide information about typical behaviours to confirm its decisions. This thesis develops machine learning methods for automatic behaviour analysis and anomaly detections in video. The methods allow to extract semantic patterns from data. These patterns can be interpreted as behaviours and they are used as a basis for decision making in anomaly detection.
### 回答1: 《使用PyTorch和scikit-learn进行机器学习》是一本以PyTorch和scikit-learn为基础的机器学习教程,旨在帮助读者学习并应用这两个流行的机器学习工具。该教程深入介绍了PyTorch和scikit-learn的基本概念和用法,让读者能够通过实际的编程实例掌握这些工具的使用。 PyTorch是一个基于Python的机器学习框架,它提供了丰富的工具和函数库,用于构建和训练神经网络模型。这本教程通过一系列的章节,从最基本的张量操作开始,逐步引导读者了解如何创建和训练神经网络。同时,它还介绍了PyTorch的自动微分功能,以及在实际项目如何应用PyTorch。 scikit-learn是一个功能强大的Python机器学习库,提供了大量的机器学习算法和工具,用于数据处理、特征选择、模型训练和评估等。这本教程还介绍了scikit-learn的常用函数和工具,包括数据预处理、特征提取、模型选择和评估等。读者可以通过实践项目,学习如何使用scikit-learn解决实际的机器学习问题。 总之,《使用PyTorch和scikit-learn进行机器学习》是一本实用、易懂的教程,适合想要学习和应用PyTorch和scikit-learn的机器学习爱好者和从业者。阅读本教程,你将能够了解和掌握这两个强大的机器学习工具,为实际项目应用提供坚实的基础。 ### 回答2: "Machine Learning with PyTorch and Scikit-Learn PDF" 是一本探讨使用PyTorch和Scikit-Learn进行机器学习的书籍,这本书以PDF形式提供。 PyTorch 是一个开源的深度学习框架,它提供了丰富的工具和库来进行神经网络的训练和推理。Scikit-Learn 是一个强大的机器学习库,提供了各种机器学习算法的实现和工具。 这本书将通过结合PyTorch和Scikit-Learn,帮助读者了解如何使用这两个工具进行机器学习任务。它从介绍机器学习的基本概念和算法开始,然后介绍了PyTorch和Scikit-Learn的基本用法和功能。 在书的早期,读者将学习如何使用Scikit-Learn完成一些常见的机器学习任务,例如分类、回归和聚类等。然后,书籍将介绍如何使用PyTorch来构建和训练深度神经网络,并将其用于解决机器学习问题。 书的重点是教授读者如何使用PyTorch和Scikit-Learn来实现机器学习算法和模型,以及如何评估和优化它们的性能。它将提供一些示例代码和实际项目,帮助读者更好地理解和应用所学知识。 总的来说,"Machine Learning with PyTorch and Scikit-Learn PDF" 是一本适合初学者和有经验的机器学习从业者的书籍,它将帮助读者掌握使用PyTorch和Scikit-Learn进行机器学习的基本原理和技巧。 ### 回答3: Machine Learning with PyTorch and Scikit-Learn PDF 是一本介绍使用 PyTorch 和 Scikit-Learn 进行机器学习的书籍。 PyTorch 是一个基于 Python 的开源机器学习库,具有很强的灵活性和高性能。它提供了丰富的工具和函数,用于构建神经网络和深度学习模型。通过PyTorch,我们可以轻松地搭建、训练和部署各种复杂的机器学习模型。 Scikit-Learn 是另一个流行的 Python 机器学习库,它提供了大量的机器学习算法和便捷的工具,以简化机器学习任务的开发过程。Scikit-Learn 包含了许多常用的机器学习模型,例如分类器、回归模型、聚类算法等。通过Scikit-Learn,我们可以快速地创建、训练和评估各种机器学习模型。 "Machine Learning with PyTorch and Scikit-Learn PDF" 这本书会教读者如何使用 PyTorch 和 Scikit-Learn 这两个库进行机器学习任务。这本书可能会包含以下内容: 1. 介绍 PyTorch 和 Scikit-Learn 的基本概念和用法。读者可以了解如何安装和配置这两个库,并学习如何使用它们的基本功能。 2. 介绍机器学习的基本概念和原理。读者可以了解常见的机器学习算法和技术,以及如何在 PyTorch 和 Scikit-Learn 应用它们。 3. 提供示例代码和案例研究。读者可以学习如何使用 PyTorch 和 Scikit-Learn 解决实际的机器学习问题,比如图像分类、文本分类、回归分析等。 4. 讨论如何有效地训练和优化机器学习模型。读者可以了解如何选择合适的数据预处理方法、模型选择、超参数调优等技巧,以提高模型的性能和准确性。 总而言之,"Machine Learning with PyTorch and Scikit-Learn PDF" 这本书将帮助读者掌握使用 PyTorch 和 Scikit-Learn 进行机器学习任务的基本知识和技能。无论是初学者还是有一定经验的开发者,都可以通过这本书更好地理解和应用机器学习

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值