机器学习是一门复杂又实用的技术,他是一大类方法的统称,实际上不同领域不同方法之间的差别是天壤之别,但是在应用的时候,往往会有一些共性和通用的地方,现在稍微重温一下机器学习在实际应用中的一些方法步骤。
数据分析
分析数据是一项重要的过程,就像是把脉一样,你得了解你的病人的特点之后才容易对症下药。
1. 查看数据统计结果:
白分比,平均数,中位数,相关系数等等帮助你了解数据的特点
2. 数据可视化:
箱形图,密度图,直方图,散点图等等帮助你了解数据分布情况
数据清洗
1. 缺失值处理:填补、删除、预估
2. 异常值处理:观察异常值,然后根据异常值情况选择合理的模型
特征工程
1. 数据归一化
2. PCA主成份分析
问题分类
1. 根据输入分类:
1) 监督学习:数据带标签
2) 无监督学习:数据无标签
3) 强化学习:通过与环境交互来优化目标函数
2. 根据输出分类:
1)回归问题:输出值是连续的
2)分类问题:输出结果是一个或多个类别
3)聚类问题:将一堆数据划分成簇
4)异常检测:检测和发现异常值
实际条件
了解自己的目标很重要,通常精度和速度是一个trade-off的问题,在考虑模型时需要结合精度和速度的实际要求来选择,还有就是对于模型训练的速度有无要求,是否需要快速迭代训练模型,是否会加入新的数据集。模型的预测速度需要多快。模型需要多少数据量进行支撑。模型的可解释性如何等等。
常用模型
1. 线性回归
是直接最简单的回归算法,如果输入和输出呈线性关系模型表现会更好。
2. Logistic回归
解决二分类问题。模型有很好的概率输出形式,对于输入特征也有很好的可解释性分析。
3. 决策树
对异常值不敏感。方法延伸还有随机森林、adaboost等等。
4. kmeans
经典的据类方法,将数据聚成k个类别。
5. 主成份分析PCA(Principal Component Analysis)
起到降维的作用,降低特征的冗余性,防止过拟合。同时也便于数据可视化。
6. 支持向量机SVM
通常来说,SVM性能不错。但实际应用中,SVM训练时间较长,调优比较困难,尤其是数据量大了以后。
7. 朴素贝叶斯
基于条件独立假设的模型,快速,简单,性能也不错。
8. 随机森林
可以解决回归问题,也可以解决分类问题。
9. 神经网络
单纯论精度,神经网络通常表现都可以超越其他大部分的机器学习方法,只要数据量足够,模型复杂度足够,同时,计算资源足够。神经网络可以做的事情很多,CNN通常用于图像,RNN、LSTM用于有时序特征的信号,还有RL、GAN等等,可以用武之地很多。也是以后要时常关注的方法。这是个充满神奇与魅力的东西。