关系型数据库MySQL、大数据使用的Hbase、Hive、搜索引擎数据库ES、内存数据库Redis
图数据库,如NEO4j或者JanusGraph等
还要跟各种业务部门沟通协商以获取数据
你要对数据进行分析、预处理以及转换等基础工作
以构建出更加贴合你所要预测测结果的特征
这个环节叫做把数据变多或者数据升维
处理扩展后的数据、解决所发现的问题
同时又要顾及处理后的数据是否适合应用于下一个步骤
区分数据缺失情况,通过分析,了解数据缺失的原因以及数据缺失的影响
缺失值的处理:删掉缺失值的数据、补充缺失值、不做处理
异常值--与样本空间绝大多数数据分部差距过大的数据
数据偏差可能导致后面训练的模型过拟合或者欠拟合
如果需要比较均衡的数据,可以考虑丢弃较多的数据,或者补充较少的数据
补充较少的数据时,考虑使用现有数据去合成一些数据,或者直接复制一些数据从而增加样本数量
数据本身的错误---------需要对数据进行修正,或者直接丢弃
数据是正确的------------需要根据业务需求进行处理
如果目标是发现异常情况,异常值需要保留下来,甚至需要特别关照
如果目标跟异常值没有关系,可以对这些异常制作一些修正
对数据的标准进行整理,可以防止某个维度的数据因为数值的差异,而对结果产生较大的影响
有些算法中,每一个维度的数据标准都需要进行统一
另外一些算法中,需要统一数据的类型
尽可能留下较少的数据维度,而又可以不降低模型训练的效果
维度越多,数据越稀疏,模型的可解释性就会变差、可信度降低
过多维度会造成运算的缓慢,同时多余的维度可能会对模型的结果产生不好的影响
特征选择的技巧:
比如自然语言处理里的关键词提取,或者去掉屏蔽词,以减少不必要的数据维度
对于数值型的数据,可以使用主成分分析等算法来进行特征选择
在训练之前,要把数据分成训练集和测试集,有些还会有验证集
如果是均衡的数据,及各个分类的数据量基本一致,直接抽取一定比例的数据作为训练样本,另外一部分作为测试样本
如果是非均衡数据,使用分层抽样以保证每种类型的数据都可以出现在训练集和测试集中
训练集和测试集的构建,比如:
留出法,直接把整个数据集划分为两个互斥的部分,使得训练集和测试集互不干扰
交叉验证法,先把数据集划分成n个小的数据集,每次使用n-1个数据集作为训练集,剩下的作为测试集进行n次训练
自助法,通过重复抽样构建数据集,通常在小数据集的情况下非常适用