- 在一个n维的空间中, 最好的检测outlier(离群点)的方法是:
- 马氏距离
- 对数几率回归(logistics regression)和一般回归分析有什么区别?:
- 对数几率回归是设计用来预测事件可能性的
- 对数几率回归可以用来度量模型拟合程度
- 对数几率回归可以用来估计回归系数
- bootstrap数据是什么意思?(提示:考“bootstrap”和“boosting”区别):
- 有放回地从总共N个样本中抽样n个样本
- “过拟合”只在监督学习中出现,在非监督学习中,没有“过拟合”,这是:
错的。我们可以评估无监督学习方法通过无监督学习的指标,如:我们可以评估聚类模型通过调整兰德系数(adjusted rand score)
- 对于k折交叉验证, 以下对k的说法正确的是 :
- k越大, 不一定越好, 选择大的k会加大评估时间
- 选择更大的k, 就会有更小的bias (因为训练集更加接近总数据集)
- 在选择k时, 要最小化数据集之间的方差
- 回归模型中存在多重共线性, 你如何解决这个问题?
- 我们可以先去除一个共线性变量
- 计算VIF(方差膨胀因子), 采取相应措施
- 为了避免损失信息, 我们可以使用一些正则化方法, 比如, 岭回归和lasso回归.
- 解决多重公线性, 可以使用相关矩阵去去除相关性高于75%的变量 (有主观成分). 也可以VIF, 如果VIF值<=4说明相关性不是很高, VIF值>=10说明相关性较高.
- 我们也可以用 岭回归和lasso回归的带有惩罚正则项的方法. 我们也可以在一些变量上加随机噪声, 使得变量之间变得不同, 但是这个方法要小心使用, 可能会影响预测效果.
- 如果SVM模型欠拟合, 以下方法哪些可以改进模型 :
- 增大惩罚参数C的值
- 假如我们使用非线性可分的SVM目标函数作为最优化对象, 我们怎么保证模型线性可分 :
- 设C=无穷大,C无穷大保证了所有的线性不可分都是可以忍受的.
- 我们想要减少数据集中的特征数, 即降维. 选择以下适合的方案 :
- 使用前向特征选择方法
- 使用后向特征排除方法
- 我们先把所有特征都使用, 去训练一个模型, 得到测试集上的表现. 然后我们去掉一个特征, 再去训练, 用交叉验证看看测试集上的表现. 如果表现比原来还要好, 我们可以去除这个特征.
- 查看相关性表, 去除相关性最高的一些特征
-
如何进行特征选择?
- 特征选择是一个重要的数据预处理过程,主要有两个原因,首先在现实任务中我们会遇到维数灾难的问题(样本密度非常稀疏),若能从中选择一部分特征,那么这个问题能大大缓解。另外就是去除相关特征会降低学习任务的难度,增加模型的泛化能力。冗余特征指该特征包含的信息可以从其他特征中推演出来,但是这并不代表该冗余特征一定没有作用,例如在欠拟合的情况下也可以用过加入冗余特征,增加简单模型的复杂度。
- 在理论上如果没有任何领域知识作为先验假设那么只能遍历所有可能的子集。但是这显然是不可能的,因为需要遍历的数量是组合爆炸的。一般我们分为子集搜索和子集评价两个过程,子集搜索一般采用贪心算法,每一轮从候选特征中添加或者删除,分别成为前向和后先搜索。或者两者结合的双向搜索。子集评价一般采用信息增益,对于连续数据往往排序之后选择中点作为分割点。
- 常见的特征选择方式有过滤式,包裹式和嵌入式,filter,wrapper和embedding。Filter类型先对数据集进行特征选择,再训练学习器。Wrapper直接把最终学习器的性能作为特征子集的评价准则,一般通过不断候选子集,然后利用cross-validation过程更新候选特征,通常计算量比较大。嵌入式特征选择将特征选择过程和训练过程融为了一体,在训练过程中自动进行了特征选择,例如L1正则化更易于获得稀疏解,而L2正则化更不容易过拟合。L1正则化可以通过PGD, 近端梯度下降进行求解。
-
特征比数据还大 选择什么分类器
- 如果训练集很小,那么高偏差/低方差分类器(如朴素贝叶斯分类器)要优于低偏差/高方差分类器(如k近邻分类器),因为后者容易过拟合。然而,随着训练集的增大,低偏差/高方差分类器将开始胜出(它们具有较低的渐近误差),因为高偏差分类器不足以提供准确的模型。你也可以认为这是生成模型与判别模型的区别。
-
为什么一些机器学习模型需要对数据进行归一化?
- 归一化后加快了梯度下降求最优解的速度。等高线变得显得圆滑,在梯度下降进行求解时能较快的收敛。如果不做归一化,梯度下降过程容易走之字,很难收敛甚至不能收敛
- 把有量纲表达式变为无量纲表达式, 有可能提高精度。一些分类器需要计算样本之间的距离(如欧氏距离),例如KNN。如果一个特征值域范围非常大,那么距离计算就主要取决于这个特征,从而与实际情况相悖(比如这时实际情况是值域范围小的特征更重要)
- 逻辑回归等模型先验假设数据服从正态分布。
- 归一化的类型有线性归一化、标准差归一化、非线性归一化
-
特征向量的缺失值处理
- 缺失值较多.直接将该特征舍弃掉,否则可能反倒会带入较大的noise,对结果造成不良影响。
- 缺失值较少,其余的特征缺失值都在10%以内,我们可以采取很多的方式来处理:
- 把NaN直接作为一个特征,假设用0表示;
- 用均值填充;
- 用随机森林等算法预测填充
-
决策树的停止条件
- 直到每个叶子节点都只有一种类型的记录时停止,(这种方式很容易过拟合)
- 另一种时当叶子节点的记录树小于一定的阈值或者节点的信息增益小于一定的阈值时停止
-
神经网络有哪些优化算法?
- 解决优化问题,有很多算法(最常见的就是梯度下降),这些算法也可以用于优化神经网络。每个深度学习库中,都包含了大量的优化算法,用于优化学习速率,让网络用最快的训练次数达到最优,还能防止过拟合。
- SGD:随机梯度下降
- SGD+Momentum: 基于动量的SGD(在SGD基础上做过优化)
- SGD+Nesterov+Momentum:基于动量,两步更新的SGD(在SGD+Momentum基础上做过优化)
- Adagrad:自适应地为各个参数分配不同学习速率
- Adadelta: 针对Adagrad问题,优化过的算法(在Adagrad基础上做过优化)
- RMSprop:对于循环神经网络(RNNs)是最好的优化器(在Adadelta基础上做过优化)
- Adam:对每个权值都计算自适应的学习速率(在RMSprop基础上做过优化)
- Adamax:针对Adam做过优化的算法(在Adam基础上做过优化)
-
Dropout 怎么做,有什么用处,解释
- 可以通过阻止某些特征的协同作用来缓解。在每次训练的时候,每个神经元有百分之50的几率被移除,这样可以让一个神经元的出现不应该依赖于另外一个神经元。另外,我们可以把dropout理解为 模型平均。假设我们要实现一个图片分类任务,我们设计出了100000个网络,这100000个网络,我们可以设计得各不相同,然后我们对这100000个网络进行训练,训练完后我们采用平均的方法,进行预测,这样肯定可以提高网络的泛化能力,或者说可以防止过拟合,因为这100000个网络,它们各不相同,可以提高网络的稳定性。而所谓的dropout我们可以这么理解,这n个网络,它们权值共享,并且具有相同的网络层数(这样可以大大减小计算量)。我们每次dropout后,网络模型都可以看成是整个网络的子网络。(需要注意的是如果采用dropout,训练时间大大延长,但是对测试阶段没影响)。
- Dropout说的简单一点就是我们让在前向传导的时候,让某个神经元的激活值以一定的概率p,让其停止工作
-
CNN池化层的作用?
- 不变性,旋转位移不变性,更关注是否存在某些特征而不是特征具体的位置。可以看作加了一个很强的先验,让学到的特征要能容忍一些的变化。
- 减小下一层输入大小,减小计算量和参数个数。
- 获得定长输出。(文本分类的时候输入是不定长的,可以通过池化获得定长输出)
- 防止过拟合或有可能会带来欠拟合。保留主要的特征同时减少参数(降维,效果类似PCA)和计算量,防止过拟合,提高模型泛化能力
-
(红黑树)红黑树是什么?有什么性质?红黑树与AVL树的区别?
- 红黑树(Red Black Tree) 是一种自平衡二叉查找树。红黑树和AVL树类似,都是在进行插入和删除操作时通过特定操作保持二叉查找树的平衡,从而获得较高的查找性能。
- 它虽然是复杂的,但它的最坏情况运行时间也是非常良好的,并且在实践中是高效的: 它可以在O(logn)时间内做查找,插入和删除,这里的n 是树中元素的数目。红黑树的统计性能比较好,红黑树是牺牲了严格的高度平衡的优越条件为代价红黑树能够以O(log2 n)的时间复杂度进行搜索、插入、删除操作。此外,由于它的设计,任何不平衡都会在三次旋转之内解决。