为 Splunk 用户准备的数据分析实践指南阅读笔记(第二章)
在 2017、2018 年的时候,自学过一阵子机器学习相关的知识,可惜那个时候也没有什么做笔记的习惯,平时也用不上,好不容易学到了一点东西就这么丢了,确实可惜。
正好现在在看 「Splunk ユーザーのためのデータ分析実践バイブル」这本书,里面也有不少机器学习的基础知识,为了加深一下阅读的印象,即使目前用不上但为了以备不时之需,还是稍微记录一些读书笔记为好。
基本只是个人使用为目的的一些杂碎的语句,属于不成体系的博文,尽请谅解。
第一章只是讲解如何在 Windows 上安装 Splunk 和 为了在 Splunk 上进行机器学习所需要的 MLTK 应用安装而已,直接跳过。
2.1.2 机器学习的种类
- 有监督学习
- 无监督学习
- 强化学习(不属于该书范围)
2.1.3 有监督学习
- 根据已有 XY 进行模型构建,用模型去喂入 X,获得 Y 进行预测、分类;
- 预测问题目的在于求解回归线(或者超平面),分类问题目的在于求解分界线(或者超平面)。
2.1.4 无监督学习
- 只有 X,由算法去发现 Y;
- 由于没有正确结果(Y),一般只能靠人类去评估模型好坏;
- 常用于分类(靠人很难制定分类标准),异常检出,或者是对数据进行整体把握,从而对有监督学习进行反馈。
那么用什么办法来对相似性进行打分评估?依靠聚类。 聚类的方法:重心或者分布密度。
分布密度的方法一般用于异常检出类问题,但对重心法而言,基本都是各个群组成圆形分布,对于拥有复杂分布结构的数据来说很难进行良好的分类,因此不适于异常检出类问题。
另一种常见的无监督学习就是用在降维(如PCA)上。
2.2.1 机器学习的流程
- 数据收集
- 数据分析
- 特征选择/特征工程
- 构建模型
- 模型评估
2.2.2 特征选择/特征工程
一些常见的工作:
- 缺失值补齐
- 对文本数据进行分类标记(如肉类 = 1,蔬菜 = 2,鱼类 = 3)
- 对文本数据进行二值分类(如男 = 1,女 = 2)
- 分类数据的数值化
要注意数据是属于线性还是非线性。对于非线性的数据怎么用线性去拟合精度都不会高,而对于一昧地用非线性去建模也很容易造成过拟合。
2.2.3 主要算法
有监督
回归:线性回归、随机森林
分类:逻辑回归、随机森林、朴素贝叶斯
时序列:ARIMA
无监督
聚类:K-means、DBSCAN
降维:PCA
2.2.4 常用模型评价指标
回归:R2、MAE(Mean Absolute Error)平均绝对误差、RMSE(Root Mean Square Error)均方根误差
MAE(平均绝对误差):反映预测值误差的实际情况。
$$MAE = \frac{1}{m}\sum_{i=1}^{m}\left | h(x_{i}) - y_{i} \right |$$
RMSE(均方根误差):衡量观测值与真实值之间的偏差。常用来作为机器学习模型预测结果衡量的标准。
$$RMSE = \sqrt{\frac{1}{m}\sum_{i=1}^{m}(h(x_{i}) - y_{i})^2}$$
MSE(均方误差):衡量观测值与真实值之间的偏差。真实值与预测值的差值的平方然后求和平均。通过平方的形式便于求导,所以常被用作线性回归的损失函数。
$$MSE = \frac{1}{m}\sum_{i=1}^{m}(y_{i} - \hat{y_{i}})^2$$
分类:Precision-Recall、Accuracy、F1、AUC 等。