大三学过《数据科学编程Ⅱ》这门课,主要介绍了大数据分析的一些基本方法和流程,在这里总结一下。
一、机器学习任务分类
基于问题类型
- 分类问题: 逻辑回归、KNN、决策树、支持向量机、BP神经网络
- 回归问题: 线性回归、多项式回归、KNN、决策树、支持向量机、BP神经网络
- 聚类问题: k-means
- 关联学习(Association learning): 在实例发现某些固定模式和规律
- 降维问题: PCA主成分分析、相关系数法、决策树熵权法
基于解决策略
- 有监督学习(Supervised)
- 无监督学习(Unsupervised)
- 半监督学习(Semi-supervised): 将数据集部分标注,比如在识别问题中,对部分数据进行标注,可能会提高识别的准确率。
- 强化学习(Reinforcement)
二、数据预处理(Data Preprocessing)
特征工程在机器学习过程中占据重要地位,甚至比训练和调参更加重要,它决定了训练的整体效果。
1. 查看基本信息
data.info()
可以查看特征类型、缺失值、数据量等情况。data.describe()
可以查看数值类型的均值、数据大致分布等情况。
2. 处理缺失值
- drop相关的行/列
- 用均值/众数/向前/向后等填充
3. 查看数据分布、诊断离群值
- 使用直方图(hist)查看数据分布,删除分布极端的列
- 使用箱线图查看离群值,删除或转换成合理最大值
4. 查看相关系数
- 删除相关系数过高的列(目标列除外)
5. 处理不平衡数据集
- 常用方法有:
(1)采集更多数据,最后选取平衡数量的数据。
(2)重采样,减少大类的数据,增加小类的数据(甚至可以重复取样)。
(3)人为生成小类的数据。
(4)细分类,将大类的数据再细分为几个小类,使每个类别数据平衡。
6. 归一化
- Normalizing/Min-max scaling: 将数据归一至(0,1)之间。
- Standardization scaling: 将数据归一至(-1,1)之间。
7. 独热编码转换(One-hot coding)
- 经过多次尝试,我发现对于非数值类型的列,进行独热编码比直接
map([1,2,3] --> ['a','b','c'])
效果要好
8. 特征选择、降维
- PCA主成分分析
- 对目标列的相关系数排序
- 决策树特征重要性提取(熵权法)
- 利用聚类降维:将特征转换为每个点到每个类中心点的距离
- 通过正则化增加 λ \lambda λ ,根据使正则化项趋于零的顺序,进行特征排序
9. 分割数据集
2. 数据训练与调参(Data Training)
- 网格搜索
- 交叉验证
3. 效果评价(Evaluation)
-
分类问题: 基于混淆矩阵(Confusion matrix)进行评价,主要指标有accuracy、、precision、recall、f1 score、ROC、AUC等
-
回归问题: MAE、MSE