掘金 人工智能 04月28日 08:42
机器学习入门(六)异常检测
index_new5.html
../../../zaker_core/zaker_tpl_static/wap/tpl_guoji1.html

 

本文介绍了异常检测的概念及其在实际应用中的重要性,特别是在数据集中存在异常值时,会对模型性能产生显著影响。文章阐述了如何使用异常检测方法来识别这些异常点,例如在线采集的用户数据,通过分析用户的登录频率、访问页面、发帖数量和打字速度等特征,构建模型来识别不符合模式的用户。文章还介绍了密度估计法,并通过sklearn中的EllipticEnvelope算法实现异常检测,最后对比了异常检测与监督学习的差异,强调了异常检测在负类样本难以收集场景下的优势。

💡异常检测旨在识别数据集中不符合预期模式的数据点,这些异常值可能显著降低模型性能,尤其是在数据质量参差不齐的现实场景中。

🛡️密度估计法是一种常用的异常检测方法,通过评估数据点属于正常数据组的可能性来识别异常。可能性越低,则越有可能是异常点。

⚙️文章介绍了使用sklearn库中的EllipticEnvelope算法进行异常检测的实践方法,该算法特别适用于检测高斯分布数据集中的异常值,并提供了可视化结果的示例。

🚫异常检测与监督学习不同,尤其在负类样本难以收集或负类样本特征难以穷尽的情况下,异常检测更具优势。监督学习通常难以覆盖所有可能的异常情况。

如下图所示,不同于假设的数据,在现实中我们获取到的数据集一定会存在某些异常的数据点。

如果异常的数据点太多或者影响太大,则会显著降低我们模型的性能。这时,我们可以使用异常检测的方法来找出数据集中的异常点。

例如在线采集而来的有关用户的数据,一个特征向量中可能会包含如:用户多久登录一次,访问过的页面,在论坛发布的帖子数量,甚至是打字速度等。尝试根据这些特征构建一个模型,可以用这个模型来识别那些不符合该模式的用户。

异常检测(Anomaly Detection)

异常检测是指根据输入数据,对不符合预期模式的数据进行识别。

如上图所示,在红色圈内的数据属于该组数据的可能性较高,而越是偏远的数据,其属于该 组数据的可能性就越低。这时我们就可以通过 𝑝(𝑥)<𝜀𝑝(𝑥) < 𝜀 检测非正常用户。这种方法被称为密度估计法。

如何实现异常检测

异常检测检测有很多检测算法,我们这里使用 sklearn 中的 EllipticEnvelope 来实现。它被用于检测高斯分布数据集中异常值的对象。

# 建立模型from sklearn.covariance import EllipticEnvelopead_model = EllipticEnvelope(contamination=0.02)ad_model.fit(data)# 预测异常点y_predict = ad_model.predict(data)# 可视化结果fig4 = plt.figure(figsize=(10, 10))original_data = plt.scatter(data.loc[:, 'x1'], data.loc[:, 'x2'], marker='x')anomaly_data = plt.scatter(data.loc[:, 'x1'][y_predict == -1],             data.loc[:, 'x2'][y_predict == -1],             marker='o',            facecolor='none',            edgecolor='red',            s = 150)plt.title('anomaly detection result')plt.xlabel('x1')plt.ylabel('x2')plt.legend((original_data, anomaly_data), ('original_data', 'anomaly_data'))plt.show()

效果如下图所示:

异常检测与监督学习对比

从上面的描述可以看到,异常检测类似于二分任务,它需要找出错误和异常的数据。那么我们能不能直接采用监督学习的逻辑回归来实现异常检测呢?

但实际上是很难按照这样的做法来实现的!因为正类的样本实际上我们很容易收集到,但是负类的样本可以说很难收集,或者说负类样本是无穷无尽的,没有办法让机器学习到每一种负类样本的特征

另外一个问题是异常的例子通常很难被收集到,例如网络的异常访问或者异常的交易数据等等,都是在大量的正常数据中才能够找到一个异常数据,因此这也是很严重的问题。

参考

Fish AI Reader

Fish AI Reader

AI辅助创作,多种专业模板,深度分析,高质量内容生成。从观点提取到深度思考,FishAI为您提供全方位的创作支持。新版本引入自定义参数,让您的创作更加个性化和精准。

FishAI

FishAI

鱼阅,AI 时代的下一个智能信息助手,助你摆脱信息焦虑

联系邮箱 441953276@qq.com

相关标签

异常检测 Anomaly Detection EllipticEnvelope 数据清洗
相关文章