4、LISI的数学原理:熵、辛普森指数与局部邻域

说实话,我最初接触LISI时,第一反应是——“这玩意儿背后到底是怎么算的?”

很多人只把它当成一个黑盒指标,跑完代码看一眼数字就完事。但我觉得,搞数据的人得懂一点数学底子,否则你根本不知道阈值设多少合理,也不知道结果到底在说啥。

今天咱们就把LISI的数学骨架拆开。说白了,就是三个东西:熵、辛普森指数、局部邻域。我把它们串起来,你看看是不是很简单。

4.1 先从熵说起

熵这个概念,最早来自热力学。但香农把它借到信息论里,用来衡量“混乱程度”。

公式长这样:

H = - Σ p_i * log(p_i)

其中 p_i 是第 i 类出现的概率。如果所有样本全是一类,p_i=1,H=0,非常纯。如果均匀分布在很多类里,H就大,说明混乱。

举个例子:

  • 纯批次A:p_A=1,H=0
  • 均匀混合批次A和B:p_A=0.5,p_B=0.5,H=0.693
  • 10个批次均匀混合:H=2.302

你看,H越大,混合程度越高。LISI利用的就是这个性质。

核心点:LISI把熵当作“混合度”的量化工具。一个邻域内批次越混杂,熵越高,说明批次效应越小。

4.2 辛普森指数——生态学家的智慧

辛普森指数本来用来衡量物种多样性。公式是:

λ = Σ p_i²

如果只有一种物种,λ=1。如果种数很多且均匀,λ趋近于0。

嗯,这个指标跟熵有点像,但方向相反。熵越大越混杂,辛普森指数越小越混杂。

LISI用的是逆辛普森指数(1/λ),这样数值越大代表混合越好。我习惯叫它“有效批次数目”——可以理解为:在一个邻域里,你大概能数出多少个批次的“有效数量”。

概念公式范围LISI中的含义
香农熵H = -Σ p_i log(p_i)[0, log(N)]批次混合度,越高越混杂
辛普森指数λ = Σ p_i²[1/N, 1]批次单一性,越高越纯
逆辛普森指数1/λ = 1/Σ p_i²[1, N]有效批次数目,LISI值的来源

个人经验:我早期用LISI时,直接拿原始辛普森指数画图,结果数值全堆在0.2-0.8之间,根本看不出差异。后来改用逆辛普森,才把批次混合度展开到1到N的尺度上。这个转换非常实用。

4.3 局部邻域——LISI的核心思想

现在你知道了指数是什么。但怎么应用到单细胞数据上?

LISI的做法是:对每个细胞,找出它在降维空间(比如UMAP、PCA)里的局部邻域——说白了,就是离它最近的K个邻居。

然后在这个邻域内,统计各批次的占比。再把这个占比代入逆辛普森指数,算出这个细胞的“局部有效批次数目”。

这样每个细胞都有一个LISI值:

  • iLISI(批次混合版):按批次标签计算比例,衡量批次混合程度。值越大,说明这个细胞周围批次混合得越好。
  • cLISI(细胞类型版):按细胞类型计算比例,衡量细胞类型保留程度。值越小,说明这个细胞周围都是同一类,即生物结构保留得好。

避坑指南:我曾经犯过一个典型错误——忘了对每个细胞单独算邻域。我以为可以直接在全局算个辛普森指数完事。结果发现全局混合度很高,但局部其实都是同批次扎堆。LISI的精髓恰恰在于局部,别把它当全局指标用。

4.4 从局部到全局:LISI公式

把上面的东西合到一块,公式就出来了:

对于细胞i:
  1. 找到它的K个最近邻(在嵌入空间中)
  2. 统计邻域中各批次的比例 p_{i1}, p_{i2}, ..., p_{iM}
  3. 计算逆辛普森指数:
     LISI_i = 1 / Σ p_{ij}²
  4. 对所有细胞的LISI_i求中位数 → 整体LISI得分

整体LISI得分就是所有细胞局部指标的中位数。我个人比较偏爱用中位数而不是均值,因为它对离群点不敏感。有时候批次效应只在少数细胞上特别严重,中位数能反映“大多数细胞的情况”。

下面这个图把流程走一遍,你一看就明白:

LISI计算流程 PCA / UMAP 嵌入 K近邻搜索 邻域内批次比例 p_j LISI_i = 1/Σp_j² 整体得分 = median(LISI_i) 注意:iLISI用批次标签,cLISI用细胞类型标签,其余步骤一样

关键理解:LISI的数学本质就是“在每个细胞周围,看看批次有多混杂”。它不关心全局均一性,只关心局部邻居的组成。这正是它比全局指标更灵敏的原因。

你想想看,如果两个批次在全局上均匀分布,但每个细胞周围全是同批次——那全局指标会告诉你“没问题”,但LISI会给出低分,因为它看的是“你身边都是谁”。我做过实验,用全局熵算出来0.99,LISI只有1.2,数据根本没法用。LISI直接把真相拍在你脸上。

所以,记住这个数学链条:局部邻域 → 统计比例 → 逆辛普森指数 → 中位数聚合。以后调参或者解释结果,你心里就有底了。