机器学习和数据挖掘算法面试 - workthy/interview GitHub Wiki

知乎:如何准备机器学习工程师的面试? Kaggle 机器学习竞赛冠军及优胜者的源代码汇总,截至2014

距离度量

文本相似度

文本相似性算法 Nilsimsa Hash

推荐系统

分类算法

回归

线性回归

最小二乘法

逻辑回归

CTR预估中GBDT与LR融合方案 对数线性模型之一(逻辑回归), 广义线性模型学习总结 从广义线性模型到逻辑回归 逻辑回归

朴素贝叶斯

基于实例的方法

KNN

SOM

决策树

基于核的方法

SVM

LDA

RBF

过拟合

同时在分类时,有时会遇到过拟合问题,怎么解决呢?

  1. 减少feature个数(人工定义留多少个feature、算法选取这些feature)
  2. 规格化(留下所有的feature,但对于部分feature定义其parameter非常小) Stanford Machine Learning: (3). Regularization

数据不平衡

主要的方法总结见CTR 预估正负样本 不平衡,请问怎么解决,划分为4类,深表同意

在分类中如何处理训练集中不平衡问题

基于 PU-Learning 的分类方法

不平衡数据下的机器学习方法简介

不平衡学习的方法 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矩阵并求逆的缺点,共轭梯度法不仅是解决大型线性方程组最有用的方法之一,也是解大型非线性最优化最有效的算法之一。 在各种优化算法中,共轭梯度法是非常重要的一种。其优点是所需存储量小,具有步收敛性,稳定性高,而且不需要任何外来参数

启发式方法

牛顿法是二阶收敛,梯度下降是一阶收敛,所以牛顿法就更快。如果更通俗地说的话,比如你想找一条最短的路径走到一个盆地的最底部,梯度下降法每次只从你当前所处位置选一个坡度最大的方向走一步,牛顿法在选择方向时,不仅会考虑坡度是否够大,还会考虑你走了一步之后,坡度是否会变得更大。所以,可以说牛顿法比梯度下降法看得更远一点,能更快地走到最底部。

机器学习中的最优化方法进阶 机器学习中常见的几种最优化方法

分布式实现

深入浅出PageRank算法

topN

BI系统

数据层(ETL->数据仓库)、业务层(OLAP,cube多维分析)、应用层(查询结果和报表展现)

数据仓库及数据处理:(src->ods->dw), 元数据管理、日志质量保证、日志来源追踪、任务调度、异常日志监控和预警 维度指标管理、报表配置管理、指标预警

OLAP、OLTP的介绍和比较