机器学习和数据挖掘算法面试 - workthy/interview GitHub Wiki
知乎:如何准备机器学习工程师的面试? Kaggle 机器学习竞赛冠军及优胜者的源代码汇总,截至2014
距离度量
文本相似度
推荐系统
分类算法
回归
线性回归
最小二乘法
逻辑回归
CTR预估中GBDT与LR融合方案 对数线性模型之一(逻辑回归), 广义线性模型学习总结 从广义线性模型到逻辑回归 逻辑回归
朴素贝叶斯
基于实例的方法
KNN
SOM
决策树
基于核的方法
SVM
LDA
RBF
过拟合
同时在分类时,有时会遇到过拟合问题,怎么解决呢?
- 减少feature个数(人工定义留多少个feature、算法选取这些feature)
- 规格化(留下所有的feature,但对于部分feature定义其parameter非常小) Stanford Machine Learning: (3). Regularization
数据不平衡
主要的方法总结见CTR 预估正负样本 不平衡,请问怎么解决,划分为4类,深表同意
不平衡学习的方法 Learning from Imbalanced Data
最好的两篇文章 解决真实世界问题:如何在不平衡类上使用机器学习? 从重采样到数据合成:如何处理机器学习中的不平衡分类问题?
常见问题
逻辑回归和朴素贝叶斯的联系与区别 生成式和判别式分类器:朴素贝叶斯与逻辑回归 朴素贝叶斯 VS 逻辑回归 区别
(1) Naive Bayes是一个生成模型,在计算P(y|x)之前,先要从训练数据中计算P(x|y)和P(y)的概率,从而利用贝叶斯公式计算P(y|x)。 Logistic Regression是一个判别模型,它通过在训练数据集上最大化判别函数P(y|x)学习得到,不需要知道P(x|y)和P(y)。 (2) Naive Bayes是建立在条件独立假设基础之上的,设特征X含有n个特征属性(X1,X2,...Xn),那么在给定Y的情况下,X1,X2,...Xn是条件独立的。 (3) 当数据集比较小的时候,应该选用Naive Bayes,为了能够取得很好的效果,数据的需求量为O(log n)。 当数据集比较大的时候,应该选用Logistic Regression,为了能够取得很好的效果,数据的需求量为O( n)
聚类算法
EM(期望最大化)
从最大似然到EM算法浅解 数据挖掘十大算法----EM算法(最大期望算法)
K-Means
生成模型与判别模型
最优化算法
牛顿法及拟牛顿法
牛顿法的优缺点总结:优点:二阶收敛,收敛速度快;缺点:牛顿法是一种迭代算法,每一步都需要求解目标函数的Hessian矩阵的逆矩阵,计算比较复杂。拟牛顿法的本质思想是改善牛顿法每次需要求解复杂的Hessian矩阵的逆矩阵的缺陷,它使用正定矩阵来近似Hessian矩阵的逆,从而简化了运算的复杂度。
- BFGS & L-BFGS
梯度下降法
- 随机梯度下降SGD (stochastic gradient descent)
- 批量梯度下降法
共轭梯度法Conjugate gradient
共轭梯度法是介于最速下降法与牛顿法之间的一个方法,它仅需利用一阶导数信息,但克服了最速下降法收敛慢的缺点,又避免了牛顿法需要存储和计算Hesse矩阵并求逆的缺点,共轭梯度法不仅是解决大型线性方程组最有用的方法之一,也是解大型非线性最优化最有效的算法之一。 在各种优化算法中,共轭梯度法是非常重要的一种。其优点是所需存储量小,具有步收敛性,稳定性高,而且不需要任何外来参数
启发式方法
牛顿法是二阶收敛,梯度下降是一阶收敛,所以牛顿法就更快。如果更通俗地说的话,比如你想找一条最短的路径走到一个盆地的最底部,梯度下降法每次只从你当前所处位置选一个坡度最大的方向走一步,牛顿法在选择方向时,不仅会考虑坡度是否够大,还会考虑你走了一步之后,坡度是否会变得更大。所以,可以说牛顿法比梯度下降法看得更远一点,能更快地走到最底部。
分布式实现
topN
BI系统
数据层(ETL->数据仓库)、业务层(OLAP,cube多维分析)、应用层(查询结果和报表展现)
数据仓库及数据处理:(src->ods->dw), 元数据管理、日志质量保证、日志来源追踪、任务调度、异常日志监控和预警 维度指标管理、报表配置管理、指标预警