学习中遇到的一些知识点,简单整理一些。持续更新中。。。。

生成模型(generative model) VS 判别模型(discriminative model)

  • 判别模型是直接学习$P(y/x)$,或者直接从特征空间学习类别标签

  • 生成模型事假定数据满足一定的分布特征,需要学习$P(x/y)$

  • 优缺点:1,生成式模型都会对数据的分布做一定的假设, 比如朴素贝叶斯会假设在给定y的情况下各个特征之间是条件独立的,当数据满足这些假设时, 生成式模型通常需要较少的数据就能取得不错的效果, 但是当这些假设不成立时, 判别式模型会得到更好的效果。
    2,生成式模型最终得到的错误率会比判别式模型高, 但是其需要更少的训练样本就可以使错误率收敛;3,生成式模型更容易拟合, 比如在朴素贝叶斯中只需要计下数就可以, 而判别式模型通常都需要解决凸优化问题;4, 生成式模型可以更好地利用无标签数据(比如DBN), 而判别式模型不可以;5,判别式模型可以对输入数据x进行预处理, 使用ϕ(x)来代替x, 如下图所示, 而生成式模型不是很方便进行替换(?).
    https://blog.csdn.net/Fishmemory/article/details/51711114
    http://www.cnblogs.com/kemaswill/p/3427422.html

隐马尔可夫模型(Hidden Markov Model)

分类器评价指标(metric)

对于分类器,主要的评价指标有precision,recall,F-score,Accuracy以及ROC曲线,,AUC

| | |预测的类|||
|:—–|:—-|:—-|:—|
| | |Yes|No|合计|
|实际的类|Yes|TP|FN|P|
| |No|FP|TN|N|
|||P’|N’|||

首先来解释一下表格中的术语:

  1. 真正例/真阳性(True Positive, TP):指被分类器正确分类的正元组。令TP为真正例的个数。
  2. 真负例/真阴性(True Negative, TN):指被分类器正确分类的负元组。令TN为真负例的个数。
  3. 假正例/假阳性(False Positive, FP):指被分类器错误标记为正元组的负元组。令FP为假正例的个数。
  4. 假负例/假阴性(False Negative, FN):指被分类器错误标记为负元组的正元组。令FN为假负例的个数。
  5. 正元组数(Positive, P):样本中实际的正元组数。
  6. 负元组数(Negative, N):样本中实际的负元组数。
  7. P’:被分类器分为正元组的样本数。
  8. N’:被分类器分为负元组的样本数。
  9. 真正率(True Positive Rate , TPR)【灵敏度(sensitivity)】:$TPR = TP /(TP + FN)$ ,即正样本预测结果数/ 正样本实际数
  10. 假负率(False Negative Rate , FNR) :$FNR = FN /(TP + FN)$ ,即被预测为负的正样本结果数/正样本实际数
  11. 假正率(False Positive Rate , FPR) :$FPR = FP /(FP + TN)$ ,即被预测为正的负样本结果数 /负样本实际数
  12. 真负率(True Negative Rate , TNR)【特指度(specificity)】:$TNR = TN /(TN + FP)$ ,即负样本预测结果数 / 负样本实际数
  13. 精确度(Precision): $P = TP/(TP+FP)$ . 精度就是我选择的这一类就是正确的概率是多少。力求 识别出来的的视频中,绝大部分都不含色情视频,“宁放过大部分视频,不错一个视频含sex”
  14. 召回率(Recall): R = TP/(TP+FN),即真正率。召回率是选择的这一类是正确的,占实际总体的概率是多少。力求 在所有的病人中,都能识别出这些病人,“宁错诊有病,不放过一个真病”。
  15. F-score:查准率和查全率的调和平均值, 更接近于P, R两个数较小的那个: $F=2* P* R/(P + R)$
  16. 准确率(Aaccuracy): 分类器对整个样本的判定能力,即将正的判定为正,负的判定为负: $A = (TP + TN)/(TP + FN + FP + TN)$
  17. ROC(Receiver Operating Characteristic):ROC的主要分析工具是一个画在ROC空间的曲线——ROC curve,横坐标为false positive rate(FPR),纵坐标为true positive rate(TPR)。”In signal detection theory, a receiver operating characteristic (ROC), or simply ROC curve, is a graphical plot which illustrates the performance of a binary classifier system as its discrimination threshold is varied.””
  18. AUC(Area Under Curve)被定义为ROC曲线下的面积,显然这个面积的数值不会大于1。又由于ROC曲线一般都处于y=x这条直线的上方,所以AUC的取值范围在0.5和1之间。使用AUC值作为评价标准是因为很多时候ROC曲线并不能清晰的说明哪个分类器的效果更好,而作为一个数值,对应AUC更大的分类器效果更好。
  19. 为什么使用ROC曲线?
    既然已经这么多评价标准,为什么还要使用ROC和AUC呢?因为ROC曲线有个很好的特性:当测试集中的正负样本的分布变化的时候,”AUC. It is already computed by varying class priors. Does not get affected much by size of data in a particular class”.。在实际的数据集中经常会出现类不平衡(class imbalance)现象,即负样本比正样本多很多(或者相反),而且测试数据中的正负样本的分布也可能随着时间变化. 还有一个就是可以随着阈值的变化。

reference:
https://www.cnblogs.com/gatherstars/p/6084696.html https://blog.csdn.net/pipisorry/article/details/51788927#commentBox
http://blog.sina.com.cn/s/blog_629e606f0102v7a0.html

过拟合问题

机器学习中发生过拟合的主要原因有:

  1. 使用过于复杂的模型;
  2. 数据噪声较大;
  3. 训练数据少。

由此对应的降低过拟合的方法有:

  1. 简化模型假设,或者使用惩罚项限制模型复杂度;
  2. 进行数据清洗,减少噪声;
  3. 收集更多训练数据。

梯度下降了解多少

three variants of gradient descent, among which mini-batch gradient descent is the most popular:

  1. 批量梯度下降(batch Grandient descent). BGD 是梯度下降算法最原始的形式, 其特点是每次更新参数 ω 时, 都使用整个训练集的数据.
  2. 随机梯度下降(stochastic grandient descent).SGD 每次以一个样本, 而不是整个数据集来计算梯度.
  3. 小批量梯度下降(mini-batch grandient descent). MBGD 是为解决 BGD 与 SGD 各自缺点而发明的折中算法, 或者说它利用了 BGD 和 SGD 各自优点. 其基本思想是: 每次更新参数时, 使用 n 个样本, 既不是全部, 也不是 1. (SGD 可以看成是 n=1 的 MBGD 的一个特例)

|梯度下降算法| 优点| 缺点|
|:—–|:—-|:—-|:—|
|BGD |全局最优解 |计算量大, 迭代速度慢, 训练速度慢
|SGD |1.训练速度快 2. 支持在线学习 |准确度下降, 有噪声, 非全局最优解|
|MBGD |1. 训练速度较快, 取决于小批量的数目 2. 支持在线学习 |准确度不如 BGD, 仍然有噪声, 非全局最优解

Algorithms that are most commonly used for optimizing SGD:

  • Momentum.
    当梯度与冲量方向一致时,冲量项会增加,而相反时,冲量项减少,因此冲量梯度下降算法可以减少训练的震荡过程
  • Nesterov accelerated gradient.
    NAG is a way to give our momentum term this kind of prescience. 对冲量梯度下降算法的改进版本,其速度更快。其变化之处在于计算“超前梯度”更新冲量项
  • Adagrad.
    It adapts the learning rate to the parameters, performing smaller updates (i.e. low learning rates) for parameters associated with frequently occurring features, and larger updates (i.e. high learning rates) for parameters associated with infrequent features. For this reason, it is well-suited for dealing with sparse data.
  • Adadelta.
    Adadelta is an extension of Adagrad that seeks to reduce its aggressive, monotonically decreasing learning rate. Instead of accumulating all past squared gradients, Adadelta restricts the window of accumulated past gradients to some fixed size w.
  • RMSprop
    RMSprop and Adadelta have both been developed independently around the same time stemming from the need to resolve Adagrad’s radically diminishing learning rates.主要是解决学习速率过快衰减的问题。其实思路很简单,类似Momentum思想,引入一个超参数,在积累梯度平方项进行衰减
  • Adam
    Adaptive Moment Estimation (Adam) [15] is another method that computes adaptive learning rates for each parameter. In addition to storing an exponentially decaying average of past squared gradients vt like Adadelta and RMSprop, Adam also keeps an exponentially decaying average of past gradients mt, similar to momentum. Whereas momentum can be seen as a ball running down a slope, Adam behaves like a heavy ball with friction, which thus prefers flat minima in the error surface.
    其结合了Momentum和RMSprop算法的思想。相比Momentum算法,其学习速率是自适应的,而相比RMSprop,其增加了冲量项。所以,Adam是两者的结合体.

梯度下降需要关注的参数调参:

  • 学习率 learn rate $a$.
  • 学习率衰减 decay
  • 冲量 momentum
  • 参数初始值(常常random)

references:
http://kissg.me/2017/07/23/gradient-descent/
http://ruder.io/optimizing-gradient-descent/index.html#gradientdescentvariants
https://www.cnblogs.com/pinard/p/5970503.html
https://blog.csdn.net/u013709270/article/details/78667531
SGD,Sklearn中应用

Lasso, Ridge

然后针对L2范数 $\Phi \left ( w \right ) = \sum_{j=1}^{n}w_j^2 $ ,同样对它求导,得到梯度变化为 $∂Φ(w)/∂wj=2wj$ (一般会用$λ2$来把这个系数2给消掉)。同样的更新之后使得$wj$的值不会变得特别大。在机器学习中也将L2正则称为weight decay,在回归问题中,关于L2正则的回归还被称为Ridge Regression岭回归。weight decay还有一个好处,它使得目标函数变为凸函数,梯度下降法和L-BFGS都能收敛到全局最优解。——逻辑回归L1与L2正则,L1稀疏,L2全局最优(凸函数梯度下降)

Lasso回归和岭回归最重要的区别是,岭回归中随着惩罚项增加时,所以项都会减小,但是仍然保持非0的状态,然而Lasso回归中,随着惩罚项的增加时,越来越多的参数会直接变为0,正是这个优势使得lasso回归容易用作特征的选择(对应参数非0项),因此lasso回归可以说能很好的保留那些具有重要意义的特征而去掉那些那些意义不大甚至毫无意义的特征(如果是超多维的稀疏矩阵,这难道不是在垃圾中寻找黄金的“掘金术”吗?),而岭回归永远不会认为一个特征是毫无意义的。 —— Spark2.0机器学习系列之12: 线性回归及L1、L2正则化区别与稀疏解

正则化参数等价于对参数引入 先验分布,使得 模型复杂度 变小(缩小解空间),对于噪声以及outliers的鲁棒性增强(泛化能力)。整个最优化问题从贝叶斯观点来看是一种贝叶斯最大后验估计,其中 正则化项 对应后验估计中的 先验信息 ,损失函数对应后验估计中的似然函数,两者的乘积即对应贝叶斯最大后验估计的形式。——Regularized Regression: A Bayesian point of view

总结作用:

  • 解决共线性问题
  • 解决变量多于数据数的情况
  • 解决过拟合的问题,不至于使得参数取的过大,过小等问题
  • 解决选取特征(lasso)

L1_lasso 优缺点:

  • 简化模型复杂度。因为引入参数的先验分布,拉普拉斯分布
  • 善于处理稀疏数据,选取有用特征
  • 缺点:处理速度快,但可能牺牲了一些准确性

L2_Ridge 优缺点:

  • 简化模型复杂度,因为引入参数的先验分布,高斯分布
  • 解决logistic regression共线性问题。
  • 解决样本点比较少,而特征比较多,特征个数多于样本个数的情况。

Spark2.0机器学习系列之12: 线性回归及L1、L2正则化区别与稀疏解

逻辑回归L1与L2正则,L1稀疏,L2全局最优(凸函数梯度下降)

贝叶斯角度Regularized Regression: A Bayesian point of view

http://scikit-learn.org/stable/modules/linear_model.html#ridge-regression

什么是共线性问题

共线性问题对线性回归模型有如下影响:

  • 参数的方差增大;
  • 难以区分每个解释变量的单独影响;
  • 变量的显著性检验失去意义;
  • 回归模型缺乏稳定性。样本的微小扰动都可能带来参数很大的变化;
  • 影响模型的泛化误差。

共线性问题的解决方法:

  • 增加数据
  • 对模型施加某些约束条件(L2,L1)
  • 删除一个或几个共线变量
  • 将模型适当变形
  • 主成分回归,降维

讲讲共线性问题

多重共线性的产生原因、判别、检验、解决方法

哪些算法可以online learning

Gradient boosting

Gradient boosting

GBDT vs Random forestes

GBDT是计算每个模型训练后的残差
随机森林和GBDT的区别

GMM(Gaussian mixture model)

假设模型服从几个高斯分布相叠加结果。计算这个点属于每个模型的概率,哪个最大就是属于哪一类的。

一个简单的解释:
一文详解高斯混合模型原理

公式:高斯模型叠加
$$p(x)=\sum_{k=1}^{K}p(k)p(x|k)=\sum_{k=1}^{K}\phi_{k}N(x|\mu_{k},\varepsilon_{k})$$

利用EM算法来更新迭代数据,有三个数据需要更新,$\phi_{k}, \mu_{k}, \varepsilon_{k}$

  • 与Kmeans的关系
    K-Means算法其实是GMM的EM解法在高斯分量协方差ϵI→0时的一个特例,GMM输出的是数据点属于每个每类的概率,我们用最大似然方法去确定分类。就严谨性来说,用概率进行描述数据点的分类,GMM显然要比K-mean好很多。
    实际应用中,对于 K-means,我们通常是重复一定次数然后取最好的结果,但由于 GMM 每一次迭代的计算量比 K-means 要大许多,使用GMM时,一个更流行的做法是先用 K-means (已经重复并取最优值了)得到一个粗略的结果,然后将其作为初值(只要将 K-means 所得的 聚类中心传给 GMM即可),再用 GMM 进行细致迭代。

Reference:
高斯混合模型(GMM)及其EM算法的理解
https://blog.csdn.net/llp1992/article/details/47058109
https://blog.csdn.net/tingyue_/article/details/70739671

EM 算法

数学原理:
求被选到的概率最大。

http://blog.51cto.com/9269309/1892833
https://blog.csdn.net/linyanqing21/article/details/50939009

SVM推导,对偶性的作用,核函数有哪些,有什么区别

确定下界 最大化

关于SVM数学细节逻辑的个人理解(二):从基本形式转化为对偶问题

http://www.hanlongfei.com/convex/2015/11/05/duality/

https://blog.csdn.net/Sunshine_in_Moon/article/details/51321461

https://www.zhihu.com/question/58584814

bp算法介绍,梯度弥散问题。

自然语言处理

以后如果有机会多学下NLP的话,就专门写一片自然语言教程。
先记下一些看过的非常好的教程。
一文读懂自然语言处理(NLP)入门学习要点
自然语言处理是如何工作的?一步步教你构建 NLP 流水线