diff --git a/assets/1606400297489.png b/assets/1606400297489.png new file mode 100644 index 0000000..3ae9f61 Binary files /dev/null and b/assets/1606400297489.png differ diff --git a/assets/1606483124149.png b/assets/1606483124149.png new file mode 100644 index 0000000..1062117 Binary files /dev/null and b/assets/1606483124149.png differ diff --git a/必备数学基础.md b/必备数学基础.md index f07cae6..ccde04a 100644 --- a/必备数学基础.md +++ b/必备数学基础.md @@ -1463,3 +1463,100 @@ X轴上的特征表示归一化后,是对某个特征增强10倍,其它不 还是上面的例子,这回我们可以说θ=1概率是30%。而且随着所得样本的增多,我们可以把这个概率加以变化,得到θ|x的分布。这个概率其实是信心的含义。 +#### 贝叶斯算法概述: + +要解决的问题: + +- 正向概率:假设袋子里面有N个白球,M个黑球,你伸手进去摸一把,摸出黑球的概率是多大 +- 逆向概率:如果我们事先并不知道袋子里面黑白球的比例,而是闭着眼睛摸出一个(或好几个)球,观察这些取出来的球的颜色之后,那么我们可以就此对袋子里面的黑白球的比例作出什么样的推测 + +什么使用贝叶斯: + +- 现实世界本身就是不确定的,人类的观察能力是有局限性的 +- 我们日常所观察到的只是事物表面上的结果,因此我们需要提供一个猜测 + +#### 贝叶斯推导实例: + +一所学校的男女比例如下 + +![1606400297489](assets/1606400297489.png) + +- 男生总是穿长裤,女生则一半穿长裤一半穿裙子 +- 正向概率:随机选取一个学生,他(她)穿长裤的概率和穿裙子的概率是多大 +- 逆向概率:迎面走来一个穿长裤的学生,你只看得见他(她)穿的是否长裤,而无法确定他(她)的性别,你能够推断出他(她)是女生的概率是多大吗? + +公式: + +- 假设学校里面人的总数是U个 +- 穿长裤的(男生):U * P(Boy) * P(Pants|Boy) + - P(Boy)是男生的概率=60% + - P(Pants|Boy)是条件概率,即在Boy这个条件下穿长裤的概率是多大,这里是100%,因为所有男生都穿长裤 +- 穿长裤的(女生):U * P(Girl) * P(Pants|Girl) + +求解:穿长裤的人里面有多少女生 + +- 穿长裤总数:U * P(Boy) * P(Pants|Boy) + U * P(Girl) * P(Pants|Girl) + +- P(Girl|Pants) = U * P(Girl) * P(Pants|Girl) / 穿长裤总数 + + U * P(Girl) * P(Pants|Girl) / [U * P(Boy) * P(Pants|Boy) + U * P(Girl) * P(Pants|Girl)] + +与总人数有关吗? + +- U * P(Girl) * P(Pants|Girl) / [U * P(Boy) * P(Pants|Boy) + U * P(Girl) * P(Pants|Girl)] +- 容易发现这里与总人数是无关的,可以消去 +- P(Girl|Pants) = P(Girl) * P(Pants|Girl) / [P(Boy) * P(Pants|Boy) + P(Girl) * P(Pants|Girl)] + +- 假设学校里面的总数是U个 +- 穿长裤的(男生):U * P(Boy) * P(Pants|Boy) + - P(Boy)是男生的概率=60% + - P(Pants|Boy)是条件概率,即在Boy这个条件下穿长裤的概率是多大,这里是100%,因为所有男生都穿长裤 +- 穿长裤的(女生):U * P(Girl) * P(Pants|Girl) + +化简: + +- P(Girl|Pants) = P(Girl) * P(Pants|Girl) / [P(Boy) * P(Pants|Boy) + P(Girl) * P(Pants|Girl)] +- 分母其实就是P(Pants) +- 分子其实就是P(Pants,Girl) + +贝叶斯公式 + +- ![1606483124149](assets/1606483124149.png) + +#### 拼写纠正实例: + +- 问题是我们看到用户输入了一个不在字典中的单词,我们需要去猜测:“这个家伙到底真正想输入的单词是什么呢” +- P(我们猜测他想输入的单词|他实际输入的单词) + +用户实际输入的单词记为D (D代表Data,即观测数据) + +- 猜测1:P(h1|D),猜测2:P(h2|D),猜测3:P(h3|D) ... + + 统一为:P(h|D) + +- P(h|D) = P(h) * P(D|h) / P(D) + +- 对于不同的具体猜测h1 h2 h3 ...,P(D)都是一样的,所以在比较P(h1|D)和P(h2|D)的时候我们可以忽略这个常数 + +- P(h|D) = P(h) * P(D|h) + + 对于给定观测数据,一个猜测是好是坏,取决于“这个猜测本身独立的可能性大小(先验概率,Prior)”和“这个猜测生成我们观测到的数据的可能性大小” + +- 贝叶斯方法计算:P(h) * P(D|h),P(h) 是特定猜测的先验概率 +- 比如用户输入tlp,到底是top还是tip?这个时候,当最大似然不能做出决定性的判断时,先验概率就可以插手进来给出指示——“既然你无法决定,那么我告诉你,一般来说top出现的程度要高许多,所以更可能他想打的top” + +#### 垃圾邮件过滤实例: + +- 最大似然:最符合观测数据的(即P(D|h)最大的)最优优势 +- 奥卡姆剃刀:P(h)较大的模型有较大的优势 +- 掷一个硬币,观测到的是“正”,根据最大似然估计的精神,我们应该猜测这枚硬币掷出“正”的概率是1,因为这个才是能最大化P(D|h)的那个猜测 + +- 如果平面上有N个点,近似构成一条直线,但绝不精确地位于一条直线上。这时我们既可以用直线来拟合(模型1),也可以用二阶多项式(模型2)拟合,也可以用三阶多项式(模型3),特别地,用N1阶多项式便能够保证肯定能完美通过N个数据点。那么,这些可能的模型之中到底哪个是最靠谱的呢? +- 奥卡姆剃刀: 越是高阶的多项式越是不常见 + +- + +- P(h+|D) = P(h+) * P(D|h+) / P(D) + + P(h-|D) = P(h-) * P(D|h-) / P(D) +