在前面的文章中,我们对Splunk Machine Learning Toolkit 3.0.0进行了介绍,今天我们就来聊一下机器学习中最常见的问题:回归。
什么是回归?
回归对数值连续的通常是来预测一个值,比如预测房屋价格、股票走势、产品销售量、未来的天气情况等。线性回归是最简单的一种回归算法,它期望使用一条直线去拟合数据,如图所示:
可以看出,这样直线有很多,那么哪条才是最佳拟合线呢?这就是寻找最佳拟合的问题。
如果预测值和实际值最接近,它应该是最佳拟合线。我们可以用最小二乘法(Least squares)来解决这个问题。
最小二乘法通过最小化误差的平方和寻找最佳函数匹配。
用最小二乘法容易计算,如果数据集存在线性关系,它能拟合的非常好,但对异常值非常敏感。
评价模型的准确性
欠拟合(under-fit)是模型没有很好地捕捉到数据特征,不能够很好地拟合数据;过拟合(over-fitting) 是模型把数据学习的太彻底,模型泛化能力太差,不能很好的预测数据。理想情况下,我们希望既不欠拟合,也不过拟合。
了解了欠拟合和过拟合,我们需要选择一个能反映模型预测能力的评估标准。
和方误差(sum-squared error, SSE),即真实值与模型预测值误差平方。
均方误差(mean-square error, MSE),即真实值与模型预测值误差平方的平均值。
方均根差(root-mean-square error, RMSD)也是一种常用的测量数值之间差异的方法。RMSD表示预测的值和实际值之差的样本标准差。
防止过拟合
正则化可以减少过拟合的风险,通过惩罚因子对回归系数进行抑制。
L1正则化表示各个参数绝对值之和;L2正则化表示各个参数平方和的开方值。在常用的回归方法中,岭(Ridge)回归使用L2正则化、Lasso法使用L1正则化、弹性网(Elastic net)使用L1+L2正则化,它们都能有效的避免过拟合。
这些回归算法在Splunk MLTK中可以直接使用,并且不需要编写复杂的代码,甚至变得更简单。
我们来看Splunk MLTK中数值预测用例:第一步,在搜索框内搜索数据,这里我们使用测试数据housing.csv,同样你也可以使用自己的数据;第二步,选择一种回归算法、确定要预测的字段、选择用来预测的字段(特征)、调整训练集和验证集的比例;第三步,填写模型名称并进行训练。
图表详细展示了字段预测值和真实值的差距:
同样Splunk MLTK也实现了模型准确性的验证,并且可以通过特征系数来解释为什么会产生这样的模型:
如果你想了解更多有关机器学习信息,或者在使用Splunk MLTK中有任何疑问,都可以到论坛(http://ask.10data.com)进行留言和讨论。