我有一堆数据(自动呼叫中心的通话记录),关于一个人是否购买特定产品,1代表购买,0代表未购买。
我想利用这些数据创建一个估计概率,即一个人购买特定产品的概率,但问题是我可能需要用相对较少的历史数据来完成这个任务,了解有多少人购买/未购买该产品。
一位朋友建议使用贝叶斯概率,通过制定“先验概率分布”来“帮助”您的概率估计,本质上这是关于您在考虑实际数据之前所期望看到的信息。
因此,我想创建一个具有以下签名(Java)的方法:
double estimateProbability(double[] priorProbabilities, int buyCount, int noBuyCount);
priorProbabilities是一个概率数组,用于此方法创建此概率的先验分布。buyCount和noBuyCount是特定产品的实际数据,我希望从中估计出用户购买的概率,考虑到数据和先验概率。该方法将返回一个双精度数值。
我不需要完美的数学解决方案,只需要比均匀或平坦的先验分布更好的解决方案(即probability = buyCount / (buyCount+noBuyCount))。由于我对源代码比数学符号更熟悉,所以我希望人们在解释时使用代码。