Splunk Machine Learning Toolkit在分类问题上的应用(一)

本文涉及的产品
日志服务 SLS,月写入数据量 50GB 1个月
简介: Splunk MLTK提供了创建告警接口,可以快速创建一个告警。 对于机器学习的算法和workflow,Splunk MLTK已经帮你实现,你甚至不需要知道这些算法的原理,只需要根据Splunk MLTK提供的workflow,就可以训练出自己的模型,它是真正把机器学习算法应用到真实数据的工具。

如果预测值是离散的,比如“好”“坏”,这类问题称为分类;对只涉及两个类别的二分类问题,通常称一个类为正类,另一个类为负类。我们看一下有关算法和概念。


真实类别和预测类别的关系

在二分类问题中,真实类别和预测类别有四种关系,真正类(true positive, tp)、假正类(false positive, fp)、真负类(false negative, fn)、假负类(true negative, tn),很明显,样本总数=tp+fp+fn+tn。

真实类别 预测类别
正类 负类
正类 tp fn
负类 fp tn

tp:true positive,被预测为正类,事实上也是正类,可以称为真的正确率;

fn:false negative,被预测为负类,事实上是正类,可以称为假的正确率;

fp:false positive,被预测为正类,事实上是负类,可以称为误报率;

tn:false negative,被预测为负类,事实上也是负类,可以称为漏报率;

评价模型的准确性 

准确率(accuracy),表示正确分类的样本数与总样本数之比。

查准率(precision),表示真正类个数与预测为正类的总数之比。

查全率(recall),表示真正类个数与实际为正类的总数之比。

F1度量(F1-Measure),表示查全率和查准率的调和均值。

一般情况:

其中当β>0时度量了查全率和查准率的相对重要性。β=1为F1形式,β>1时查全率有更大影响,β<1时查准率有更大影响。

LogisticRegression分类算法

在线性回归中,我们使用线性函数 来预测y(i),显然它不能很好预测分类问题,比如输出标记y(i)∈{0,1}。我们引入logistic函数来处理二分类问题:

函数称为logistic或者sigmoid函数,函数是S型曲线:

σ(z)∈ [0,1],它能处理二分类问题,比如有“1”“0”两类,当x属于 “1” 类时,调整参数θ使P(y=1|x)=hθ(x)尽可能大;相反使P(y=0|x)尽可能大。

成本函数(cost function)是评价模型拟合训练集好坏的方法。在二分类中,对于x(i)的预测值y(i),i=1,...,m,我们有成本函数:

J(θ)值越小,代表拟合的越好。

为了找到拟合最好的模型,我们把问题转化为求最小的J(θ)。参数不同导致函数hθ(x)有很多,哪个函数才能使J(θ)最小?梯度下降(Gradient Descent)可以找到函数J(θ)的最小值。

梯度下降是一种优化算法,它是在目标函数的超平面上,沿着斜率下降的方向前进,直到遇到了超平面构成的“谷底”,这个谷底就是极小值点,同时也是局部最优点。对于J(θ)的梯度∇θJ(θ)为:

LogisticRegression算法先介绍到这里,如果你还没明白它的原理,也没关系,我们看一下它在Splunk MLTK中,怎样利用防火墙流量日志判定用户恶意行为。

首先,firewall_traffic.csv是一份带有标签(特征)的防火墙流量日志,used_by_malware字段标记了日志是否有恶意行为。我们的目标是通过学习这些日志,判断新来流量是否有恶意行为。

很明显,这是二分类问题,我们可以使用LogisticRegression算法来拟合我们的模型。

对于这个界面相信大家都不陌生,首先我们搜索我们的数据,再选择LogisticRegression算法,选定预测字段(used_by_malware),选择特征字段等,最后拟合模型。

同时,如果你不太熟悉Splunk ML-SPL的话,可以点击“Show SPL”按钮查来看。

拟合后,我们在表格中看到模型准确性指标。

Splunk MLTK提供了创建告警接口,可以快速创建一个告警。

对于机器学习的算法和workflow,Splunk MLTK已经帮你实现,你甚至不需要知道这些算法的原理,只需要根据Splunk MLTK提供的workflow,就可以训练出自己的模型,它是真正把机器学习算法应用到真实数据的工具。

如果你想了解更多有关机器学习的信息,或者在使用Splunk MLTK中有任何疑问,都可以到论坛(http://ask.10data.com)进行留言和讨论。

相关实践学习
【涂鸦即艺术】基于云应用开发平台CAP部署AI实时生图绘板
【涂鸦即艺术】基于云应用开发平台CAP部署AI实时生图绘板
目录
相关文章
|
存储 安全 JavaScript
【分布式技术专题】「授权认证体系」深度解析OAuth2.0协议的原理和流程框架实现指南(授权流程和模式)
在传统的客户端-服务器身份验证模式中,客户端请求服务器上访问受限的资源(受保护的资源)时,需要使用资源所有者的凭据在服务器上进行身份验证。资源所有者为了给第三方应用提供受限资源的访问权限,需要与第三方共享它的凭据。这就导致一些问题和局限:
835 2
【分布式技术专题】「授权认证体系」深度解析OAuth2.0协议的原理和流程框架实现指南(授权流程和模式)
|
SQL Java 数据库连接
Hive教程(08)- JDBC操作Hive
Hive教程(08)- JDBC操作Hive
1656 0
|
缓存 安全 Ubuntu
在Linux中,如何进行系统更新和补丁管理?
在Linux中,如何进行系统更新和补丁管理?
|
存储 大数据 数据处理
ClickHouse中的ReplicatedMergeTree是什么
ClickHouse中的ReplicatedMergeTree是什么
1184 1
|
Ubuntu Linux 网络安全
/var/log/auth.log日志详解
`/var/log/auth.log`是Linux(尤其是Debian系如Ubuntu)记录身份验证和授权事件的日志文件,包括登录尝试(成功或失败)、SSH活动、sudo使用和PAM模块的操作。登录失败、SSH连接、sudo命令及其它认证活动都会在此记录。查看此日志通常需root权限,可使用`tail`、`less`或`grep`命令。文件内容可能因发行版和配置而异。例如,`sudo tail /var/log/auth.log`显示最后几行,`sudo grep &quot;failed password&quot; /var/log/auth.log`搜索失败密码尝试。
2215 8
|
机器学习/深度学习 人工智能 监控
如何成为机器学习工程师
机器学习工程师是一个综合要求很高的交叉学科岗位,要求从业者学习很多必要技能和工具,以应对实际项目中遇到的各种挑战。 本文能为励志成为机器学习工程师的人提供一个清晰的成长路线图。
828 1
如何成为机器学习工程师
|
移动开发 缓存 JavaScript
|
Kubernetes 容器
【kubernetes】解决k8s1.28.4:"command failed" err="failed to parse kubelet flag: unknown flag: --c...
【kubernetes】解决k8s1.28.4:"command failed" err="failed to parse kubelet flag: unknown flag: --c...
2418 0
|
存储 Oracle 关系型数据库
彻底解决Oracle中文乱码
彻底解决Oracle中文乱码
10213 0
从原理到实战:如何通过布隆过滤器防止缓存击穿
我们的业务中经常会遇到穿库的问题,通常可以通过缓存解决。如果数据维度比较多,结果数据集合比较大时,缓存的效果就不明显了。 因此为了解决穿库的问题,我们引入Bloom Filter。