2014 百度笔试 机器学习及数据挖掘

1、什么是欠拟合和过拟合的?如何避免?

欠拟合的原因:模型复杂度过低,不能很好的拟合所有的数据,训练误差大;
避免欠拟合:增加模型复杂度,如采用高阶模型(预测)或者引入更多特征(分类),减少归一化程度,增加训练实例等。
过拟合的原因:模型复杂度过高,训练数据过少,训练误差小,测试误差大;
避免过拟合:降低模型复杂度,如加上正则惩罚项,如L1,L2,增加训练数据等。

  • L1正则化可以产生稀疏权值矩阵,即产生一个稀疏模型,因此可以用于特征选择
  • L2正则化可以防止模型过拟合(overfitting);一定程度上,L1也可以防止过拟合
    参考:
    欠拟合,过拟合

2、决策树:1、父节点与子节点的熵值大小比较;2、终止条件

决策树比较出名的有ID3算法,C4.5算法,CART算法。

ID3算法基于熵值大小(信息增益)的原则来选择划分的特征。计算方法如下:

g(D,A)=H(D)H(D|A)H(D)=i=1npilog(Pi)

H(D|A)=i=1mpiH(D|X=xi),pi=P(X=xi)

其中,D是数据集,n是数据集的类别标签,A是要划分的特征,m是A的所有可能情况。

终止条件:决策树需要有停止的条件来终止其生长的过程,一般来说最低的条件是:当该节点下面的所有记录都属于同一类,或者是没有属性再对数据进行分割。这两种条件是停止决策树的必要条件,也是最低的条件,在实际运用中我们希望决策树提前停止生长,限定叶节点包含的最低数据量,防止由于过度生长造成的过拟合是十分重要的

C4.5算法 基于信息增益比来选择特征

gR(D,A)=g(D,A)HA(D),HA(D)=i=1n|Di||D|log2|Di||D|

CART算法:利用Gini指标

Gini(p)=1k=1Kp2k

Gini(D,A)=|D1||D|Gini(D1)+|D2||D|Gini(D2)

选择最佳特征值的算法过程:

对每一数据集的特征
    对每个特征值
        将数据划为两份,并计算基尼指标
选择最小的基尼指标对应的特征的属性值,划分数据

3、推导朴素贝叶斯分类P(c|d),文档d(由若干word组成),求该文档属于类别c的概率,并说明公式中哪些概率可以利用训练集计算得到

这里写图片描述

究竟如何得到 P(d|Cj) 。如下:
在文档分类时,我们假设词语出现的概率时独立的,即相互之间出现互不影响。则 P(d|Cj)=p(w0|Cj)p(w1|Cj)...p(wN|Cj) ,假设文档有N个词。
计算 P(d|Cj) 的伪代码:

计算每个类别的文档数目
对每篇训练文档
    对每个类别
        如果词条出现在文档中,增加该词条的计数值
        增加所有词条的计数值
    对每个类别
        对每个词条
            计算每个词条在该类中出现的条件概率
    返回每个类别的条件概率

5、KMeans怎么选择聚类中心?如果存在空块怎么办?

1)选择彼此距离尽可能远的K个点
首先随机选择一个点作为第一个初始类簇中心点,然后选择距离该点最远的那个点作为第二个初始类簇中心点,然后再选择距离前两个点的最近距离最大的点作为第三个初始类簇的中心点,以此类推,直至选出K个初始类簇中心点。

2)先对数据用层次聚类算法或者Canopy算法进行聚类,得到K个簇之后,从每个类簇中选择一个点,该点可以是该类簇的中心点,或者是距离类簇中心点最近的那个点。常用的层次聚类算法有BIRCH和ROCK。

3)二分K-均值算法

我将空块理解为缺失值:填补缺失值有几种方法。
1.如果数据分布偏正态分布,采用均值填充。这对小数据集比较适用
2.KNN方法。找出与缺失样本最近的K个数据,采用他们的均值或众数填充

6、线性SVM算法的基本原理?核函数干什么用的?
线性SVM用于分类那些线性可分或近似线性可分的点。公式如下:

minw,b(1/2)||w||2

s.t.yi(wi+b)1>=0,i=1,2...,n

核函数:通过将输入空间转化到高维的特征空间,使原本线性不可分的数据变的线性可分。常用的核函数有:
多项式核: K(x,z)=(x,z+1)p
高斯核: K(x,z)=exp(||xz||22α2)
字符串核函数

线性不可分映射到高维空间,可能会导致维度大小高到可怕的(19维乃至无穷维的例子),导致计算复杂。核函数的价值在于它虽然也是将特征进行从低维到高维的转换,但核函数绝就绝在它事先在低维上进行计算,而将实质上的分类效果表现在了高维上,也就避免了直接在高维空间中的复杂计算

7、第七题是一个关于数据挖掘中关联规则的案例,MD,以前听都没听过关联规则,然后交了白卷,回来上网一查,原来关联规则这么好使以及强大呢,我肯定说不清楚的,还是附一个我认为特别好的链接吧,图文并茂+案例。。

浅谈数据挖掘中的关联规则挖掘

Apriori算法:
1)从事务集合中找出频繁项目集;
2)从频繁项目集合中生成满足最低置信度的关联规则。

8、给定两个特征向量,你知道哪些计算这两个向量相似度/相一度的方法?
余弦相似度,欧式距离相似度,jaccard系数(向量由0,1组成,[0,1]),皮尔逊相似度(求协方差)

相关系数: pxy=E((XE(X))(YE(Y)))D(X)D(Y)

9、给你200万个2000万维的训练集,给出一套完整合理的分类方案。

1.数据预处理。
包括处理缺失值,可以用中值,众数,回归方法填充,或者直接忽略该属性。并且要删除“脏数据”,比如数据格式不对的属性。

2.特征的处理

可以先利用PCA来降维。通过plot函数我们可以得知主成分的个数包含了数据的多少信息。比如要保留98%的信息,多少的主成分是足够的了,然后就降维到主成分的维度。降维在这里很重要,因为有两千万维的数据,如果不降维几乎处理不了。
之后考虑连续特征离散化,有些连续特征,如年龄,点击数,离散后模型的鲁棒性可能更好。(参考
也可以考虑特征的交叉,但这要建立在对业务比较熟悉的情况下才能做。
这一切处理都是为了让下面的模型准确度更高。

3.交叉验证选择分类器
在这里先归一化数据,一般归一化有两种:
min-max归一化: x=xminmaxmin
Z-score归一化: x=xuα ,u,α是均值,标准差。
建议选用第二种。
将数据集分为60%,20%,20%的训练集,验证集,训练集,然后将训练集训练多个不同的分类模型,比如SVM,逻辑回归,决策树,神经网络或adaboost,之后用这些模型分别对验证集进行验证,选择代价函数最小的模型,比如SVM,最后利用该模型计算测试集。
在分类时应该考虑归一化模型,防止过拟合。
在构建模型需要注意的点:

  • 对于单个模型,可以基于F score来选择分类器的阈值,准则是该阈值能使F score 最大。也可以利用ROC曲线来选择阈值。(ROC横轴是假阳率,纵轴真阳率,AUC面积越大越好)
  • 并且,如果精度在测试集一直不高,应该考虑重新回到PCA,选择降维维数。

10、PCA与ICA的区别。
以后再写。

11.为什么要归一化数据?
有些模型在各个维度进行不均匀伸缩后,最优解与原来不等价,例如SVM。对于这样的模型,除非本来各维数据的分布范围就比较接近,否则必须进行标准化,以免模型参数被分布范围较大或较小的数据dominate。有些模型在各个维度进行不均匀伸缩后,最优解与原来等价,例如logistic regression。对于这样的模型,是否标准化理论上不会改变最优解。但是,由于实际求解往往使用迭代算法,如果目标函数的形状太“扁”,迭代算法可能收敛得很慢甚至不收敛。所以对于具有伸缩不变性的模型,最好也进行数据标准化

作者:王赟 Maigo
链接:https://www.zhihu.com/question/30038463/answer/50491149
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值