李宏毅机器学习笔记github链接:https://github.com/datawhalechina/leeml-notes
李宏毅机器学习笔记在线阅读链接:https://datawhalechina.github.io/leeml-notes
今天这堂我要讲的是Anomaly Detection,翻译为中文意思是异常侦测,异常侦测要做的如同我们上节课所讲的:让机器可以知道我不知道这件事。投影片的右边引用了《论语,论证》篇,“知之为知之,不知为不知,是知也(知道就是知道,不知道就是不知道,这样才是真正的知道)”,就是让机器知道它不知道这件事
异常侦测的问题通常formulation成这样,假设我们现在有一堆训练数据 [公式] ,(在这门课里面,我们通常用上标来表示一个完整的数据,用下标来表示一个完整数据的其中一部分)。我们现在要找到一个function,这个function要做的事情是:检测输入x的时,决定现在输入的x到底跟我们的训练数据是相似还是不相似的
我们之前说过:机器学习其实就是让机器找到一个function,在异常侦测里面我们要找的function是这样的。输入与我们训练数据相似的x,则异常侦测的function(Anomaly Detector)就会告诉我们这是正常的数据;若输入与我们训练数据不相似的x,则异常侦测的function(Anomaly Detector)就会告诉我们这是异常的数据。
我们一直再用Anoramly这个词汇,可能会让某些同学觉得机器在做Anoramly Detector都是要Detector不好的结果。因为异常这个词汇显然通常代表的是负面意思。其实Anoramly Detector这件事并不一定是找不好的结果,只是找跟训练数据不一样的数据。所以我们找出结果不见得是异常的数据,你会发现Anoramly Detector在不同的领域里面有不同名字。有时候我们会叫它为“outlier, novelty, exceprions”。
总之我们要找的是跟训练数据不一样的数据,有可能是特别好的,有可能是特别坏的。但至于什么叫做“像(similar)”,这就是Anoramly Detector需要探讨的问题。不同的方法就有不同的方式来定义什么叫做“像”、什么叫做“不像”。
这里我要强调一下什么叫做异常,机器到底要看到什么就是Anormaly。其实是取决你提供给机器什么样的训练数据。
假设你提供了很多的雷丘作为训练数据,皮卡丘就是异常的。若你提供了很多的皮卡丘作为训练数据,雷丘就是异常的。若你提供很多的宝可梦作为训练数据,这时数码宝贝就是异常的。
异常侦测有很多的应用,你可以应用到诈欺侦测(Fraud Detection)。训练数据是正常的刷卡行为,收集很多的交易记录,这些交易记录视为正常的交易行为,若今天有一笔新的交易记录,就可以用异常检测的技术来侦测这笔交易记录是否有盗刷的行为。(正常的交易金额比较小,频率比较低,若短时间内有非常多的高额消费,这可能是异常行为)
异常侦测还可以应用到网络系统的入侵侦测,训练数据是正常连线。若有一个新的连线,你希望用Anoramly Detection让机器自动决定这个新的连线是否为攻击行为
异常侦测还可以应用到医疗(癌细胞的侦测),训练数据是正常细胞。若给一个新的细胞,让机器自动决定这个细胞是否为癌细胞。
我们咋样去做异常侦测这件事呢?很直觉的想法就是:若我们现在可以收集到很多正常的资料 x