在机器学习许多算法里面经常用到的一个建模技巧就是假定某个数据服从某个概率分布。每个概率分布都有一个概率分布函数,输入样本值概率分布函数输出当前这个样本属于某个类的概率。而任何概率分布函数都会存在未知参数,不同数据要取不同的参数。比如逻辑回归,它就认为概率分布函数长的像这样,输入样本值x,输出x属于标签为1的那个类的概率。未知参数是w和b,不同数据w和b是要取不同的值。逻辑回归要做的是根据不同数据自适应的调整w和b的值。那么概率分布函数一定要用{sigmoid(wx+b)}sigmoid(wx+b)吗?肯定不是,我们可以自己设计各种概率分布函数(只要值域在0~1
之间,因为概率是0~1
之间),比如我可以设计新的算法,它的概率分布函数为把它命名为Ai酱回归算法
。如果你设计了一种新的概率分布函数用在某种数据效果还不错,那么“恭喜你创造了一种新的算法”。从这可以看出,我们了解常见的概率分布函数对于理解机器学习各种算法和算法中的待求解参数的意义是非常重要的。而且我们还可以根据这些现有的概率分布函数来发明我们自己的算法。
均匀分布
这种概率分布函数输入任何样本值x,输出这个样本属于某个类的概率都是一个常数。换句话说就是任何样本属于任何一个类的概率相等。比如有一个算法,你问你刚刚摇的骰子点数是x,那么x是6(即p(x=6))的概率是多少。它会告诉你x=6和x是2(即p(x=2))的概率都是一样的是。用公式表示就是:
其中c是一个属于0~1的常数。均匀分布概率分布函数它待求解的参数是。不同数据c的取值不同。比如抛硬币这种数据,摇骰子这种数据。
伯努利分布
其实伯努利分布这种分布描述的是只有两种事件发生下的概率分布。比如事件0和事件1。那这个和机器学习有什么关系呢?比如输入一个样本x,如果那么就是事件1发生,如果样本那么就是事件0发生。现在机器学习要做的事是输入一个样本x,输出这个样本到底属于哪个类。那么我们只需要比较事件0()发生和事件1()发生这两个概率哪个大,算法就认为x属于哪个类。这两种事件发生的概率分布可以用一个分段函数表示(表示事件1发生,表示事件0发生,f(x)表示样本x):
然后数学家们觉得用分段函数表示很不爽,想把他们合并。然后合并后就变成了下面这个样子:
,当x=1时后面那个项为1(因为1-x=0,那么有),同理当x=0时前面那个项为1。
二项分布
β分布(Beta)
高斯分布(Gaussian)
下面是一个二维的高斯分布(又叫做正态分布)。该概率分布函数的输入是(x,y)也就是下面那个图蓝色的点,这个输入对应的概率是p(x,y)。