机器学习面试题总结(1)

机器学习面试题总结(1)

导语:

为了准备暑期实习,从各种面经中总结了一些机器学习的面试题。答案一部分是网上的答案,一部分是自己的心得。这些东西类似“真题”,一来检测自己的知识掌握情况,二来作为之后的学习做一个导向。


Q1:如何处理缺失值,以及各种方法的利弊?

1.用平均值、中值、众数、随机数等替代。优点是简便。缺点是相当于人为增加了噪声

2.用其他变量做一个预测模型来算出缺失值。但是如果其他变量与缺失变量若无关,则计算无意义;若强相关,则不必计算

3.把缺失值当做一个独立的类型,然后把该变量映射到一个高维的空间(类似one-hot)。优点是可以保持样本的所有信息。缺点是计算量巨大,且如果样本数目较少的话,这样映射会使得数据变得非常稀疏。

Q2:如何将描述变量转为连续变量?

描述变量也叫分类变量,一般是离散的。可以用其拟合一个回归方程,然后可当做连续变量处理。

Q3:如何处理有序变量?

有序变量最好做一下one-hot encoding(独热编码),也可以将有序变量直接当做连续变量。

Q4:如何进行特征选择?

从给定的特征集合中选择出相关特征子集的过程,称为特征选择。特征选择和降维是处理高维数据的两大主流技术。其主要涉及两个关键环节:子集搜索子集评价。常见的方法有三大类:

1.过滤式

过滤方式先对数据集进行特征选择,然后再训练学习器。过滤式不考虑后续学习器的最终性能。Relief是一种著名的过滤式特征选择方法,设计了一个“相关统计量”来度量特征的重要性。相关统计量对应于属性 j 的分量为:

σj=idiff(xij,xi,nhj)2+diff(xij,xi,nmj)2

其中xaj表示样本xa在属性j上的取值,diff(xaj,xbj)取决于属性j的类型:若是离散型,则xaj=xbj时取0,否则取1;若是连续型,则其值等于|xajxbj|,注意xaj,xbj已规范化到[0,1]区间内。

Relief算法是针对二分类问题的,而多分类问题要用到Relief-F算法。该算法中,相关变量对于属性 j 的分量为:

σj=idiff(xij,xi,nhj)2+lk(pl×diff(xij,xi,nmj)2)

其中pl为第 l 类样本在数据集 D 中所占的比例。

2.包裹式

包裹式考虑了特征子集选择对学习器效果的影响,选择出一个使学习器效果最佳的特征子集。因为在特征选择中需要多次训练学习器,所以计算开销较大。LVW是一个典型的包裹式特征选择方法。算法描述如下:

输入:数据集D;
特征集A;
学习算法E;
停止条件控制参数T.
过程:

E=oo;
d=|A|;
A*=|A|;
t=0;
while t<T do
    随机产生特征子集A';
    d'=|A'|;
    E'=CrossValidation(E(DA'));
    if (E'<E) || ((E'=E) && (d'<d)) then
        t=0;
        E=E';
        d=d';
        A*=A';
    else
        t=t+1;
    end if
end while       

输出:特征子集A*

其中,d表示特征子集包含的特征数。当特征子集A’上的误差比A小的时候或者误差相当但包含的特征数少的时候,就将A’保留下来。注意,由于设置了停止参数T,所以当A十分庞大但运行时间有限的时候,可能给不出解。

3.嵌入式

与上述两种方法不同,嵌入式选择将特征选择与学习器训练融为一体,让二者在同一个优化过程中完成。在损失函数中引入L1正则化,不仅可以有效降低过拟合的风险,还可以使权重矩阵含有更少的非零分量,即完成了一个特征选择。

阅读更多
文章标签: 面试 机器学习
个人分类: 面试题
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

关闭
关闭
关闭