├── README.md └── pdf ├── IQ.md ├── compare_svm_lr.md ├── feature_selection.pdf ├── feature_selection_kaggle.pdf ├── gbdt_wepon.pdf ├── lr_pros_and_cons.md └── statistic.md /README.md: -------------------------------------------------------------------------------- 1 | :point_right: 此repo主要是为了整理机器学习面试相关知识点的有用链接 2 | (注:目前不打算将一些基础算法的内容加入这个repo里,比如LR、SVM算法在《统计学习方法》里已经得到了很好的解释,面试时可能考到的手推公式在书里已经写的很好了,所以推荐直接看书即可。) 3 | 4 | ### 一、特征工程 5 | 6 | #### (一)特征预处理 7 | - [标准化、归一化、异常特征清洗、不平衡数据](https://www.cnblogs.com/pinard/p/9093890.html) 8 | - [不平衡数据的处理方法](https://blog.csdn.net/zhang15953709913/article/details/84635540) 9 | 10 | #### (二)特征表达 11 | - [缺失值、特殊特征(eg.时间)、离散特征、连续特征](https://www.cnblogs.com/pinard/p/9061549.html) 12 | - [连续特征离散化的好处](http://note.youdao.com/noteshare?id=024fa3dbabf4b5a07eb72c8021e60f62) 13 | - [什么样的模型对缺失值更敏感?](https://blog.csdn.net/zhang15953709913/article/details/88717220) 14 | 15 | #### (三)特征选择 16 | - [过滤法、包装法、嵌入法](https://www.cnblogs.com/pinard/p/9032759.html) 17 | - [Kaggle中的代码实战](https://www.kaggle.com/willkoehrsen/introduction-to-feature-selection) 18 | 19 | ### 二、算法基础 20 | #### (一)评价指标 21 | - [PR曲线和F1 & ROC曲线和AUC](http://note.youdao.com/noteshare?id=13d31b4a7dc317b3d4abd18bf42a74df) 22 | - [AUC & GAUC](https://zhuanlan.zhihu.com/p/84350940) 23 | 24 | #### (二)正则项 25 | - [正则化与数据先验分布的关系](http://note.youdao.com/noteshare?id=2851b97199bcdc174001d72b1bec0372) 26 | - [L1在0点处不可导怎么办?](http://www.cnblogs.com/pinard/p/6018889.html)可采用坐标轴下降、最小角回归法 27 | - [L1为什么比L2的解更稀疏](https://zhuanlan.zhihu.com/p/74874291) 28 | 29 | #### (三)损失函数 30 | - [常见损失函数](https://zhuanlan.zhihu.com/p/58883095) 31 | - [常见损失函数2](https://zhuanlan.zhihu.com/p/77686118) 32 | 33 | #### (四)模型训练 34 | - [经验误差与泛化误差、偏差与方差、欠拟合与过拟合、交叉验证](http://note.youdao.com/noteshare?id=b629383adb3b09eb31b754c337f690b5) 35 | - [参数初始化为什么不能全零](https://cloud.tencent.com/developer/article/1535198) 36 | - [深度学习参数初始化 Lecunn、Xavier、He初始化](https://cloud.tencent.com/developer/article/1542736) 37 | - [dropout]() 38 | - [Batch Normalization](https://cloud.tencent.com/developer/article/1551518) 39 | - [dropout和BN在训练&预测时有什么不同](https://zhuanlan.zhihu.com/p/61725100) 40 | - [Layer Normalization](https://zhuanlan.zhihu.com/p/113233908) 41 | - [Transformer为什么用LN不用BN(LN和BN两者分别关注什么)](https://www.zhihu.com/question/395811291/answer/2141681320) 42 | - [ResNet](https://cloud.tencent.com/developer/article/1591484) 43 | 44 | #### (五)优化算法 45 | - [梯度下降法、牛顿法和拟牛顿法](https://zhuanlan.zhihu.com/p/37524275) 46 | - [深度学习优化算法SGD、Momentum、Adagrad等](https://zhuanlan.zhihu.com/p/22252270) 47 | - [最大似然估计 和 最大后验估计](https://zhuanlan.zhihu.com/p/61905474) 48 | - [最小二乘法 和 最大似然估计的对比联系](https://blog.csdn.net/zhang15953709913/article/details/88716699) 49 | - [最大似然估计 和 EM](https://blog.csdn.net/zouxy09/article/details/8537620) 50 | - [浅谈最优化问题的KKT条件](https://zhuanlan.zhihu.com/p/26514613) 51 | 52 | #### (六)其他知识点 53 | - [先验概率 & 后验概率](https://zhuanlan.zhihu.com/p/38567891) 54 | - [MLE最大似然估计 & MAP最大后验估计](https://zhuanlan.zhihu.com/p/32480810) 55 | - [判别模型 vs 生成模型](https://www.zhihu.com/question/20446337) 56 | - [参数模型 vs 非参数模型](https://zhuanlan.zhihu.com/p/26012348) 57 | - [参数估计 最大似然估计与贝叶斯估计](https://blog.csdn.net/bitcarmanlee/article/details/52201858) 58 | - [交叉熵](https://colah.github.io/posts/2015-09-Visual-Information/) 59 | - [交叉熵 等价 KL散度 等价 MLE最大似然估计](https://zhuanlan.zhihu.com/p/346518942) 60 | - [向量间距离度量方式](http://note.youdao.com/noteshare?id=ffba716f9f94f1cf3fac48fca300c198) 61 | - [余弦距离和欧氏距离的转换](https://www.zhihu.com/question/19640394/answer/207795500) 62 | 63 | ### 三、机器学习算法 64 | 1. 线性回归、逻辑回归、SVM 65 | - [LR优缺点](https://github.com/wangyuGithub01/Machine_Learning_Notes/blob/master/pdf/lr_pros_and_cons.md) 66 | - [SVM、logistic regression、linear regression对比](https://github.com/wangyuGithub01/Machine_Learning_Notes/blob/master/pdf/compare_svm_lr.md) 67 | - [KNN vs K-Means](https://zhuanlan.zhihu.com/p/31580379) 68 | - [LR和最大熵模型的关系, LR的并行化](https://blog.csdn.net/dp_BUPT/article/details/50568392) 69 | - [为什么LR要用对数似然,而不是平方损失?](https://blog.csdn.net/zhang15953709913/article/details/88717326) 70 | - [似然函数](https://zh.wikipedia.org/wiki/%E4%BC%BC%E7%84%B6%E5%87%BD%E6%95%B0) 71 | 2. 树模型 72 | - [逻辑回归与决策树在分类上的区别](https://blog.csdn.net/zhang15953709913/article/details/84841988) 73 | - [回归树、提升树、GBDT](https://www.jianshu.com/p/005a4e6ac775) 74 | - [GBDT、XGBOOST、LightGBM讲解(强烈推荐看一下)](https://github.com/wangyuGithub01/Machine_Learning_Notes/blob/master/pdf/gbdt_wepon.pdf) 75 | - [XGBOOST具体例子一步步推导,包括缺失值怎么处理(很细值得看)](https://www.jianshu.com/p/ac1c12f3fba1) [(-> 这个链接包含前面文章内容,更全的总结](https://zhuanlan.zhihu.com/p/92837676) 76 | - [随机森林 GBDT XGBOOST LightGBM 比较](http://note.youdao.com/noteshare?id=65790e27fd5737155c31af2c05df8985) 77 | - [树分裂:信息增益、信息增益率、基尼系数](https://zhuanlan.zhihu.com/p/245617910) 78 | 79 | 3. 其他 80 | - [各种机器学习算法的应用场景](https://www.zhihu.com/question/26726794) 81 | 82 | ### 四、NLP相关 83 | - word2vec [文章1](https://www.cnblogs.com/pinard/p/7160330.html)[文章2](https://www.cnblogs.com/pinard/p/7243513.html) [文章3](https://www.cnblogs.com/pinard/p/7249903.html) 84 | - [LSTM](https://zhuanlan.zhihu.com/p/34203833) 85 | - [LSTM为什么用tanh](https://www.zhihu.com/question/46197687/answer/895834510) 86 | - [fasttext](https://zhuanlan.zhihu.com/p/32965521) 87 | - [Transformer、self-attention](https://zhuanlan.zhihu.com/p/54356280) 88 | - [Transformer图解](https://zhuanlan.zhihu.com/p/338817680) 89 | - [encode-decode attention和transformer self-attention对比](https://zhuanlan.zhihu.com/p/53682800) 90 | - [Transformer中的positional encoding](https://www.zhihu.com/question/347678607/answer/864217252) 91 | - [Bert](https://fancyerii.github.io/2019/03/05/bert-prerequisites/) 零基础入门,prerequisites很全 92 | - [XLNet](https://zhuanlan.zhihu.com/p/70257427) 93 | - [nlp中的词向量对比:word2vec/glove/fastText/elmo/GPT/bert](https://zhuanlan.zhihu.com/p/56382372) 94 | - [NLP/AI面试全记录](https://zhuanlan.zhihu.com/p/57153934) 95 | 96 | ### 五、推荐系统 & 计算广告 相关 97 | - [LR & FTRL](https://zhuanlan.zhihu.com/p/55135954) 98 | - [FM算法](https://zhuanlan.zhihu.com/p/37963267):讲的蛮细的 99 | - [FM算法结合推荐系统的讲解](https://zhuanlan.zhihu.com/p/58160982) 100 | - [DSSM模型](https://zhuanlan.zhihu.com/p/335112207) 101 | - [DSSM模型的损失函数(顺带讲了point-wise, list-wise, pair-wise损失函数)](https://zhuanlan.zhihu.com/p/322065156) 102 | - [在线最优化求解 Online Optimization](https://github.com/wzhe06/Ad-papers/blob/master/Optimization%20Method/%E5%9C%A8%E7%BA%BF%E6%9C%80%E4%BC%98%E5%8C%96%E6%B1%82%E8%A7%A3%28Online%20Optimization%29-%E5%86%AF%E6%89%AC.pdf) 103 | 104 | ### 六、推荐书籍/笔记/代码实现 105 | - [统计学习方法](https://github.com/wangyuGithub01/E-book/blob/master/%E7%BB%9F%E8%AE%A1%E5%AD%A6%E4%B9%A0%E6%96%B9%E6%B3%95(%E6%9D%8E%E8%88%AA).pdf) (注意这个pdf是第一版,其中的勘误可在[这里](https://github.com/wangyuGithub01/E-book/blob/master/%E7%BB%9F%E8%AE%A1%E5%AD%A6%E4%B9%A0%E6%96%B9%E6%B3%95%EF%BC%88%E5%8B%98%E8%AF%AF%EF%BC%89.pdf)查看)([代码实现及ppt](https://github.com/fengdu78/lihang-code)) 106 | - [西瓜书的公式推导细节解析](https://datawhalechina.github.io/pumpkin-book/#/) 107 | - [deeplearning.ai深度学习课程的中文笔记](https://github.com/fengdu78/deeplearning_ai_books) 108 | - [机器学习训练秘籍 (Andrew NG)](https://github.com/AcceptedDoge/machine-learning-yearning-cn) 109 | - [推荐系统实战](https://github.com/wangyuGithub01/E-book) 110 | 111 | ### 七、推荐专栏 112 | - [刘建平Pinard](https://www.cnblogs.com/pinard/):很多高质量文章讲解基础的知识和算法 113 | - [华校专](http://huaxiaozhuan.com/):基础算法讲解,多而全(其实还没怎么看 114 | - [王喆的机器学习专栏](https://zhuanlan.zhihu.com/wangzhenotes):结合论文+工业界的推荐系统应用,讲的很清晰 115 | - [荐道馆](https://www.zhihu.com/column/learningdeep):讲推荐相关,文章写的比较透 116 | - [美团技术团队](https://tech.meituan.com/tags/%E7%AE%97%E6%B3%95.html):美团的技术博客,新技术与实际应用相结合 117 | - [深度学习前沿笔记](https://zhuanlan.zhihu.com/c_188941548):NLP相关较多,预训练技术讲解的多 118 | - [计算广告小觑](https://blog.csdn.net/breada/article/details/50572914) 119 | - [计算广告论文、学习资料、业界分享](https://github.com/wzhe06/Ad-papers) 120 | 121 | ### 八、面试问题汇总 122 | - [牛客网面经总结](https://www.nowcoder.com/discuss/165930) 123 | 124 | ### 九、其他面试常考 125 | - [海量数据判重](https://www.nowcoder.com/discuss/153978) 126 | - [常考智力题/逻辑题](https://github.com/wangyuGithub01/Machine_Learning_Resources/blob/master/pdf/IQ.md) 127 | - [常考概率题](https://github.com/wangyuGithub01/Machine_Learning_Resources/blob/master/pdf/statistic.md) 128 | 129 | ### 十、C++相关 130 | - [STL详解及常见面试题](https://blog.csdn.net/daaikuaichuan/article/details/80717222) 131 | 132 | ### 工作之后工程实践相关 133 | 134 | - [基于PQ量化的近似近邻搜索 (ANN) ](http://xtf615.com/2020/08/01/EBR/) 135 | - [ANN召回算法之IVFPQ(跟上面的差不多,这篇图第一张画的PQ图更清晰)](https://zhuanlan.zhihu.com/p/378725270) 136 | -------------------------------------------------------------------------------- /pdf/IQ.md: -------------------------------------------------------------------------------- 1 | ### 智力题/逻辑题 2 | - [赛马次数、绳子计时、九球称重、药丸称重、得到4升水、扔两次鸡蛋](https://www.nowcoder.com/discuss/150434) 3 | - [帽子问题](https://www.nowcoder.com/questionTerminal/8b91f50dc6ae46ed8092ec0551fdd5d0) 4 | - [圆上取三点组成锐角三角形的概率](https://www.bilibili.com/video/av17275211?share_medium=android&share_source=copy_link&bbid=598E7E58-6FAE-481D-AFF7-F0EB1D7E920425756infoc&ts=1521815869538) 5 | -------------------------------------------------------------------------------- /pdf/compare_svm_lr.md: -------------------------------------------------------------------------------- 1 | ## SVM、logistic regression、linear regression对比 2 | 3 | - 线性回归 vs LR vs SVM: 4 | 线性回归做分类因为考虑了所有样本点到分类决策面的距离,所以在两类数据分布不均匀的时候将导致误差非常大; 5 | LR和SVM克服了这个缺点,其中LR将所有数据采用sigmod函数进行了非线性映射,使得远离分类决策面的数据作用减弱; 6 | SVM直接去掉了远离分类决策面的数据,只考虑支持向量的影响。 7 | 8 | - 有异常点的时候,LR vs SVM: 9 | 对于这两种算法来说,在线性分类情况下,如果异常点较多无法剔除的话,LR中每个样本都是有贡献的, 10 | 最大似然后会自动压制异常的贡献;SVM+软间隔对异常比较敏感,因为其训练只需要支持向量,有效样本本来就不高,一旦被干扰,预测结果难以预料。 11 | 12 | - LR vs SVM 详细对比: 13 | 链接:https://zhuanlan.zhihu.com/p/30419036 14 | 15 | - 联系: \ 16 | 1、LR和SVM都可以处理分类问题,且一般都用于处理线性二分类问题(在改进的情况下可以处理多分类问题) \ 17 | 2、两个方法都可以增加不同的正则化项,如l1、l2等等。所以在很多实验中,两种算法的结果是很接近的。\ 18 | 3、LR和SVM都可以用来做非线性分类,只要加核函数就好。\ 19 | 4、LR和SVM都是线性模型,当然这里我们不要考虑核函数\ 20 | 5、都属于判别模型 21 | - 区别:\ 22 | 1、LR是参数模型,SVM是非参数模型。 \ 23 | 2、从目标函数来看,区别在于逻辑回归采用的是logistical loss,SVM采用的是hinge loss,这两个损失函数的目的都是增加对分类影响较大的数据点的权重,减少与分类关系较小的数据点的权重。 \ 24 | 3、逻辑回归相对来说模型更简单,好理解,特别是大规模线性分类时比较方便。而SVM的理解和优化相对来说复杂一些,SVM转化为对偶问题后,分类只需要计算与少数几个支持向量的距离,这个在进行复杂核函数计算时优势很明显,能够大大简化模型和计算。\ 25 | 4、SVM不直接依赖数据分布,而LR则依赖,因为SVM只与支持向量那几个点有关系,而LR和所有点都有关系。\ 26 | 5、SVM依赖penalty系数,实验中需要做CV \ 27 | 6、SVM本身是结构风险最小化模型,而LR是经验风险最小化模型 28 | 29 | - 另外怎么选模型:\ 30 | 在Andrew NG的课里讲到过: 31 | 1. 如果Feature的数量很大,跟样本数量差不多,这时候选用LR或者是Linear Kernel的SVM 32 | 2. 如果Feature的数量比较小,样本数量一般,不算大也不算小,选用SVM+Gaussian Kernel 33 | 3. 如果Feature的数量比较小,而样本数量很多,需要手工添加一些feature变成第一种情况 34 | 35 | -------------------------------------------------------------------------------- /pdf/feature_selection.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wangyuGithub01/Machine_Learning_Resources/b9a65f73777b0c8fed45d163d38876e2024884db/pdf/feature_selection.pdf -------------------------------------------------------------------------------- /pdf/feature_selection_kaggle.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wangyuGithub01/Machine_Learning_Resources/b9a65f73777b0c8fed45d163d38876e2024884db/pdf/feature_selection_kaggle.pdf -------------------------------------------------------------------------------- /pdf/gbdt_wepon.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wangyuGithub01/Machine_Learning_Resources/b9a65f73777b0c8fed45d163d38876e2024884db/pdf/gbdt_wepon.pdf -------------------------------------------------------------------------------- /pdf/lr_pros_and_cons.md: -------------------------------------------------------------------------------- 1 | LR是解决工业规模问题最流行的算法。在工业应用上,如果需要分类的数据拥有很多有意义的特征,每个特征都对最后的分类结果有或多或少的影响,那么最简单最有效的办法就是将这些特征线性加权,一起参与到决策过程中。比如预测广告的点击率,从原始数据集中筛选出符合某种要求的有用的子数据集等等。 2 | 3 | ### 优点: 4 | 5 | - 适合需要得到一个分类概率的场景。相比于linear regression而言,线性回归做分类因为考虑了所有样本点到分类决策面的距离,所以在两类数据分布不均匀的时候将导致误差非常大;LR和SVM克服了这个缺点,其中LR将所有数据采用sigmod函数进行了非线性映射,使得远离分类决策面的数据作用减弱;SVM直接去掉了远离分类决策面的数据,只考虑支持向量的影响。 6 | 7 | - 计算代价不高,容易理解实现。LR在时间和内存需求上相当高效。它可以应用于分布式数据,并且还有在线算法实现,用较少的资源处理大型数据。 8 | 9 | - LR对于数据中小噪声的鲁棒性很好,并且不会受到轻微的多重共线性的特别影响。(严重的多重共线性则可以使用逻辑回归结合L2正则化来解决,但是若要得到一个简约模型,L2正则化并不是最好的选择,因为它建立的模型涵盖了全部的特征。) 10 | 11 | ### 缺点: 12 | - 容易欠拟合,分类精度不高 13 | - 数据特征有缺失或者特征空间很大时表现效果并不好。 14 | -------------------------------------------------------------------------------- /pdf/statistic.md: -------------------------------------------------------------------------------- 1 | ### 常考概率题 2 | 3 | - [蓄水池抽样(数据流中随机采样)](https://www.cnblogs.com/snowInPluto/p/5996269.html) 4 | - [等概率无重复的从n个数中选取m个数](https://blog.csdn.net/yusiguyuan/article/details/42607681) 5 | - [两个小孩,已知其中一个为女,求另一个也是女的概率?](https://www.zhihu.com/question/31140434) 6 | - [rand(5)生成rand(7)](https://blog.csdn.net/u010025211/article/details/49668017) 7 | - [一个骰子,每个面至少被投出一次需要投多少次?](https://www.zhihu.com/question/40320381) 8 | - [13个人生日都不是同一天的概率]() 9 | - [甲乙轮流抛硬币,正面胜,先抛的人优势多大?](https://www.zhihu.com/question/290055193) 10 | - 抛2k+1次硬币,问正面次数比背面多的概率是多大 11 | 12 | 假设正反面概率是1/2,那么抛2k+1次硬币就是一个伯努利分布(2k+1,1/2) 13 | 求正面比反面次数多的概率为P. 14 | P=(1/2)^n*{C(2k+1,2k+1)+C(2k+1,2k)+C(2k+1,2k-1)+...C(2k+1,k+1)}=(1/2)^n*{C(2k+1,0)+C(2k+1,1)+..C(2k+1,k)}=(1/2)^n*(1/2)*{C(2k+1,0)+.....C(2k+1,2k+1)} 15 | 其中组合公式求和为2^n,所以上式为: 16 | P=(1/2)^n*(1/2)*(2^n)=1/2 17 | 18 | 19 | --------------------------------------------------------------------------------