在 2017、2018 年的时候,自学过一阵子机器学习相关的知识,可惜那个时候也没有什么做笔记的习惯,平时也用不上,好不容易学到了一点东西就这么丢了,确实可惜。
正好现在在看 「Splunk ユーザーのためのデータ分析実践バイブル」这本书,里面也有不少机器学习的基础知识,为了加深一下阅读的印象,即使目前用不上但为了以备不时之需,还是稍微记录一些读书笔记为好。

Splunk ユーザーのためのデータ分析実践バイブル SPLとMLTKを駆使した前処理から機械学習の手続きまで

基本只是个人使用为目的的一些杂碎的语句,属于不成体系的博文,尽请谅解。

第一章只是讲解如何在 Windows 上安装 Splunk 和 为了在 Splunk 上进行机器学习所需要的 MLTK 应用安装而已,直接跳过。

2.1.2 机器学习的种类

  1. 有监督学习
  2. 无监督学习
  3. 强化学习(不属于该书范围)

2.1.3 有监督学习

  • 根据已有 XY 进行模型构建,用模型去喂入 X,获得 Y 进行预测分类
  • 预测问题目的在于求解回归线(或者超平面),分类问题目的在于求解分界线(或者超平面)。

2.1.4 无监督学习

  • 只有 X,由算法去发现 Y;
  • 由于没有正确结果(Y),一般只能靠人类去评估模型好坏;
  • 常用于分类(靠人很难制定分类标准),异常检出,或者是对数据进行整体把握,从而对有监督学习进行反馈。

那么用什么办法来对相似性进行打分评估?依靠聚类。 聚类的方法:重心或者分布密度

分布密度的方法一般用于异常检出类问题,但对重心法而言,基本都是各个群组成圆形分布,对于拥有复杂分布结构的数据来说很难进行良好的分类,因此不适于异常检出类问题。

另一种常见的无监督学习就是用在降维(如PCA)上。

2.2.1 机器学习的流程

  1. 数据收集
  2. 数据分析
  3. 特征选择/特征工程
  4. 构建模型
  5. 模型评估

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 等。

参考资料

  1. RMSE(均方根误差)、MSE(均方误差)、MAE(平均绝对误差)、SD(标准差)