本人是初学者一枚,写下笔记分享自己的一些见解,若有错误之处希望各位大神多多海涵,并请指出理解有误的地方,谢谢
贝叶斯算法
已知事件的结果,求事件发生的原因。逆向概率的求解,其中事件结果B,发生的原因为A。通常在B的条件下A发生的概率是比较难求出来的,贝叶斯可以把这个问题转换,因为A条件下B发生的概率是比较好求解的,而且A的概率和B的概率也是知道的。
由概率论可以知道,贝叶斯公式:
例子
假设校园中,男生占60%,女生占40%,其中全部男生穿长裤,一半女生穿长裤一半女生穿裙子。解出迎面走来穿长裤的一个人是女生的概率。
校园总人数U个,是男生概率P(boy)=60%,是女生的概率p(girl)=40%;穿长裤的男生U*p(pants|boy)*p(boy)=U*100%*60%,穿长裤的女生U*p(pants|girl)*p(girl)=U*50%*40%。
需要求的问题是:p(girl|pants)穿长裤的条件下是女生的概率。
现在已知穿长裤的总人数为U*p(pants|boy)*p(boy)+U*p(pants|girl)*p(girl),则问题转换成:
其中发现即使不知道U总人数,也可以计算结果,因为在最后是可以约分消去的,也就是贝叶斯的计算与总人数无关,最终的计算为:
贝叶斯算法在机器学习中的应用
假设用户输入了一个不在字典范围内的单词,去猜想这个用户真正想输入的单词是怎样的?
结果B为:实际输入的单词,参数A为:我们猜想他想输入的单词,根据贝叶斯公式进行转换:
P(我们猜想他想输入的单词)=P(A)属于先验概率,可以通过词频统计出来,假设在字典库中A1出现的概率为a%,A2出现的概率为b%…
P(实际输入的单词|我们猜想他想输入的单词)=P(B|A),想输入一个词,输错的概率有多大,假设本来想输入A1实际却输入为B的概率,本来想输入A2实际却输入为B的概率…
P(实际想输入的单词)=P(B),但是用户输入什么单词都是有可能的,因此P(B)对结果的影响不大,可以去除,最后变成计算:
对于给定的观测数据(也就是实际输入的单词),转换为“猜测这个单词本身可能性的大小”(词频,用到先验概率)以及“猜测的这个词生成观测数据的可能性大小”(设置编辑距离大小,如the写错成tha只把e->a就是一种编辑距离)。
在这里先验概率对结果起很重要的作用,当最大似然不能做出决定性判断的时候,也就是P(B|A1)=P(B|A2)的时候,P(A1)和P(A2)起决定性作用,一般会要求P(A1)>P(A2)。
————————————————————————————————————————
名词解释
最大似然
最符合观测数据的,最有优势的一种可能,似然类似于可能性,也就是P(A|B)的最大值,在B的条件下A最可能发生。
奥卡姆剃刀
越高阶的多项式越不常见。通俗的解释,例如在模型的选择上,平面上有N个点,一阶多项式构成一条线,二阶多项式构成一个弧…而N-1阶多项式可以保证完美通过每N个数据点,但是模型上不会选择这个N-1阶多项式的模型,因为会有过拟合的风险,也就是选择N-1阶多项式的概率P(N-1)会远小于P(1),p(2)。