机器学习与数据挖掘-3
11.模型过拟合怎么处理(百度)
参考答案
1.获取更多数据,扩大数据量。
2.降低模型复杂度。
3.添加正则项。
4.改为集成学习。
12.介绍一下模型融合(百度)
参考答案
Bagging就是采用有放回的方式进行抽样,用抽样的样本建立子模型,对子模型进行训练,这个过程重复多次,最后进行融合。例如随机森林。
参考答案
传统的文本匹配算法Jaccard:两句子分词后词语的交集中词语数与并集中词语数之比。Simhash:先计算两句子的simhash二进制编码,然后使用海明距离计算,最后使用两句的最大simhash值归一化得相似度。
答案解析
选2-3个传统的文本匹配算法说一下原理即可
14.怎么防止过拟合(猿辅导)
参考答案
1.获取和使用更多的数据(数据集增强)——解决过拟合的根本性方法
让机器学习或深度学习模型泛化能力更好的办法就是使用更多的数据进行训练。但是,在实践中,我们拥有的数据量是有限的。解决这个问题的一种方法就是创建“假数据”并添加到训练集中——数据集增强。通过增加训练集的额外副本来增加训练集的大小,进而改进模型的泛化能力。
2. 采用合适的模型(控制模型的复杂度)
过拟合主要是有两个原因造成的:数据太少+模型太复杂。所以,我们可以通过使用合适复杂度的模型来防止过拟合问题。
3.降低特征的数量
对于一些特征工程而言,可以降低特征的数量——删除冗余特征,人工选择保留哪些特征。这种方法也可以解决过拟合问题
4.结合多种模型
简而言之,训练多个模型,以每个模型的平均输出作为结果。比如bagging和boosting,都能很好的解决过拟合。
答案解析
这道题主要考验过拟合的概念及如何防止过拟合,过拟合是指训练误差和测试误差之间的差距太大。就是说模型复杂度高于实际问题,模型在训练集上表现很好,但在测试集上却表现很差。
15.xgboost rf不同(快手)
参考答案
1、随机森林采用的bagging思想,而xgboost采用的boosting思想。
2、组成随机森林的树可以并行生成;而xgboost只能是串行生成。
3、对于最终的输出结果而言,随机森林采用多数投票等;而xgboost则是将所有结果累加起来,或者加权累加起来。
4、随机森林对异常值不敏感;xgboost对异常值非常敏感。
5、随机森林对训练集一视同仁;xgboost是基于权值的弱分类器的集成。
答案解析
这道题主要是考察xgboost和随机森林的区别,只要能大致描述几个本质上的区别即可
机器学习与数据挖掘-4
16.lstm的原理、lstm和rdd的区别(猿辅导)
参考答案
LSTM原理:
LSTM 是一种特殊的RNN。通过精巧的设计(CNN中的深度残差网络也是类似)解决长序列训练过程中的梯度消失和梯度爆炸问题(即远距离传递导致的信息丢失问题)。标准RNN由简单的神经网络模块按时序展开成链式。这个重复模块往往结构简单且单一,如一个tanh层。这种记忆叠加方式显得简单粗暴。LSTM内部有较为复杂的结构。能通过门控状态来选择调整传输的信息,记住需要长时记忆的信息,忘记不重要的信息。LSTM关键在于增加一条贯穿与链上的信息传送带,称为细胞状态(cell state)。LSTM通过精心设计门结构来对cell state上的信息进行增添和移除。门是使得信息选择式通过的方法。包含一个 sigmoid 神经网络层和一个 pointwise 乘法操作。Sigmoid 层输出0到1之间的数值,描述每个部分有多少量可以通过。0 代表“不许任何量通过”,1 代表“允许任意量通过”。LSTM通过三个门结构来维护cell state上的信息。
RNN和LSTM的区别如下:
1.RNN没有细胞状态;LSTM通过细胞状态记忆信息。
2.RNN激活函数只有tanh;LSTM通过输入门、遗忘门、输出门引入sigmoid函数并结合tanh函数,添加求和操作,减少梯度消失和梯度爆炸的可能性。
3.RNN只能够处理短期依赖问题;LSTM既能够处理短期依赖问题,又能够处理长期依赖问题。
答案解析
这道题主要是考察对LSTM的理解,以及与其他神经网络算法的区别
17.处理噪声数据方法(京东)
参考答案
1、分箱
分箱方法是一种简单常用的预处理方法,通过考察相邻数据来确定最终值。所谓“分箱”,实际上就是按照属性值划分的子区间,如果一个属性值处于某个子区间范围内,就称把该属性值放进这个子区间所代表的“箱子”内。把待处理的数据(某列属性值)按照一定的规则放进一些箱子中,考察每一个箱子中的数据,采用某种方法分别对各个箱子中的数据进行处理。在采用分箱技术时,需要确定的两个主要问题就是:如何分箱以及如何对每个箱子中的数据进行平滑处理。
分箱的方法:有4种:等深分箱法、等宽分箱法、最小熵法和用户自定义区间法。
(1)统一权重
也称等深分箱法,将数据集按记录行数分箱,每箱具有相同的记录数,每箱记录数称为箱子的深度。这是最简单的一种分箱方法。
(2)统一区间
也称等宽分箱法,使数据集在整个属性值的区间上平均分布,即每个箱的区间范围是一个常量,称为箱子宽度。
(3)用户自定义区间
用户可以根据需要自定义区间,当用户明确希望观察某些区间范围内的数据分布时,使用这种方法可以方便地帮助用户达到目的。
例:客户收入属性income排序后的值(人民币元):800 1000 1200 1500 1500 1800 2000 2300 2500
2800 3000 3500 4000 4500 4800 5000,分箱的结果如下。
统一权重:设定权重(箱子深度)为4,分箱后
箱1:800 1000 1200 1500
箱2:1500 1800 2000 2300
箱3:2500 2800 3000 3500
箱4:4000 4500 4800 5000
统一区间:设定区间范围(箱子宽度)为1000元人民币,分箱后
箱1:800 1000 1200 1500 1500 1800
箱2:2000 2300 2500 2800 3000
箱3:3500 4000 4500
箱4:4800 5000
用户自定义:如将客户收入划分为1000元以下、、2000-3000、3000-000和4000元以上几组,分箱后
箱1:800
箱2:1000 1200 1500 1500 1800 2000
箱3:2300 2500 2800 3000
箱4:3500 4000
箱5:4500 4800 5000
(4)数据平滑方法
数据平滑方法又可以细分为:平均值平滑、按边界值平滑和按中值平滑。
按平均值平滑
对同一箱值中的数据求平均值,用平均值替代该箱子中的所有数据。
按边界值平滑
用距离较小的边界值替代箱中每一数据。
按中值平滑
取箱子的中值,用来替代箱子中的所有数据。
2、聚类
将物理的或抽象对象的集合分组为由类似的对象组成的多个类。
找出并清除那些落在簇之外的值(孤立点),这些孤立点被视为噪声。
3、回归
试图发现两个相关的变量之间的变化模式,通过使数据适合一个函数来平滑数据,即通过建立数学模型来预测下一个数值,包括线性回归和非线性回归。
答案解析
这道题主要考察对噪声数据的处理,在建模过程中,前期数据的处理非常麻烦,所以对噪声数据的处理就更加重要了。常用的噪声处理有3种,为分箱,聚类,回归。
18.了解逻辑回归、决策树吗(贝壳找房)
参考答案
逻辑回归:
逻辑回归是用来做分类算法的,大家都熟悉线性回归,一般形式是Y=aX+b,y的取值范围是[-∞,
+∞],有这么多取值,怎么进行分类呢?不用担心,伟大的数学家已经为我们找到了一个方法。也就是把Y的结果带入一个非线性变换的Sigmoid函数中,即可得到[0,1]之间取值范围的数S,S可以把它看成是一个概率值,如果我们设置概率阈值为0.5,那么S大于0.5可以看成是正样本,小于0.5看成是负样本,就可以进行分类了。
Sigmoid函数如下:
函数中t无论取什么值,其结果都在[0,-1]的区间内,回想一下,一个分类问题就有两种答案,一种是“是”,一种是“否”,那0对应着“否”,1对应着“是”,那又有人问了,你这不是[0,1]的区间吗,怎么会只有0和1呢?这个问题问得好,我们假设分类的阈值是0.5,那么超过0.5的归为1分类,低于0.5的归为0分类,阈值是可以自己设定的。
好了,接下来我们把aX+b带入t中就得到了我们的逻辑回归的一般模型方程:
结果P也可以理解为概率,换句话说概率大于0.5的属于1分类,概率小于0.5的属于0分类,这就达到了分类的目的。
决策树:
决策树是一种机器学习的方法。决策树的生成算法有ID3, C4.5和C5.0等。决策树是一种树形结构,其中每个内部节点表示一个属性上的判断,每个分支代表一个判断结果的输出,最后每个叶节点代表一种分类结果。
决策树的构造过程:
决策树的构造过程一般分为3个部分,分别是特征选择、决策树生产和决策树裁剪。
(1)特征选择:
特征选择表示从众多的特征中选择一个特征作为当前节点分裂的标准,如何选择特征有不同的量化评估方法,从而衍生出不同的决策树,如ID3(通过信息增益选择特征)、C4.5(通过信息增益比选择特征)、CART(通过Gini指数选择特征)等。
目的(准则):使用某特征对数据集划分之后,各数据子集的纯度要比划分钱的数据集D的纯度高(也就是不确定性要比划分前数据集D的不确定性低)
(2)决策树的生成
根据选择的特征评估标准,从上至下递归地生成子节点,直到数据集不可分则停止决策树停止生长。这个过程实际上就是使用满足划分准则的特征不断的将数据集划分成纯度更高,不确定行更小的子集的过程。对于当前数据集的每一次划分,都希望根据某个特征划分之后的各个子集的纯度更高,不确定性更小。
(3)决策树的裁剪
决策树容易过拟合,一般需要剪枝来缩小树结构规模、缓解过拟合。
决策树主要的算法有ID3,C4.5和CART,感兴趣的小伙伴可以深入研究。
19.常用pandas哪个包(京东)
参考答案
pandas中主要有两种数据结构,分别是:Series和DataFrame。
Series:一种类似于一维数组的对象,是由一组数据(各种NumPy数据类型)以及一组与之相关的数据标签(即索引)组成。仅由一组数据也可产生简单的Series对象。
DataFrame:一个表格型的数据结构,包含有一组有序的列,每列可以是不同的值类型(数值、字符串、布尔型等),DataFrame即有行索引也有列索引,可以被看做是由Series组成的字典。
常用功能:
①读入CSV
data = pd.read_csv('C:\Users\xxx.csv')
如果涉及中文标题,加入参数:data = pd.read_csv('C:\Users\xxx.csv',encoding='GBK')
②获取行名、列名、行数、列数
data.dtypes # 查看dataframe 的数据类型
data.columns # 列名列表
data.shape #获取行列,返回数组,可以在后面加[0]行 [1] 列
data.describe() #常看数据统计
③重命名
重命名所有列data.columns = ['A','B'] 按照顺序重新命名所有列
data.rename(columns={'A':'a', 'B':'b', 'C':'c', 'D':'d'}, inplace = True) 这种方式可以任意更改列名,且不用注意顺序。
④新增列、删除行
data['a'] = data['b']- 1 新增列并赋值
data.drop['2'] 删除索引为2的行
⑤筛选
筛选行列: df.at、 df.ix、df.loc、df.iloc等用法
df.ix 可以用数字也可以用列明来筛选 如:data.ix[1,1]data.ix["a","B"]
df.loc 只能用行名和列名来筛选data.loc["b","B"] data.loc['b':'c','B','C']
df.iloc 只能用数字data.loc[1,1]
df.at 可以支持数字行序和列名的混合使用: data[1,'a'] 可支持变量序号如:for i in range(0,100): print(data.at[i,'shop_name'])
筛选空值、等于某值:
单条件:df[df.D>0]
多条件:df[(df.D>0)&(df.C<0)]
包含多值:df.A.isin([‘重庆’,’成都’])
⑥分组
data.groupby("a") #按照a列来分组处理数据,可以对处理后的数据进行sum(),count(),mean()等方式处理
答案解析
这道题主要考察对pandas的使用,只要说出pandas常用的功能及使用方式即可
20.PCA知道吗(广联达)
参考答案
在统计学中,主成分分析(PCA)是一种简化数据集的技术。它是一个线性变换。这个变换把数据变换到一个新的坐标系统中,使得任何数据投影的第一大方差在第一个坐标(称为第一主成分)上,第二大方差在第二个坐标(第二主成分)上,依次类推。主成分分析经常用减少数据集的维数,同时保持数据集的对方差贡献最大的特征。这是通过保留低阶主成分,忽略高阶主成分做到的。这样低阶成分往往能够保留住数据的最重要方面。但是,这也不是一定的,要视具体应用而定。
==是一个简化数据集的技术,就是通过线性变换将数据变到一个新坐标上。使得第一大方差在第一坐标,第二大方差在第二坐标。
PCA的算法步骤如下:
设有m条n维数据。
1、将原始数据按列组成n行m列矩阵X
2、将X的每一行(代表一个属性字段)进行零均值化,即减去这一行的均值
3、求出协方差矩阵
4、求出协方差矩阵的特征值及对应的特征向量
5、将特征向量按对应特征值大小从上到下按行排列成矩阵,取前k行组成矩阵P
Y=PX即为降维到k维后的数据
答案解析
这道题主要考察PCA主成分分析,只要将主成分分析的基本概念描述出来即可