当涉及到异常检测时,许多组织面临的关键挑战之一是,可能很难知道如何定义什么是异常现象。你如何定义和预测不寻常的网络入侵、制造缺陷或保险欺诈?如果你有已知异常情况的标记数据,那么就可以从BigQuery ML已经支持的各种监督机器学习模型类型中进行选择。但是,如果你不知道期待什么样的异常情况,也没有标记的数据,你能做什么?与利用监督学习的典型预测技术不同,企业可能需要能够在没有标记数据的情况下检测异常情况。
近日,谷歌云宣布在 BigQuery ML 中公开预览新的异常检测功能,该功能利用无监督机器学习,帮助用户在不需要标记数据的情况下检测异常情况。
根据训练数据是否为时间序列,用户现在可以使用新的ML.DETECT_ANOMALIES
函数(文档)检测训练数据或新输入数据中的异常情况。
模型如下:
用ML.DETECT_ANOMALIES进行异常检测是怎样的
为了检测非时间序列数据中的异常情况,你可以使用:
- K-means聚类模型。当你使用
ML.DETECT_ANOMALIES
与K-means模型时,异常情况会根据每个输入数据点与其最近的聚类的归一化距离值来识别。如果该距离超过由用户提供的污染值决定的阈值,则该数据点被识别为异常。 - 自动编码器模型。当你在自动编码器模型中使用
ML.DETECT_ANOMALIES
时,异常点会根据每个数据点的重建误差被识别。如果误差超过了由污染值决定的阈值,它就被识别为异常。
为了检测时间序列数据中的异常情况,你可以使用。
- ARIMA_PLUS时间序列模型。当你在ARIMA_PLUS模型中使用
ML.DETECT_ANOMALIES
时,异常值会根据该时间戳的置信区间来识别。如果该时间戳的数据点发生在预测区间之外的概率超过了用户提供的概率阈值,则该数据点被识别为异常。
更多 BigQuery ML中对上述每种情况进行异常检测的代码示例,详见 Google Cloud 官方博客