今天看了老蒋视频 别笑,你和勇哥视频里面那些神人没啥区别, 里面分析勇哥餐饮视频里提到一个观点:

那么高认知和高专业性的人是怎么下判断的呢?他们往往是贝叶斯式的判断。就是他们把各种前提综合考虑,一点点累加,勇哥你看他他连麦的时候怎么看?他先看一眼店名,再看一眼你卖的是什么产品,然后再看一眼装修,有一个大概的初步的判断。然后根据新补充进来的信息,动态去调整他这个判断。

你说你是个餐饮的新兵蛋子,没有经验,啊,他觉得你不太妙,我先给你扣个分。然后呢,你开店思路清晰,调研非常充分,勇哥 get 到了,然后他觉得你不错,又靠谱了一点点。然后勇哥开始放 BGM,让你 360 度转一圈,他看你周围有没有连锁巨头,啊,没有这个雪王来抢生意,你旁边有入住率高的写字楼,挺好,又靠谱了一点。这生意,于是他得出一个基本结论,就是能做。问题不大。鉴宝专家也是类似的……

半夜醒来天降灵感,想到可以利用这个理论去搭一个餐饮业分析模型。辅助想开餐饮店的人,判断这件事是否可行


什么是贝叶斯模型

我们生活在一个概率的世界里面

  • 事情 A 的发生有一个概率
  • 事情 B 发生也有一个概率
  • 在事情 B 发生的前提下,事情 A 的发生也有一个概率,这个概率跟 A 本身发生的概率往往不相等(B 跟 A 越高度相关概率越不一样。如果完全无关,那么这个概率跟 A 自身的概率一样)

老蒋说的贝叶斯式判断,就是积累足够多条件后,形成一个多对一式的条件概率

机器学习里面,有很多很多分类问题是这样的:

给定一个样本,已知它在各个维度拥有什么什么的特征(条件)的情况下,求它(大概率)应该归为哪一类

贝叶斯讲的是什么呢?

现实世界中,往往是这样的:

  • 我们容易:已知一个样本属于哪一类,求它具有哪个特征的概率
  • 我们不易:已知一个样本满足某个特征,求它属于哪一类的概率

在这种情况下,可以用贝叶斯公式化难为易

假设

事件 A = 样本属于第 m 类

事件 B = 样本满足第 n 个特征

那么

P(A|B) = 已知样本满足特征 n 的前提下,它属于第 m 类的概率(难知)

P(B|A) = 已知样本属于第 m 类的前提下,它满足特征 n 的概率(易知)

联立

$$ P(A|B) = \frac{P(AB)}{P(B)} $$

$$ P(B|A) = \frac{P(AB)}{P(A)} $$

得到

$$ P(A|B) = \frac{P(B|A)P(A)}{P(B)} $$

这个公式

  • 左手边就是我们想知道的分类问题的答案
  • 右手边包括 P(B|A), P(A), P(B) 都是容易直接获取的观测值

举例

以经典的垃圾邮件过滤为例:

  • 事件A:这是一封垃圾邮件。
  • 事件B:邮件中包含“促销”、“免费”、“点击链接”等词语(一组特征)。
  • 目标 P(A∣B):在已知邮件包含这些词语的条件下,它是垃圾邮件的概率。
  • 收集

    • P(A):训练集中垃圾邮件的总体比例
    • P(B∣A):在已知是垃圾邮件的样本中,出现这些词语组合的概率
    • P(B):在所有邮件(无论是否垃圾)中,出现这些词语组合的总概率
  • 计算:

    • P(A | B) = P (B | A) P(A) / P(B)

通过计算,我们可以得到“是垃圾邮件”和“不是垃圾邮件”各自的后验概率,并将邮件归类到概率更高的一类。这就是朴素贝叶斯分类器的核心思想


贝叶斯模型在餐饮开店的应用

餐饮开店,结果无外乎成功与失败,把成功看作第一类,失败看作第二类,这是一个二分类问题

我们可以收集这个店的选品,选址,人流分布,人流年龄,周围建筑,开店人等(具体可以看勇哥的所有视频总结归纳)所有特征,视作条件

问题总结为:

  • 事件 A:开店成功
  • 事件 B:选品,选址,人流分布,人流年龄,周围建筑,开店人(一组特征)
  • 目标 P(A | B):在已知该店的各种环境特征和人的特征的条件下,开店成功的概率

现实中,一个店的开店结果就不好收集。为了简化,这里提一个假设:

  • 假设勇哥的判断总是对的,即判断为成功的开店确实成功,判断失败的确实失败

根据假设,问题可近似为对勇哥的判断结果进行预测,即:

想象你就是勇哥,现在网线对面每天都有形形式式的人把他这个店所有信息都发给你,然后你要在脑海里决策判断,把求助者们的店分成两类,一类是成功,一类是失败,然后输出给对面

这样转化还有个好处:解决了数据的来源问题。数据怎么来?实地走访,观察周边的店铺?不不不,勇哥的所有视频本身就是一个巨大的数据集


收集数据

打开 B 站,看勇哥 10 个视频,总结整理他评估开店是否成功时,问过的每一个问题,记下来,然后整理为一个表格,如下:

视频号店铺特征一店铺特征二店铺特征三店铺特征四店铺特征五勇哥判断
BVxxxx 成功
BVxxxx 失败
BVxxxx 成功

根据朴素贝叶斯假设,注意所有归纳的店铺特征不能出现明显的关联

接着,看完所有视频,把表格补充完整。人工当然可以,但 AI 时代有 AI 时代的做法

勇哥 b 站有几百个视频,其中不乏 1 到 2 小时的场视频,都是直播回放,人工去看太容易麻了。不妨借助科技的力量:

  1. 先写爬虫,把他账号的所有视频下载下来
  2. 用 AI 模型(比如:Whisper)为每个视频生成字幕
  3. 把每个视频字幕输入给 Deepseek/ChatGPT,让 AI 仔细“阅读”视频,按格式帮我们把表格完成

更新:特征抽取优化,可以让 AI 先读 10 个视频,抽取每个视频勇哥提到的所有问题记到一个文档,再帮你把特征枚举完整

更新 2:b 站每个勇哥发的视频都有字幕,直接把每个视频的字幕爬下来就行,不用下载视频再语音识别

表格完成,数据就收集完毕


搭建模型

店铺特征可以分为三类,最终都可统一转化为离散型特征

  • 布尔型

    • 如:是否有经验 = 是 / 否
  • 枚举型

    • 如:选品 = 奶茶 / 小吃 / 冒菜 / 早餐 …
  • 数值型

    • 如:开业时间目标人流 = 50、85、120、400 …

数值型特征可通过分箱进行离散化,例如:

  • 将数值除以 50 后四舍五入
  • 得到:目标人流 = 1 / 2 / 2 / 8

经过上述处理后,所有特征均可表示为“有限个枚举值之一”

假设最终选取了 k 个特征,定义

  • X1, X2, … Xk:分别对应店铺的第 1 到第 k 特征
  • 每个特征 Xi,都取值于它所有枚举值组成的集合

$$ X_i ∈ \{ y_{i1}, y_{i2}, ..., y_{in} \} $$

比如:

  • X1:是否有经验,取值于集合 {是,否}
  • X2:选品,取值于 {奶茶,小吃,冒菜,早餐}
  • X3:目标人流分箱,取值 {1, 2, …}

那么,对任意一家店铺,假定收集完它所有表上的特征数据后,它的各项特征为:

$$ X_1 = y_1, X_2 = y_2, ..., X_k = y_k $$

按照朴素贝叶斯公式,可以直接用以下公式判断成功率

$$ P\!\left(A \mid X_1 = y_1, X_2 = y_2, \dots, X_k = y_k\right)=\frac{P(A)\prod_{i=1}^{k} P\!\left(X_i = y_i \mid A\right)}{P\!\left(X_1 = y_1, X_2 = y_2, \dots, X_k = y_k\right)} $$

理论是这样,但实际计算会发现分母计算有些麻烦,可以做一些等价优化

优化一、消除分母

套同样的公式,判断失败率

$$ P\!\left(¬A \mid X_1 = y_1, X_2 = y_2, \dots, X_k = y_k\right)=\frac{P(¬A)\prod_{i=1}^{k} P\!\left(X_i = y_i \mid ¬A\right)}{P\!\left(X_1 = y_1, X_2 = y_2, \dots, X_k = y_k\right)} $$

因为成功率和失败率两者分母是一样的,两者又是互斥事件,所以可以用分子的比例代替计算

成功率等价于

$$ \frac{P(A)\prod_{i=1}^{k} P\!\left(X_i = y_i \mid A\right)}{P(A)\prod_{i=1}^{k} P\!\left(X_i = y_i \mid A\right)+P(¬A)\prod_{i=1}^{k} P\!\left(X_i = y_i \mid ¬A\right)} $$


优化二、对数化

实际计算中,概率值的连乘容易造成数值下溢。比如 0.5, 0.3, 0.07 之类的相乘多次,容易得到 10^-30 这样的小数,可能会被当成 0

所以把小数乘法对数化,算完再用 softmax 复原

$$ \log \text{score}(A) = \log P(A) + \sum_{i=1}^{k} \log P(X_i = y_i \mid A) $$

$$ \log \text{score}(\neg A) = \log P(\neg A) + \sum_{i=1}^{k} \log P(X_i = y_i \mid \neg A) $$

$$ P(A \mid X_1 = y_1, \dots, X_k = y_k) = \frac{e^{\log \text{score}(A)}}{e^{\log \text{score}(A)} + e^{\log \text{score}(\neg A)}} $$


代最终公式

上述对数化的结果,就是最终公式

现在,对任意一家店铺,假定收集完它所有表上的特征数据后,我们可以算

  • P(A):成功样本数 ÷ 总样本数
  • P(¬A):不成功样本数 ÷ 总样本数
  • P(Xi=yi|A):在所有成功样本中,特征 Xi 取值为 yi 的比例(该特征出现在成功案例的几率)
  • P(Xi=yi|¬A):在所有不成功样本中,特征 Xi 取值为 yi 的比例(该特征出现在失败案例的几率)

算完,直接代入最终公式

我们就得到该餐饮店的成功概率


实际验证

把表格打印出来

带上表格,骑车分别到学校,老城区,商业街等各种地点附近转一圈,分别找这些特征的餐饮店

  • 贴上“转租中”的店:认为失败
  • 存活 3 年以上的店(可以用百度地图验证):认为成功

一一把特征收集下来,记到表上(需要问店主的信息,就带上表格伪装成大学生做调查)

数据收集完毕后,套勇哥样本训练出来的模型,看看预测结果跟现实的差距如何。一个良好的结果会是很好的参考。

如果结果不准,还有三种方法:

  • 方法一、其它模型:不用贝叶斯模型,回到数据收集完成后的表格,这是一个标准的二分类问题,玩法可太多了。我们还可以选择其它机器学习方法,AI 算法分析,甚至 LLM 直接喂入勇哥所有视频的字幕微调出一个餐饮开店分析师都可以
  • 方法二、扩大样本:考虑是样本不够多导致判断不准,那就搜集全网所有高质的餐饮开店主题的相关视频,包括网课视频,让 Claude Code 自动完成视频转字幕和字幕信息提取,扩充表格
  • 方法三、实践是检验真理的唯一标准: 考虑网上的餐饮店跟自己住的环境有比较大的差异,考虑数据的收集是不是对的,特征的划分是否合理,等等等等。总之就是承认自己搞出来的东西是错的。以前我总喜欢沉迷于一些有趣但不切实际的理论,这两年的逆向经历教会了我实证精神。我们不必老是成功,大可提出很多失败的假设,只要成功一次就行。关键在于要有检验方法,眼见为实。