研三学姐找工作分享-----机器学习
http://rs.xidian.edu.cn/forum.php?mod=viewthread&tid=911584
(出处: 西电睿思BBS)
研三学姐渣硕一枚,没拿到几个offer,倒是实习面试了不少企业,每次都讲面试问的东西积累下来,给下一年找工作的师弟师妹分享一下,希望对大家有些帮助。
机器学习基本上都是问两个方向:1数据结构 2算法
新浪 小米 美团 凤凰网 京东金融 京东商城 宜信 融360 小红书 摩拜
小米 美团
1 计算卷积参数数目
http://f.dataguru.cn/thread-637971-1-1.html
2 画卷积网络
主要包括五层,第一层是embeddinglayer,第二层是convolutional layer,第三层是max-pooling layer,第四层是fully connected layer,最后一层是softmax layer.接下来依次介绍相关代码实现。
http://f.dataguru.cn/thread-637971-1-1.html
3 ROC曲线含义
横坐标为假正率,纵坐标为真正率,越靠近左上角越好
http://blog.csdn.net/abcjennifer/article/details/7359370
4 AUC曲线
ROC曲线下面的面积
http://blog.csdn.net/pzy20062141/article/details/48711355
5 说一个其他的机器学习算法
6 为什么会出现过拟合和欠拟合,怎么解决
过拟合:噪音和随机波动也被当成概念被模型学习了。剪枝、重新洗数据、正则化等
欠拟合:继续学习或更换机器学习方法,添加新的特诊、减少正则化
http://www.cnblogs.com/nxld/p/6058782.html
http://blog.csdn.net/willduan1/article/details/53070777
7 对正负样本不平衡的样本要怎么处理
上采样、下采样、代价敏感、扩散正样本
10算是均匀的话,可以将多数类分割成为1000份。然后将每一份跟少数类的样本组合进行训练得到分类器。而后将这1000个分类器用assemble的方法组合位一个分类器
https://www.nowcoder.com/questionTerminal/f0edfb5a59a84f10bf57af0548e3ec02?toCommentId=78036
8说说自己对于大数据的理解
大数据与数据分析、挖掘而今所说的大数据,本质上还是数据挖掘,对已有的数据进行分析、挖掘,统计分析出已有数据的特征,或者找到已有数据的运行规律,预测未来的状态。这与传统的数据挖掘的目的本无二质。
1)技术基础、处理手段不一样
大数据需要处理海量异构的数据,需要新的技术和处理手段才能凑效,云存储+分布式处理是解决问题的灵丹妙药。常用的hadoop+python使其落地生根。而以前尽管有大量数据的存在,但没有这些处理方法。处理稍微多一点的数据就要“挖空心思”搞算法优化。(2)全数据对象
2)全数据对象
大数据处理的是全数据对象,不需要像传统处理方法那样的,数据一大,就要想到“抽样”,减少“工作量”,不然计算机“处理不过来”。
3)对待数据、算法的侧重不一样
大数据中,算法当然也重要,但是不像传统数据挖掘方法中那么重要了。当数据到了一定的量,简单的算法可能比“小数据+复杂算法”的效果更好(这一点,微软的科学家已经证明了,见涛哥翻译的《大数据时代》),所以大数据比传统数据分析跟依赖于数据。
4)大数据的“人性化”
央视二台,在大数据时代的那一集节目中,涛哥讲了:大数据时代人人处于第三只眼中,大数据有其风险,怎么办?答曰:两手抓,一手抓“鼓励民众、企业积极参与大数据,提供数据基础”,一手抓“严惩数据使用不道德者”。大数据的专家们已经看到了大数据在带来“精准定位”的同时带来的不良社会影响。
http://blog.sciencenet.cn/blog-2440749-909350.html
4个“V”(量Volume,多样Variety,价值Value,速Velocity)
https://www.zhihu.com/question/23090958
9 数据量大要如何借助分布式系统做
对系统的输入数据进行分解并分布到不同的节点的方式就是数据的分布方式,通常用下面的方法:
a)哈希方式
哈希方式是最常见的数据分布方式,其方法是按照数据的某一特征计算哈希值,并将哈希值与机器中的机器建立映射关系,从而将不同哈希值的数据分布到不同的机器上。所谓数据特征可以是key-value 系统中的 key,也可以是其他与应用业务逻辑相关的值。
b) 按数据范围分布
按数据范围分布是另一个常见的数据分布式,将数据按特征值的值域范围划分为不同的区间,使得集群中每台(组)服务器处理不同区间的数据。
c)按数据量分布
按数据量分布数据与具体的数据特征无关,而是将数据视为一个顺序增长的文件,并将这个文件按照某一较为固定的大小划分为若干数据块(chunk),不同的数据块分布到不同的服务器上。
d)一致性哈希
使用一个哈希函数计算数据或数据特征的哈希值,令该哈希函数的输出值域为一个封闭的环,即哈希函数输出的最大值是最小值的前序。将节点随机分布到这个环上,每个节点负责处理从自己开始顺时针至下一个节点的全部哈希值域上的数据。
http://bbs.pinggu.org/thread-4468236-1-1.html
10 word2vec,我说里面用概率来做的,他就让我写里面的条件概率公式
http://blog.csdn.net/itplus/article/details/37969519
11 一个匹配括号的,用递归,不让用栈
intmatch(char *str, int state)
{
if(*str == '\0')
{
if(state == 0)
return OK;
else
return ERROR;
}
if(state<0)
return ERROR;
if(*str == '(')
return match(str+1, state+1);
else if(*str == ')')
return match(str+1, state-1);
else
return match(str+1, state); 4009908888
}
12 一个一维数组元素先增后降求最大值
http://blog.csdn.net/feliciafay/article/details/20586551
13 给一个有大量重复元素的数组排序
考虑空间:快排
考虑时间:基数/桶排序
14 我的模型:最后一层用的是softmax
http://www.jianshu.com/p/dcf5a0f63597
15 对逻辑回归的理解
http://www.jianshu.com/p/19ca7eb549a7
16 KNN里面具体咋做的
https://www.zhihu.com/question/19887252
https://my.oschina.net/u/1412321/blog/194174
17.几种模型,svm lr gbdt em 的原理和推导
18 rf gbdt的区别;gbdt xgboost的区别
新浪:
19 决策树处理连连续值的问题
http://www.cnblogs.com/bourneli/archive/2013/03/11/2954060.html
决策树分为分类树和回归树两种,分类树对离散变量做决策树,回归树对连续变量做决策树。
20 特征选择的方法
http://blog.csdn.net/google19890102/article/details/40019271
Filter方法
Chi-squaredtest(卡方检验)
informationgain(信息增益),
correlationcoefficient scores(相关系数)
Wrapper方法
Embedded方法
21 Kmeans的原理,优缺点以及改进
1)从N个数据对象中挑选出k个质心。
2)计算N个数据对象距离不同质心的距离,并将N个数据对象划分到与之距离最小的质心,形成新的k个聚类。
3)重新计算步骤2中获取新的k个聚类的质心,计算方法为求取聚类中所有数据对象的均值。
4)重复2-3步骤,直到每个聚类的数据成员不再发生变化。
http://blog.csdn.net/vernice/article/details/47329341
优点:
1) 计算机时间短,速度快
2) 容易解释
3) 聚类效果还不错
https://www.zhihu.com/question/31296149
缺点:
1) 对于离群点和孤立点敏感; 去掉离异点
2) k值选择; 每次合并距离最近的点
3) 初始聚类中心的选择;
4) 只能发现球状簇。
http://blog.csdn.net/u010536377/article/details/50884416
List K_means(DataSet S, int k)
{
Listnew_centrio_list = Select_init_centriole(S, k); // 选取初始的k个中心点
do{
centrio_list= new_centrio_list;
foreach(s in S) {
best_centri->distance= MAX;
best_centri->class= Undefine;
foreach(centri in centrio_list) {
doubledistance = Calculate_distance(s, centri);
if(best_centri->distance> distance) {
best_centri->distance= distance;
best_centri->class= centri->tag;
}
}
category_list[best_centri->class].Add(s);
}
new_centrio_list= Relocate_centriole(category_list, centrio_list, k);
}while(!Is_centrio_stable(new_centrio_list, centrio_list));
returncategory_list;
}
http://blog.csdn.net/tangbin330/article/details/8677130
22常见的分类模型,SVM 决策树 贝叶斯等的优缺点,适用场景以及如何选型
https://www.zhihu.com/question/26726794
23 SVM中为什么引入拉格朗日的优化方法
24 海量的item文本相似度的优化方法
(1)基于最长公共子串
(2)基于最长公共子序列
(3)基于最少编辑距离
(4)基于海明距离
(5)基于余弦值
(6)基于Jaccard相似度
25 梯度下降有优缺点
靠近极小值时收敛速度减慢。
直线搜索时可能会产生一些问题。
可能会“之字形”地下降。
26 em和kemeans的关系
调整中心点或者给x赋予哪个类的过程的实质就是:EM算法。
http://blog.csdn.net/xia316104/article/details/50937223
http://blog.csdn.net/xia316104/article/details/50942362
27 L1和L2的区别以及如何解决L1求导困难
L1范数是指向量中各个元素绝对值之和,用于特征选择;
L2范数 是指向量各元素的平方和然后求平方根,用于 防止过拟合,提升模型的泛化能力
L1与L2区别:使用L1可以得到稀疏的权值;用L2可以得到平滑的权值
28 如何尽可能少的样本训练模型同时又保证模型的性能
留出法,交叉验证法和自助法
1)对于数据量充足的时候,通常采用留出法或者k折交叉验证法来进行训练/测试集的划分;
对于数据集小且难以有效划分训练/测试集时使用自助法;
3)对于数据集小且可有效划分的时候最好使用留一法来进行划分,因为这种方法最为准确
http://lib.csdn.net/article/machinelearning/37031
29解释word2vec的原理以及哈夫曼树的改进
30 在模型的训练迭代中,怎么评价效果
31 有几个G的文本,每行记录了访问ip的log,如何快速统计ip出现最高的10个ip,如果只用Linux指令又该如何解决
32 一个绳子烧完需要一个小时,假设所有的绳子的材质都不一样,也不均匀,怎么取出1小时15分钟
用一根绳子2头点燃,同时另取一根绳子点燃
当第一根绳子燃烧完,即为半小时,这时第二根绳子的另一头点燃,并开始计时.
则从计时开始到第二根绳子燃烧完用时十五分钟.
再取一根绳子点燃,直至这根绳子燃烧完,计时结束.
则总计时开始的那刻开始到计时结束,用时1小时15分钟,可以此来计时.
33 写出hmm的状态转移代码
34 拼车软件如何定价以及如何优化的
33 100张牌,每次只能抽一张,抽过的牌会丢掉,怎么选出最大的牌
35 怎么预测雨量
36 sql语句的技巧
37.大白话理解word2vec
http://blog.csdn.net/mylove0414/article/details/61616617
38 问项目,项目中遇到的难点 ,为什么要用精确度,F1这几个测度,分别表示什么
39 项目中其他机器学习算法,比如决策树
40 数据随机化,随机洗牌数据
http://blog.csdn.net/robinjwong/article/details/18261393
http://www.cnblogs.com/tonyluis/p/5944338.html
41说一下逻辑回归的思想,sigmod函数,为什么要用这个函数
1)神经网络中的激活函数,其作用就是引入非线性。具体的非线性形式,则有多种选择。
2)sigmoid的优点在于输出范围有限,所以数据在传递的过程中不容易发散。当然也有相应的缺点,就是饱和的时候梯度太小。
3)sigmoid还有一个优点是输出范围为(0,1),所以可以用作输出层,输出表示概率。
4)求导容易
对于二分类问题,输出层是sigmoid函数。这是因为sigmoid函数可以把实数域光滑的映射到[0,1]空间。函数值恰好可以解释为属于正类的概率(概率的取值范围是0~1)。另外,sigmoid函数单调递增,连续可导,导数形式非常简单,是一个比较合适的函数
几个重要的激活函数的对比:
http://blog.csdn.net/bixiwen_liu/article/details/52950311
http://blog.csdn.net/fendoubasaonian/article/details/52974608
42数据预处理:比如如何处理缺失值
去噪声、缺失值处理,打标签,归一化
1)机器学习算法的输入样本数据为结构化、数值型数据
2)对于标签型特征可以简单的使用0,1,2,3…转化为数值型(使用sklearn.preprocessing.LabelEncoder),但不太合理
3)处理标签型特征最好的方法为One-Hot编码。(使用pandas.get_dummies或sklearn.preprocessing.OneHotEncoder)
4)缺失值填充可以使用该列的总体平均数,最好可以根据更精细的特征进行推断,如头衔为Mrs与Miss的年龄缺失值应该填充不同的值
5)学会从看似无用的特征里挖掘有用的信息,如抽取Name中的头衔作为一个特征。
理解数据,多做尝试
去噪声:
(1)通过寻找数据集中与其他观测值及均值差距最大的点作为异常 (2)聚类方法检测,将类似的取值组织成“群”或“簇”,落在“簇”集合之外的值被视为离群点。在进行噪声检查后,通常采用分箱、聚类、回归、计算机检查和人工检查结合等方法“光滑”数据,去掉数据中的噪声。
缺失值处理:
删除法,根据数据处理的不同角度,删除法可分为以下4种:
(1)删除观测样本 (2)删除变量:当某个变量缺失值较多且对研究目标影响不大时,可以将整个变量整体删除 (3)使用完整原始数据分析:当数据存在较多缺失而其原始数据完整时,可以使用原始数据替代现有数据进行分析; (4)改变权重:当删除缺失数据会改变数据结构时,通过对完整数据按照不同的权重进行加工,可以降低删除数据带来的偏差。
插补法:在条件允许的情况下,找到缺失值的替代值进行插补,尽可能还原真实数据是更好的方法。常见的方法有均值插补、回归插补、二阶插补、热平台、冷平台等单一变量插补。
(1)均值法是通过计算缺失值所在变量所有非缺失观测值的均值,使用均值来代替缺失值的插补方法。 (2)均值法不能利用相关变量信息,因此会存在一定偏差,而回归模型是将需要插补变量作为因变量,其他相关变量作为自变量,通过建立回归模型预测出因变量的值对缺失变量进行插补。 (3)热平台插补是指在非缺失数据集中找到一个与缺失值所在样本相似的样本(匹配样本),利用其中的观测值对缺失值进行插补。 (4)在实际操作中,尤其当变量数量很多时,通常很难找到与需要插补样本完全相同的样本,此时可以按照某些变量将数据分层,在层中对缺失值使用均值插补,即采取冷平台插补法。
https://zhidao.baidu.com/question/1707483974540441580.html
43 对python的熟悉程度,写一个lamda表达式
http://www.cnblogs.com/alan-babyblog/p/5163408.html
44 svm投票机制 常用的物理场景
https://www.zhihu.com/question/21094489
http://www.cnblogs.com/CheeseZH/p/5265959.html //这个思想将的很棒
一对一 一对多 层次支持向量机
以后可能会问:松弛变量核函数
文本图像
45 自己模型中的向量是自己用word2vec训练的吗?word2vec的原理
沪江:
46 kmeans会出现局部最优吗
47 两个句子如何比较相似度(处理成向量,用各种距离测度)
48 如何防止过拟合
http://blog.csdn.net/heyongluoyao8/article/details/49429629
early stopping 数据集扩增正则化 Dropout
49 python中的with
京东金融:
50 SVM公式表示其主要思想
http://blog.csdn.net/qll125596718/article/details/6908480
http://blog.csdn.net/xiaowei_cqu/article/details/35993729
51 逻辑回归和线性回归的区别
http://blog.csdn.net/yunhaitianguang/article/details/43877591
52 监督学习和非监督学习区别
53 无监督学习中除了K-means,如何改进,还有什么方法,有和区别,K-means的复杂度
http://blog.csdn.net/yan456jie/article/details/52821762
http://blog.csdn.net/hwwn2009/article/details/38311389
算法复杂度:K*N*I
54 决策树防止过拟合的方法(除了减枝,还有bootstrap,DBA,貌似说的这两,没听清楚)
http://blog.sina.com.cn/s/blog_6622f5c30101bo04.html
C4.5 ID3
55 分而治之和动态规划的区别
http://blog.sina.com.cn/s/blog_928574110101i657.html
动态规划的子问题是相互有关联的,自低向上求解,
分而治之的子问题都是独立的,利用递归求解
56 常用Linux指令,如何打开和关闭一个进程
ps kill
57 深度、广度优先遍历的区别,哪个用栈哪个用队列
58 写快排,其最好和最坏情况下的时间复杂度
59讲自己项目
京东商城:问的特别深
60 激活函数的作用(引入非线性,多维提取特征),CNN什么地方用到激活函数
61 用多个卷积核的意义
一般我们都不会只用一个卷积核对输入图像进行过滤,因为一个核的参数是固定的,其提取的特征也会单一化。这就有点像是我们平时如何客观看待事物,必须要从多个角度分析事物,这样才能尽可能地避免对该事物产生偏见。我们也需要多个卷积核对输入图像进行卷积。
62 word2vec中的模型(线性模型,不是神经网络)
63 fastText比word2vec好
宜信:
64 汉语分词方法,分词工具
https://wenku.baidu.com/view/d92a3ead5fbfc77da369b12a.html
http://blog.sina.com.cn/s/blog_9be6dec10102vpy2.html
http://baike.baidu.com/link?url=ZZrdP67qyO9Tmamjkc1c4A46332PSiOqhcsb8EpBQNKeWrqMwnpgHImHUr-u-AhI_MdckpbjAhp67NoXpS5_QDtm5ey6aOmICVmvZXp6GxO_jnec_hRLLO0xLlz1n0Iw
字符匹配(机械分词) 理解法 统计法(利用相邻的词出现的概率 机器学习的方法)
Stanford 哈工大语言云 庖丁解牛分词盘古分词
65 给定很多段新闻文本,问你可以用来做什么,两个文本相似度如何求
66 word2vec里面的哈夫曼树有什么意义,哈夫曼树可以用来做什么,在其他方面的作用
http://blog.csdn.net/zhoubl668/article/details/24319529
http://blog.csdn.net/jerr__y/article/details/53158450
67 给定一段文本,如何从中提取新的命名实体,比如说专有名词,来一个库里面没有的实体名如何提取
68 word2vec训练处理的词向量,基于这个还能做其他什么
69 原假设 p值得意义 什么时候接受 什么时候拒绝
https://www.zhihu.com/question/35891708
p越小,就拒绝原假设 从t检验 卡方检验 f检验推导出来的
70 条件概率和联合概率的区别 边缘分布
条件概率:一维
边缘分布:二维
71 对机器翻译了解吗
72 动态规划、分而治之,贪心算法 回溯法有啥区别,常用的情景
http://blog.csdn.net/lcj_cjfykx/article/details/41691787
http://blog.sina.com.cn/s/blog_928574110101i657.html
73 二叉树先序遍历
74 朴素贝叶斯的公式和推导过程
75 有一个1G的大小文件,里面每一行是一个词,词的大小不超过16字节,内存限制大小是1M,返回频数最高的100个词
76 有一个百万级的字符串集合worddic,worddic中每个字符串长度为2-5个字节,对任意一个查询串,定义该query对worddic模糊匹配条件为:该query内部移除6个连续汉子后,与worddic中某个词完全匹配。例如:worddic中有“百度公司”这个字符串,query“北京百度网络技术有限公司”,该query即可通过移除6个连续字符(‘网络技术有限公司’)来匹配“百度公司”。设计一个算法,实现该功能。
77 简述CNN RNN 和LSTM的关系和区别,及其应用场景
78 过拟合产生的原因和解决方法
79常用的中文分词方式和优缺点
80如何抽取文章中出现的组织机构名称,写出具体实现方式和设计思路
81 LR和SVM的原理和异同点
http://www.cnblogs.com/zhizhan/p/5038747.html
https://www.zhihu.com/question/26768865
82 激活函数和损失函数的作用是什么,列出常用的集中激活函数和损失函数
http://blog.csdn.net/yas12345678/article/details/53993247
http://blog.csdn.net/u014595019/article/details/52562159
83 Linux系统中统计一个文件中某个字符串出现的次数
84 在mySql中user表里的name字段后添加addr列的sql语句
融360:
85特征值的选取
PCA降维
http://blog.csdn.net/xiaojidan2011/article/details/11595869
86正则化,逻辑回归中用到正则化
87损失函数
美团:
88 在一个有序数组中查找为k的数
89 在有序数组中查找两个数和为sum的数
90在一个数组中一个数出现了一次,其余数出现了三次,求出现一次的数,要求空间复杂度为O(1),时间复杂度为O(n)
91决策树,熵公式
92 vector的空间管理,resize(),reverse(),clear()
93.对map reduce原理的了解
小红书:
94 线程 进程的区别,为什么引入线程
http://blog.csdn.net/msdnwolaile/article/details/52106242
95 个性化推荐,文字,图像,视频 ,个人用户信息
96 双向链表获取元素,删除元素,插入元素;如何保证程序安全
http://blog.csdn.net/blues1021/article/details/44336835
摩拜:
97 青蛙跳台阶
98 长为n的绳子随便切割次数和长度,切分完成的每根绳子长度连续相乘,乘积最大是多少?
http://blog.csdn.net/qq_25827845/article/details/73351134
思路:首先定义函数f(n)为把长度为n的绳子剪成若干段后各段长度乘积的最大值。在剪第一刀时,我们有n-1种选择,也就是说第一段绳子的可能长度分别为1,2,3.....,n-1。因此f(n)=max(f(i)*f(n-i)),其中0
这是一个自上而下的递归公式。由于递归会有大量的不必要的重复计算。一个更好的办法是按照从下而上的顺序计算,也就是说我们先得到f(2),f(3),再得到f(4),f(5),直到得到f(n)。
当绳子的长度为2的时候,只能剪成长度为1的两段,所以f(2) = 1,当n = 3时,容易得出f(3) = 2;
99 请设计一种算法,每天从摩拜的骑行订单中随机抽取一份样本(包含k条订单),但分配的存储空间最多只能保存k条订单记录,每天的订单量n无法提前确定且异常巨大。
http://www.cnblogs.com/hrlnw/archive/2012/11/27/2777337.html
蓄水池抽样法:k/i
100 一个硬币头(H)朝上的概率是p,求抛掷这个硬币最后两个结果是HT的期望值。
101 SVM
102 模型中样本不平衡的问题
美团外卖:
103 ntlk standford里面的算法
104 Word2vec里面的词向量怎么训练的
105 分词、依存关系里面的算法
106 二分类 多分类如何评价其分类精确度
107 dropout 正则化 如何实现防止过拟合
108 卡方检验适用范围,怎么得到p值
109 年龄 BMI 血压权值不一样如何解决
100 java里面的垃圾回收机制
101 用户画像