机器学习项目
机器学习项目一般都会牵扯到数据预处理,建模,评估,可视化,部署上线等一系列流程。
数据预处理
如何处理缺失数据(missing data)?各种方法有什么利弊
- 用平均值、中值、分位数、众数、随机数替代。效果一般,等价为认为增加了噪音
- 用其他变量作为特征设计一个预测模型。效果比1略好,但是有缺陷。如果预测不准,预测结果没有意义,如果预测的很准,说明这个特征和其他特征相关性很大,没有必要
加入到模型中 - 最精确的做法:将变量映射到高维空间,比如性别有男、女和缺失三种情况,
则可以映射为是否男,是否女,是否缺失(one hot形式)。连续变量也可以这样处理。不需要考虑缺失值,保留了完整的数据信息。
但是计算量会大大增加。
如何将描述变量(categorical variables)转为连续变量(continuous variables)?
如何处理有序变量?
有些特征虽然也像无序特征那样只取限定的几个值,但是这些值之间有顺序的含义。例如一个人的状态status有三种取值:bad, normal, good,显然bad < normal < good。
当然,对有序特征最简单的处理方式是忽略其中的顺序关系,把它看成无序的,这样我们就可以使用处理无序特征的方式来处理它。在实际问题中,这种处理方式其实用的很多。
当然有些问题里有序可能会很重要,这时候就不应该把其中的顺序关系丢掉。一般的表达方式如下:
status取值 向量表示1
2
3bad (1, 0, 0)
normal (1, 1, 0)
good (1, 1, 1)
上面这种表达方式很巧妙地利用递进表达了值之间的顺序关系。
如何处理无序变量?
可以使用one hot 编码方式
如何进行特征选择?如何进行数据压缩?
特征选择:包裹式,过滤式,嵌入式
数据压缩:主成分分析,自编码等
数据不均衡的问题
数据不均衡的处理方法主要包括
- Sampling方法:基于采样的方法,对数据集进行过采样或者欠采样。欠采样会带来信息丢失的问题,过采样又会导致过拟合问题。还有一种采样是插值方法,如smote(选择每个正样本的k近邻,然后在该样本和近邻样本的连线上随机采样),对数据进行重新生成的方法。
- 采用多个分组将多数的类别数据拆分成多个少数组数据,然后分别进行训练取bagging。这个方法更适合于集成方法
- kernel类模型,还可以通过修改核函数偏移超平面,抵消不均衡问题。
- 通过修改cost function的计算方法,对少数类的损失赋予一个较大的权值,让模型更注重少数类的学习。
模型解释
什么是欠拟合和过拟合?如何应对这两种情况
什么是偏差与方差分解(Bias Variance Decomposition)?与欠拟合和过拟合有什么联系?
评估方法
分类模型评估方法?
准确度
精确度(预测的准不准)
recall值(预测的全不全)
F1 score
AUC等
回归问题评估方法?
MSE
MAE
数据不均衡的评估方法?
AUC
F1 score
F均值(调和均值,通过控制recall的权值控制更重视precision和recall中的哪一个)
模型之间的对比
深度学习是否要比其他学习模型好?
视情况而定
没有免费午餐定理