数据挖掘和机器学习20个面试问题( 二 )


4.你会如何进行探索性数据分析(EDA)?
EDA的目的是去挖掘数据的一些重要信息 。一般情况下会从粗到细的方式进行EDA探索 。一开始我们可以去探索一些全局性的信息 。观察一些不平衡的数据,计算一下各个类的方差和均值 。看一下前几行数据的信息,包含什么特征等信息 。使用中的()去了解哪些特征是连续的,离散的,它们的类型(int、float、) 。接下来,删除一些不需要的列,这些列就是那些在分析和预测的过程中没有什么用的 。
比如:某些列的值很多都是相同的,或者这些列有很多缺失值 。当然你也可以去用一些中位数等去填充这些缺失值 。然后我们可以去做一些可视化 。对于一些类别特征或者值比较少的可以使用条形图 。类标和样本数的条形图 。找到一些最一般的特征 。对一些特征和类别的关系进行可视化去获得一些基本的信息 。然后还可以可视化两个特征或三个特征之间的关系,探索特征之间的联系 。
你也可以使用PCA去了解哪些特征更加重要 。组合特征去探索他们的关系,比如当A=0,B=0的类别是什么,A=1,B=0呢?比较特征的不同值,比如性别特征有男女两个取值,我们可以看下男和女两种取值的样本类标会不会不一样 。
另外,除了条形图、散点图等基本的画图方式外,也可以使用PDF\CDF或者覆盖图等 。观察一些统计数据比如数据分布、p值等 。这些分析后,最后就可以开始建模了 。
一开始可以使用一些比较简单的模型比如贝叶斯模型和逻辑斯谛回归模型 。如果你发现你的数据是高度非线性的,你可以使用多项式回归、决策树或者SVM等 。特征选择则可以基于这些特征在EDA过程中分析的重要性 。如果你的数据量很大的话也可以使用神经网络 。然后观察ROC曲线、查全率和查准率 。
5.如何选用模型?
5.1逻辑回归LR
选择:
快速建模,并且当要建模的关系不是很复杂,并且没有很多数据时,特别有用 。
线性回归很容易理解,这对于商业决策非常有价值 。
不选择:
对于非线性数据,多项式回归对于设计是非常具有挑战性的,因为必须有一些关于数据结构和特征变量之间的关系的信息 。
因此,当涉及到高度复杂的数据时,这些模型不如其他模型好 。
5.2神经网络NN
选择:
由于神经网络可以具有许多具有非线性的层(以及参数),因此它们在建模高度复杂的非线性关系方面非常有效 。
我们通常不必担心神经网络的数据结构,在学习几乎任何类型的特征变量关系时都是非常灵活的 。
研究一直表明,简单地给网络提供更多的训练数据,无论是全新的还是扩充原始数据集,都有利于网络性能 。
不选择:
由于这些模型的复杂性,它们不容易解释和理解 。
它们可能非常具有挑战性和计算密集的培训,需要仔细的超参数调整和设置学习速率调度 。
它们需要大量的数据来实现高性能,并且在“小数据”的情况下通常优于其他ML算法 。
5.3随机森林RF
选择:
善于学习复杂、高度非线性的关系 。它们通常可以达到很高的性能,优于多项式回归,并且通常与神经网络相媲美 。
很容易理解和理解 。尽管最终的培训模型可以学习复杂的关系,但是在培训期间构建的决策边界很容易理解,也很实用 。
不选择:
由于训练决策树的性质,它们可能容易出现较大的过度拟合 。一个完整的决策树模型可能过于复杂,包含不必要的结构 。虽然有时可以使用适当的树木修剪和更大的随机森林合奏缓解 。
使用较大的随机森林集合来实现更高的性能具有速度较慢和需要更多内存的缺点 。