机器学习入门(六)异常检测

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

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

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

异常检测(Anomaly Detection)

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

如上图所示,在红色圈内的数据属于该组数据的可能性较高,而越是偏远的数据,其属于该 组数据的可能性就越低。这时我们就可以通过 <math xmlns="http://www.w3.org/1998/Math/MathML"> 𝑝 ( 𝑥 ) < 𝜀 𝑝(𝑥) < 𝜀 </math>p(x)<𝜀 检测非正常用户。这种方法被称为密度估计法。

如何实现异常检测

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

ini 复制代码
# 建立模型
from sklearn.covariance import EllipticEnvelope
ad_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()

效果如下图所示:

异常检测与监督学习对比

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

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

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

参考

相关推荐
从零开始学习人工智能12 分钟前
使用 OpenCV 和传统机器学习实现工业开关状态识别
人工智能·opencv·机器学习
自律小浮39 分钟前
GA3C(GPU/CPU混合式异步优势Actor-Critic)算法实现控制倒立摆
pytorch·python·深度学习·机器学习
Takina~2 小时前
python打卡day54
python·深度学习·机器学习
沛沛老爹3 小时前
NumPy玩转数据科学
人工智能·python·机器学习·numpy·数据科学·多维数组·python库
中國龍在廣州3 小时前
AI之初,性本?
人工智能·科技·深度学习·机器学习·chatgpt·机器人
少林码僧3 小时前
14.2 《3小时从零搭建企业级LLaMA3语言助手:GitHub配置+私有化模型集成全实战》
人工智能·机器学习·语言模型·langchain
瑆玥琼4 小时前
机器学习流量识别(pytorch+NSL-KDD+多分类建模)
pytorch·机器学习·分类·语音识别
棱镜研途6 小时前
学习笔记丨AR≠VR:透视沉浸式技术的“虚实象限”法则
学习·机器学习·ar·vr·虚拟现实
Blossom.1186 小时前
基于深度学习的智能视频行为识别系统:技术与实践
人工智能·深度学习·神经网络·目标检测·机器学习·音视频·sklearn
硅谷秋水6 小时前
EfficientVLA:面向视觉-语言-动作模型无训练的加速与压缩
人工智能·深度学习·机器学习·机器人