机器学习常见到的问题

机器学习项目

机器学习项目一般都会牵扯到数据预处理,建模,评估,可视化,部署上线等一系列流程。

数据预处理

如何处理缺失数据(missing data)?各种方法有什么利弊

  1. 用平均值、中值、分位数、众数、随机数替代。效果一般,等价为认为增加了噪音
  2. 用其他变量作为特征设计一个预测模型。效果比1略好,但是有缺陷。如果预测不准,预测结果没有意义,如果预测的很准,说明这个特征和其他特征相关性很大,没有必要
    加入到模型中
  3. 最精确的做法:将变量映射到高维空间,比如性别有男、女和缺失三种情况,
    则可以映射为是否男,是否女,是否缺失(one hot形式)。连续变量也可以这样处理。不需要考虑缺失值,保留了完整的数据信息。
    但是计算量会大大增加。

如何将描述变量(categorical variables)转为连续变量(continuous variables)?

如何处理有序变量?

有些特征虽然也像无序特征那样只取限定的几个值,但是这些值之间有顺序的含义。例如一个人的状态status有三种取值:bad, normal, good,显然bad < normal < good。

当然,对有序特征最简单的处理方式是忽略其中的顺序关系,把它看成无序的,这样我们就可以使用处理无序特征的方式来处理它。在实际问题中,这种处理方式其实用的很多。

当然有些问题里有序可能会很重要,这时候就不应该把其中的顺序关系丢掉。一般的表达方式如下:

status取值 向量表示

1
2
3
bad	(1, 0, 0) 
normal (1, 1, 0)
good (1, 1, 1)

上面这种表达方式很巧妙地利用递进表达了值之间的顺序关系。

如何处理无序变量?
可以使用one hot 编码方式

如何进行特征选择?如何进行数据压缩?

特征选择:包裹式,过滤式,嵌入式

数据压缩:主成分分析,自编码等

数据不均衡的问题

数据不均衡的处理方法主要包括

  1. Sampling方法:基于采样的方法,对数据集进行过采样或者欠采样。欠采样会带来信息丢失的问题,过采样又会导致过拟合问题。还有一种采样是插值方法,如smote(选择每个正样本的k近邻,然后在该样本和近邻样本的连线上随机采样),对数据进行重新生成的方法。
  2. 采用多个分组将多数的类别数据拆分成多个少数组数据,然后分别进行训练取bagging。这个方法更适合于集成方法
  3. kernel类模型,还可以通过修改核函数偏移超平面,抵消不均衡问题。
  4. 通过修改cost function的计算方法,对少数类的损失赋予一个较大的权值,让模型更注重少数类的学习。

模型解释

什么是欠拟合和过拟合?如何应对这两种情况

什么是偏差与方差分解(Bias Variance Decomposition)?与欠拟合和过拟合有什么联系?

评估方法

分类模型评估方法?

准确度
精确度(预测的准不准)
recall值(预测的全不全)
F1 score
AUC等

回归问题评估方法?

MSE
MAE

数据不均衡的评估方法?

AUC
F1 score
F均值(调和均值,通过控制recall的权值控制更重视precision和recall中的哪一个)

模型之间的对比

深度学习是否要比其他学习模型好?

视情况而定
没有免费午餐定理