• 朴素贝叶斯的假定条件:变量独立同分布
  • 一般情况下,越复杂的系统,过拟合的可能性就越高,一般模型相对简单的话泛化能力会更好一点,增加隐层数可以降低网络误差(也有文献认为不一定能有效降低),提高精度,但也使网络复杂化,从而增加了网络的训练时间和出现“过拟合”的倾向, svm高斯核函数比线性核函数模型更复杂,容易过拟合
  • AdaBoost算法中不同的训练集是通过调整每个样本对应的权重来实现的。开始时,每个样本对应的权重是相同的,即其中n为样本个数,在此样本分布下训练出一弱分类器。对于分类错误的样本,加大其对应的权重;而对于分类正确的样本,降低其权重,这样分错的样本就被凸显出来,从而得到一个新的样本分布。在新的样本分布下,再次对样本进行训练,得到弱分类器。以此类推,将所有的弱分类器重叠加起来,得到强分类器。
  • Bagging与Boosting的区别主要是取样方式不同:Bagging采用均匀取样,而Boosting根据错误率取样。Bagging的各个预测函数没有权重,而Boosting是有权重的。Bagging的各个预测函数可以并行生成,而Boosing的各个预测函数只能顺序生成。

  • 神经网络学习过程的本质就是学习数据分布,在训练数据与测试数据分布不同情况下,模型的泛化能力就大大降低;另一方面,若训练过程中每批batch的数据分布也各不相同,那么网络每批迭代学习过程也会出现较大波动,使之更难趋于收敛,降低训练收敛速度。通常在输入层做标准化/归一化并不能保证每次minibatch通过每个层的输入数据都是均值0方差1,因此我们可以加一个batch normalization层对这个minibatch的数据进行处理。但是这样也带来一个问题,把某个层的输出限制在均值为0方差为1的分布会使得网络的表达能力变弱。因此又给batch normalization层进行一些限制的放松,给它增加两个可学习的参数 β 和 γ对数据进行缩放和平移,平移参数 β 和缩放参数 γ 是学习出来的。极端的情况这两个参数等于mini-batch的均值和方差,那么经过batch normalization之后的数据和输入完全一样,当然一般的情况是不同的。Batch normalization输出计算的统计量会受到batch中其他样本的影响(对一个batch里所有的图片的所有像素求均值和标准差。而instance norm是对单个图片的所有像素求均值和标准差)由于shuffle的存在,每个batch里每次的均值和标准差是不稳定,本身相当于是引入了噪声。而instance norm的信息都是来自于自身的图片,某个角度来说,可以看作是全局信息的一次整合和调整。对于训练也说也是更稳定的一种方法。在RNN里面(看hinton的layer normalization想到的), 超分辨率或者对图像对比度、亮度等有要求的时候不建议使用BN。

  • 生成模型是通过联合概率分布来求条件概率分布,而判别模型是通过数据直接求出条件概率分布,换句话说也就是,生成模型学习了所有数据的特点(更宽泛,更普适),判别模型则只是找出分界(更狭隘 更特殊)。

  判别模型求解的思路是:条件分布------>模型参数后验概率最大------->(似然函数参数先验)最大------->最大似然

  即为求条件分布的参数关于训练数据(C,X)的后验分布

  生成模型的求解思路是:联合分布------->求解类别先验概率和类别条件概率

  

   常见的判别式模型有:

  1. Logistic regression(logistical 回归)
  2. Linear discriminant analysis(线性判别分析)
  3. Supportvector machines(支持向量机)
  4. Boosting(集成学习)
  5. Conditional random fields(条件随机场)
  6. Linear regression(线性回归)
  7. Neural networks(神经网络)

常见的生成式模型有:

  1. Gaussian mixture model and othertypes of mixture model(高斯混合及其他类型混合模型)
  2. Hidden Markov model(隐马尔可夫)
  3. NaiveBayes(朴素贝叶斯)
  4. AODE(平均单依赖估计)
  5. Latent Dirichlet allocation(LDA主题模型)
  6. Restricted Boltzmann Machine(限制波兹曼机)
  • 联合概率公式:$p(x,y) = p(x|y)p(y) = p(y|x)p(x)$,若x,y独立,则公式退化为$p(x,y) = p(x)p(y)$
  • 从联合概率公式可以推导出条件概率公式:$p(x|y) = p(x,y)/p(y)$  $p(y|x) = p(x,y)/p(x)$
  • 全概率公式:$p(x)=\sum_{m=1}^Mp(x|y_m)p(y_m)$,其中$\sum_{m=1}^Mp(y_m)=1$
  • 贝叶斯(后验概率)公式:$p(y_m|x) = p(y_m,x)/p(x) = p(x|y_m)p(y_m)/\sum_{m=1}^Mp(x|y_m)p(y_m)$

  $p(y_m|x)$:后验概率

      $p(x|y_m)$:先验概率

    $p(y_m)$:似然函数

$sum_{m=1}^Mp(x|y_m)p(y_m) = p(x)$:证据因子

  

ML一些零散记录的更多相关文章

  1. C++细节系列(零):零散记录

    老规矩:记录细节,等待空余,再进行整理. 1:const,static,const static成员初始化. 1.const成员:只能在构造函数后的初始化列表中初始化 2.static成员:初始化在类 ...

  2. C ~ 指针零散记录

    2016.10.11 一个记录 void MB_float_u16(float f,uint16_t *a,uint16_t *b) { uint8_t *fp; ① uint8_t *ap; ② a ...

  3. Mysql:零散记录

    limit用法 查询第4行记录 select * from tablename limit 3,1; limit 3,1:截取第3行加1行的数据 查询第6-15行 select * from tabl ...

  4. ASP.NET Core学习零散记录

    赶着潮流听着歌,学着.net玩着Core 竹子学Core,目前主要看老A(http://www.cnblogs.com/artech/)和tom大叔的博客(http://www.cnblogs.com ...

  5. python 零散记录(七)(下) 新式类 旧式类 多继承 mro 类属性 对象属性

    python新式类 旧式类: python2.2之前的类称为旧式类,之后的为新式类.在各自版本中默认声明的类就是各自的新式类或旧式类,但在2.2中声明新式类要手动标明: 这是旧式类为了声明为新式类的方 ...

  6. python 零散记录(七)(上) 面向对象 类 类的私有化

    python面向对象的三大特性: 多态,封装,继承 多态: 在不知道对象到底是什么类型.又想对其做一些操作时,就会用到多态 如 'abc'.count('a') #对字符串使用count函数返回a的数 ...

  7. python 零散记录(六) callable 函数参数 作用域 递归

    callable()函数: 检查对象是否可调用,所谓可调用是指那些具有doc string的东西是可以调用的. 函数的参数变化,可变与不可变对象: 首先,数字 字符串 元组是不可变的,只能替换. 对以 ...

  8. python 零散记录(五) import的几种方式 序列解包 条件和循环 强调getattr内建函数

    用import关键字导入模块的几种方式: #python是自解释的,不必多说,代码本身就是人可读的 import xxx from xxx import xxx from xxx import xx1 ...

  9. python 零散记录(四) 强调字典中的键值唯一性 字典的一些常用方法

    dict中键只有在值和类型完全相同的时候才视为一个键: mydict = {1:1,':1} #此时mydict[1] 与 mydict['1']是两个不同的键值 dict的一些常用方法: clear ...

随机推荐

  1. Hadoop安装和基本单机部署

    下载安装  # 下载 $ cd /usr/local $ wget http://mirrors.hust.edu.cn/apache/hadoop/common/hadoop-2.9.2/hadoo ...

  2. iOS数据持久化存储

    本文中的代码托管在github上:https://github.com/WindyShade/DataSaveMethods 相对复杂的App仅靠内存的数据肯定无法满足,数据写磁盘作持久化存储是几乎每 ...

  3. python 3.4读取输入参数

    python 3.4读取输入参数 学习了:https://blog.csdn.net/qq_24815615/article/details/52302615 注意,sys.args[0]是pytho ...

  4. A002-开发工具介绍

    关于Android的开发工具有非常多,基本上都能够在SDK中找到.下面我们逐个来看一下: 首先我们使用的是Java语言进行Android应用的开发,那么Java的执行环境是少不了的了,我们须要在我们的 ...

  5. vue - 前置工作

    vue 中文官网:https://cn.vuejs.org/ vue ES6语法:https://www.cnblogs.com/zhouyangla/p/7225335.html vue Debug ...

  6. flex 操作xml 实现增删改查 .

    一 在介绍Flex中操作XML之前,首先简单介绍下XML中的基本术语. 元素:XML中拥有开始标签和结束标签的这一块称为“元素”    节点:把XML元素与文本结合起来统称为节点    根节点:位于整 ...

  7. 嵌入式学习笔记(综合提高篇 第二章) -- FreeRTOS的移植和应用

    1.1    资料准备和分析 上章节通过实现双机通讯,了解如何设计和实现自定义协议,不过对于嵌入式系统来说,当然不仅仅包含协议,还有其它很多需要深入学习了解的知识,下面将列出我在工作和学习上遇到的嵌入 ...

  8. HDU 5366:The mook jong 递推

    The mook jong  Accepts: 506  Submissions: 1281  Time Limit: 2000/1000 MS (Java/Others)  Memory Limit ...

  9. ucgui界面设计演示样例2

    ucgui界面设计演示样例2 本文博客链接:http://blog.csdn.net/jdh99,作者:jdh,转载请注明. 环境: 主机:WIN8 开发环境:MDK4.72 ucgui版本号:3 ...

  10. php 封装memcache类

    <?php /*  * memcache类   */ class Memcacheds{     //声明静态成员变量     private static $m = null;     pri ...