文章目录
一、数据处理
1.准备数据
原始的数据本身也存在着各种各样的问题
如不够准确、格式多样、部分特征缺失、标准不统一、特殊数据、错误数据等
需要你掌握一些数据库的使用技巧
关系型数据库MySQL、大数据使用的Hbase、HIVE、搜索引擎数据库ES、内存数据库Redis
2.数据探索
如果是数值型的数据
通过计算均值、方差、中位数、标准差、最大值、最小值等去探索、扩展
要把数据变多,可以进行如下操作:
- 把内容进行分词,就获得了一个分词后的字段
- 把分词后的内容进行词语的统计,看看哪个词出现得更多·把标题进行分词,进行词语的统计
- 可以对词语的词性进行标注,获得一份词性数据
- 可以找到一些特殊的词,比如名人的名字、机构的名字、地点的名字等一些信息
3.数据清洗
数据清洗――处理扩展后的数据、解决所发现的问题同时又要顾及处理后的数据是否适合应用于下一个步骤
(1)缺失值处理
(2)异常值处理
不同情况的异常值有不同的处理办法:
- 数据本身的错误――需要对数据进行修正,或者直接丢弃。
- 数据是正确的――需要根据业务需求进行处理
如果目标是发现异常情况,异常值需要保留下来,甚至需要特别关照
如果目标跟异常值没有关系,可以对这些异常值做一些修正
异常值――与样本空间中绝大多数数据分布差距过大的数据
- 错误的情况
比如医院录入病人病历的时候,忘了给数字输入小数点 - 正常的情况
在平均充值为100元的游戏中,有人充了100万元
直接使用到模型中可能会影响到平均值的计算,影响模型训练的效果
只有1000万在线用户的App,突然拥有十亿的在线用户,有可能是应用网络受到了攻击
(3)数据偏差的处理
数据偏差可能导致后面训练的模型过拟合或者欠拟合
如果需要比较均衡的样本,可以考虑丢弃较多的数据,或者补充较少的数据
补充较少的数据时,考虑使用现有数据去合成一些数据,或者直接复制一些数据从而增加样本数量
UGC内容(User Generated Content,用户生成内容)的质量
质量较差的内容占大多数,质量好的占少数,质量非常好的是少之又少有些算法会倾向于预测占比较大的数据。比如质量好的内容只占2%,而质量差的内容占到了98%,模型倾向于给出质量差的结果
(4)数据标准化
对数据的标准进行整理,可以防止某个维度的数据因为数值的差异,而对结果产生较大的影响。
- 有些算法中,每一个维度的数据标准都需要进行统一。
- 另外一些算法中,需要统一数据的类型
在预测一个地区的房价时,房屋的房间数可能是个位数地区平均单价可能是以万为单位的
一个处理方法是把这些维度的数据都进行标准化。比如把这些数据都规范到0~1的区间
(5)特征选择
特征选择――尽可能留下较少的数据维度,而又可以不降低模型训练的效果维度越多,数据就会越稀疏,模型的可解释性就会变差、可信度降低
过多维度会造成运算的缓慢,同时多余的维度可能会对模型的结果产生不好的影响
(6)构建训练集和测试集
在训练之前,要把数据分成训练集和测试集,有些还会有验证集。
- 如果是均衡的数据,即各个分类的数据量基本一致
直接随机抽取一定比例的数据作为训练样本,另外一部分作为测试样本 - 如果是非均衡的数据,比如风险类数据一般远远少于普通型数据
使用分层抽样以保障每种类型的数据都可以出现在训练集和测试集中
训练集和测试集的构建,比如:
- 留出法,直接把整个数据集划分为两个互斥的部分,使得训练集和测试集互不干扰
- 交叉验证法,先把数据集划分成n个小的数据集
每次使用n-1个数据集作为训练集,剩下的作为测试集进行n次训练。 - 自助法,通过重复抽样构建数据集,通常在小数据集的情况下非常适用
二、数据建模
- 分类方法输出的是离散的标签
- 回归方法输出的结果是连续值
1.分类问题(KNN、决策树、随机森林、SVM等)
2.聚类问题
3.回归问题