1.基本算法

·KNN(K-nearest neighbors): a non-parametric method for classification/regression 完全跟着数据走,无数学模型可言,很容易解释的模型。 适用于:需要向用户解释原因的推荐算法。

·贝叶斯:根据条件概率计算待判断点的类型。适用于:1.垃圾邮件过滤器;2.容易解释、不同维度间相关性较小的情况;3.可高效处理高维数据,但效果可能不是很好。

·决策树:沿着特征做切分。通过观察树的上层结构,能对分类器的核心思路有直观感受。 适用于:希望更好理解数据时。 不适用于:受限于简单性,在垃圾邮件躲避检测中过于死板。

·随机森林:选取不同特征和样本,生成大量决策树,综合这些决策树。是一种集成算法,现实分析中被大量使用。 适用于:1.数据维度相对低(几十维),准确性要求较高时,因为不需要很多参数调整;2.不知用什么方法时,可以先试一下随机森林。

·SVM:找分界面,使两边距离分界面尽量远,利用kernel,可以使分界面变成曲面。 适用于:与随机森林一样,可以拿到数据先试试。

·逻辑回归(logistic regression): 找到合适参数,使函数值与样本值最接近。如linear regression f(x)=ax+b LR拟合的不是线性函数,而是概率学中的函数。F(x)值指的是:样本属于这个类的概率。 适用于:它本质上是线性分类器,处理不好特征之间的相关的情况。虽效果一般,却胜在模型清晰,概率经得住推敲,是理解数据的好工具。

LR和SVM的区别:看损失函数(目的:增加对分类影响较大的数据权重,减少与分类关系较小的数据点的权重)。
SVM:只考虑和分类最相关的少数点(support vector),考虑局部。损失函数为:

LR: 通过非线性映射,大大减小了离分类平面较远点的权重,相对提高与分类最相关的数据点的权重,考虑全局。损失函数为:
,其中

·判别分析(Discriminant Analysis):典型例子是LDA(linear discriminant analysis)高维->低维,投射标准是让同类样本尽量靠近,不同类远离。 适用于:需要降维时,但分类准确性不高。它假定样本是正态分布的,同心圆数据就不要试了。

·神经网络(Neural Network):如果input和output直接连接,则与LR一样。但通过大量中间层,就能捕捉很多输入特征之间的关系。其准确率依赖于庞大的训练集。 适用于:数据量庞大,参数之间存在内在联系时;不止可以作为分类器,还能用来生成数据,用来做降维。

·Hidden Markov Model:基于序列的预测方法。通过上一个(or几个)状态预测下一个状态。之所以叫“隐”Markov,因为它的没定足状态本身我们看不到,只能根据状态生成的结果序列来学习可能的状态。 适用于:序列的预测、生成序列

2.优化模型的方法

·Bagging: 用“有放回”的抽样法抽取n个样本,进行k轮抽取,得到k个训练集,得到k个模型。分类问题:投票方式;回归问题:计算模型均值(所有模型的重要性相同) 用来减少variance

·Boosting: 弱分类器->强分类器,每一轮所用的训练集不变。1. 每一轮,提高前一轮被弱分类器分错的样本的权重,减小被分对的样本的权重;2. 用加法模型将弱分类器线性组合(如Adaboost: 即提高错误率小的分类器权值,降低错误率大的分类器权值;提升树,则是通过拟合残差的方式逐步减小残差,每一步生成的模型叠加得到最终模型。它是通过forward-stagewise贪心法来sequential的最小化损失函数).用来减少bias

Bagging+决策树=随机森林
Adaboost+决策树=提升树
Gradient Boosting + 决策树 = GBDT
“贪心法:贪心算法(又称贪婪算法,Greedy algorithm)是指,在对问题求解时,总是做出在当前看来是最好的选择。也就是说,不从整体最优上加以考虑,他所做出的仅是在某种意义上的局部最优解。贪婪算法是一种对某些求最优解问题的更简单、更迅速的设计技术。用贪婪法设计算法的特点是一步一步地进行,常以当前情况为基础根据某个优化测度作最优选择,而不考虑各种可能的整体情况,它省去了为找最优解要穷尽所有可能而必须耗费的大量时间,它采用自顶向下,以迭代的方法做出相继的贪心选择,每做一次贪心选择就将所求问题简化为一个规模更小的子问题,通过每一步贪心选择,可得到问题的一个最优解,虽然每一步上都要保证能获得局部最优解,但由此产生的全局解有时不一定是最优的,所以贪婪法不要回溯。”

·Stacking:分类器里面再套一个新的分类器,可能会overfit,没事别用。。

·多专家模型(Mixture of Experts):用来合并Neural Network分类结果,训练集异质性(heterogeneity)较强的话可以考虑用。

·Maximum entropy model: 与loss function功能一样,用来判断模型(如LR等)的好坏

·EM:期望最大化:也是优化模型的思路(如GMM模型)

3.防止overfitting的方法

·获取更多数据(1)从数据源头获取更多数据(2)根据当前数据集估计数据分布参数,使用该分布产生更多数据(3)数据增强(data augmentation):通过一定规则扩充数据。如在物体分类问题里,物体在图像中的位置、姿态、尺度,整体图片明暗度等都不会影响分类结果。我们就可以通过图像平移、反转、缩放、切割等手段将数据库成倍扩充。

·使用合适的模型——合适的复杂度。如果能通过物理、数学建模等确定模型复杂度,是最好的方法,初学者要掌握传统的建模方法。

对于Neural Network而言,有如下方法降低复杂度:
·减少层数、Neural个数
·Early stopping
·Regularization(eg: weight-decay)
·增加noise,包括在输入中增加eg:高斯噪声;在权值上加;对网络的响应加噪声(让默写Neural输出变成binary或random)

·结合多种模型,以每个模型的平均输出作为结果——Bagging、boosting、Dropout(每次随机忽略隐层的某些节点)、不同模型之间权值共享(共同使用者H个神经元的连接权值),相当于一种权值正则方法,实际效果比L2 regulation 更好。

4. Optimisers

·Gradient Descent梯度下降

·RMSProp: Root Mean Square Propagation. maintains a per-parameter. learning rate that are added based on the average of recent magnitudes of gradients for the weight (eg: how quickly it is changing). This means the algorithm does well on line and non-stationary problem(eg:noisy)

·Momentum: a value between 0 and 1 that increase the size of steps taken towards the minimum by trying to jump from a local minima. If momentum is large, then learning rate should be small. Momentum also helps smoothing out variation. If gradient keeps changing direction, then we can try hit and trial or cross-validation in order to choose the best momentum value. 如果gradient老改方向,则m需要减小,反则增大。

/mu:global learning rate; /signa: gradient

·Adagrad: Adaptive Gradient Algorithm----maintains a per-parameter, learning rate improves performance of sparce gradients(eg: natural language / computer vision problems)

·Adam: an extension to stochastic gradient descent adaptive moment estimation (single learning rate for all weight). It computes individual adaptive learning rates for different parameters from estimates of first and second moments of gradients. It combine advantages of Adagrad and RMSProp. Advantages: it is appropriate for problems large in terms of data, non-stationary objectives,very noisy/sparce gradients, it is computation efficient, has little memory requirements. But it is invarient to diagonal rescale of gradients, Hyper-parameters requires little tunning.

parameters include:
1 alpha: learning rate / step size (the larger the faster)
2. beta1: exponential decay rate for first moment estimater
3. beta2: exponential decay rate for second moment estimater
4. epsilon: a small number to prevent any division by 0 in implementation (eg: 0e-8)Default: (Tensorflow/Caffe: alpha-0.001; beta1-0.9; beta2-0.999; epsilon-(e-8))

更多推荐