机器学习知识点总结

来源:互联网 发布:淘宝售假申诉的凭证 编辑:程序博客网 时间:2024/04/29 17:11
  • 机器学习整体思路

    从开始到最后

    ==很重要,一定要好好看==

  • 模型选择问题

    这里所说的模型选择是指模型的结构已经确定好了,之后再来选择参数的个数和每个参数的大小,首先肯定要先确定模型参数的个数,因为参数的个数的确定决定了基础模型的建立,比如我们尝试10个模型,第一个模型有1个参数,第二个模型有两个参数…, 而我们需要确定哪个模型是最好的,那如何确定呢,现在每个模型只是知道了参数的个数,但是每个参数的大小还是不一样的,那怎么办,这时候就需要对每个模型用到最大似然或者最大后验概率估计的方法确定使每个模型训练误差最小的参数(即让后验概率或者似然概率最大的那个参数),这样我们就有了10个针对每个模型最好的参数了,再选择其中最好的参数就好了,这是最初的思路,

    但是我们想象一下,上面的方法有严重的过拟合倾向,那么需要用到一定的方法来改善过拟合的尴尬局面,而现在想到的就是交叉验证,在训练样本中划出一部分用作验证样本,那么每个模型都会对应一份验证样本,那么在这个验证样本上来计算误差,取让验证样本误差最小的模型作为最优的模型就可以了,

    但是这个也是不太好的,因为我们可以想象的到,如果模型的参数越多,把模型就会描述的越好,但是过拟合的风险就会越大,而且如果验证样本和训练样本很像的话,刚才所说的过拟合的问题是没有办法回避的,因而人们想出了正则化的套路,即如果模型太过复杂,是需要被惩罚的,但是惩罚的力度是有说法的,也就是正则项的系数决定了整个模型的好坏,那么我们就可以尝试着通过改变正则项系数来选择让验证样本误差最小,那么这个模型才是我们最终想要的结果,

    模型选择

  • AIC和BIC
    模型越复杂,训练误差越小,那么与之对应的是似然越大,

    AIC和BIC

  • 生成模型和判别模型的区别

    生成模型相当于把所有的东西都学习全面了之后再来做机器学习的任务,而判别模型只是在某一个任务中寻找不同类别的差异来进行机器学习的任务的,因而从生成模型是能够推导出判别模型,而判别模型是不能推导出生成模型的,具体解释见如下链接,

    生成模型和判别模型的区别

    典型的生成模型包括朴素贝叶斯,隐马尔科夫模型,
    常用的判别模型有决策树,神经网络,等等,判别模型比生成模型更常见,因为它不需要估计数据本身的分布,直接估计映射,即P(Y/X),判别模型一般都假设后验概率服从的是高斯分布, 原因如 下所示,

    后验概率为高斯分布

  • 贝叶斯决策

    一个很好的例子解释贝叶斯决策论->

    例子

    已知北半球人的生日分布和南半球人的生日分布,以及北半球人的比例和南半球人的比例,(这里需要指明的是南北半球是这个例子中的target,而生日是特征,比较别扭的是target是因,而特征是果)让我们预测一个生日为6月的人到底是北半球的人还是南半球的人,
    北半球和南半球的分布就是先验概率,这个是定量,南北半球的生日分布是根据样本的不同而不同的,这个是似然函数,而我们现在的目标是给出一个人的生日(结果),来推出一个人所处的半球(因),这就是所谓的后验概率,具体例子详见如下链接,

    link

    贝叶斯决策论可见如下链接,

    贝叶斯决策论

  • 极大似然

    极大似然

    图片解释

    极大似然估计与判别模型和生成模型没有关系,极大似然是一种方法,而判别模型和生成模型是一种态度,

  • 最大似然估计,最大后验概率估计,贝叶斯估计

    最大似然估计和最大后验概率估计都是在找到最合适的参数使得选择这个参数之后的风险最小,即后验概率最大,详细内容见<周志华机器学习148页>,核心是找到参数的一个值,即所谓的point estimation,参数确定了,最终的结果也就确定了,这就说明了如下公式,这一点很难理解,但是事实却是就是这样,这就说明了如下公式,

    p(y/x)=p(θ/x)

    最大似然估计的假设是模型的参数服从均匀分布,即参数的所有取s值的概率即参数的先验概率都是一样的,因而把从求最大后验概率变为了求最大似然概率,
    而最大后验概率估计比最大似然估计更进一步,先假设模型的参数的先验服从某一个分布,比如高斯分布或者拉普拉斯分布,因而最大化似然概率和先验概率的乘积得到结果,从另一个角度来考虑最大后验概率估计就是最大似然估计添加了正则项,如果假设其为高斯分布相当于引入了L2正则化,若为拉普拉斯分布,则相当于引入L1正则化,至于为什么,可以看下面的链接,链接里讲到了什么是拉普拉斯分布,

    拉普拉斯分布

    最大似然和最大后验的结果都是确定了一个模型的参数,当一个未知数据来了之后,通过这个参数的计算得到结果,
    而贝叶斯估计是对整个后验概率做了一个估计,而不是只单单求一个点,把后验概率的分布求解出来,也就是说把模型参数的各个取值都考虑到了,而不是单单的确定一个参数,考虑的更加全面,

    参考链接:

    link1投票最高的答案

    link2

    link3

    一个生动形象的例子:

    参加考试之前要做大量的题,考生需要总结一套做题的方法,来应对考试中的每道题,如今现在有题库,且题目的答案只有三种可能的答案,但是题目却有各式各样的总共1000道, 那么判别模型的极大似然是这样的,拿到整整一个题库,他开始用自己的方法做题,虽然每道题都拿不准,但是每道题他都会分析出选哪个选项的可能性比较大,而后他拿着这份“可能性”的答卷去和正确答案对一下,如果发现自己做的每道题最有可能选择的答案和真的答案都一样,那么他就心满意足了,因为他觉得自己的方法是正确的,但是如果对不上,那么他就得修改自己的方法,尽可能让每道题的答案都和正确答案吻合,让自己的正确率更高一点,这样的方法就是更可靠的,而得到可靠方法之后再去考场上做题心里就有底了,因为他用自己的方法得到的最有可能的答案有很大可能性就是标准答案,

    这上面所说的方法就是分类模型的参数,每道题通过方法计算出来的每个选项的可能性就是后验概率,因而判别模型就是用来计算最大后验概率所对应的参数的,当预测时,一个未知的数据输入,输出是每一类的概率,那么最大的概率所对应的类别就是最可靠的,

    而如果拿到生成模型的极大似然中来,现在考生运用的方法就不同了,他是通过答案来反推题的类型,比如选项A所对应的题应该是什么样子的,选项B所对应的题应该是什么样子的,如果估计的题型和真实的题型是吻合的,那么这方法就比较靠谱,而后再把这个方法运用到考场上,他就会看到题型属于之间自己总结的哪一类,那么他就可以直接写答案了,

    那为什么数据量越多,极大似然的方法就越可靠呢,就是因为如果考生做了1000000道题,他把自己的方法已经研究到登峰造极的地步了,那么他害怕什么,肯定能够应对各种问题了,
    而对应生成模型的最大后验概率预测的情形对应到考生的例子中来,就变成了选项A,B和C的权重不一样,A对应的是2分,B对应的是1分,C对应的是0.5分,那么他总结A选项所对应的题型的时候就会更加小心和仔细,B类就不那么小心了,因为分值不重,因而到考场上就会变得更加有底气了,

  • 层次聚类

    层次聚类

    这个上面只是说了原理,sklearn和scipy中集成了算法的实现,在

boosting

  • adaboost

    算法:李航书138页

    代码:

F0(x)=argminγi=1nL(yi,γ)

Fm(x)=Fm1(x)+argminhHi=1nL(yi,Fm1(xi)+hm(xi))

Fm(x)=Fm1(x)γmi=1nFm1L(yi,Fm1(xi)),

γm=argminγi=1nL(yi,Fm1(xi)γFm1L(yi,Fm1(xi)))

注意!这个是为了求解方便才引入的,相当于求解出负梯度方向的时候,每次都只走一让让其下降最快的那一步,一般用线性搜索就能够找到gamma_m的最优值, 这里需要注意的是这个gamma_m 并不是learning_rate,

learning_rate是用来决定整体分类树的个数的,这个gamma_m只是决定了每棵回归树的最优的那一步,这是不一样的,如下公式就清楚的解释了这两个东西根本不是一回事,v 是learning_rate, 而gamma_m 只是一个计算过程中的系数,

Fm(x)=Fm1(x)+νγmhm(x),0<ν1

  • GBDT 分类

    GBDT做分类其实就是在做回归,只不过模型倒数第二步输出的是输入属于每一类的概率,然后取其中值最大的那个对应的类别,就是这个模型的输出,

    对于二分类问题,它定义的损失函数是logistics损失,

    多分类问题类似于softmax分类,每个阶段有K个分类树, 统计完结果后,送入下一个阶段

    以下两个链接第一个链接讲述的是损失函数的重要性,定义了之后会决定数据的初始化,但是后面分类问题的时候讲述的定义损失函数的方法有些不对,不建议去看, 对于多分类的时候还是比较靠谱的, 第二个链接是站在一个更高的角度来看待这个问题,分析的很清楚,就是第一个连接的浓缩,

    GBDT回归和分类

    GBDT分类

  • GBDT 调参技巧

    • 先设定一个basemodel,评估basemodel的性能

    • 再去固定learning_rate, 找到最合适的树的棵数,这个的前提是固定boosting参数,

    • 调节树参数 (注意调参顺序)

      max_depth + num_samples_split

      min_samples_leaf

      max_features

    • 调节子样本比例来降低learning rate, 相应的提高树的棵数,(树的棵数增长倍数是learning_rate的降低倍数)

    GBDT调参技巧

  • adboost VS 提升树 VS GBDT

    1. adaboost <-> 提升树

    adboost拟合的是样本的权重,但是提升树拟合的是每次根据基学习器预测完成之后的残差, 样本的权重是一样的,同理GBDT拟合的时候样本的权重也是一样的,

    1. 提升树 <-> GBDT

    提升树拟合的是残差,但是GBDT拟合的是负梯度,这就和梯度下降的知识类似了

原创粉丝点击