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的数学本质就是“在每个细胞周围,看看批次有多混杂”。它不关心全局均一性,只关心局部邻居的组成。这正是它比全局指标更灵敏的原因。
你想想看,如果两个批次在全局上均匀分布,但每个细胞周围全是同批次——那全局指标会告诉你“没问题”,但LISI会给出低分,因为它看的是“你身边都是谁”。我做过实验,用全局熵算出来0.99,LISI只有1.2,数据根本没法用。LISI直接把真相拍在你脸上。
所以,记住这个数学链条:局部邻域 → 统计比例 → 逆辛普森指数 → 中位数聚合。以后调参或者解释结果,你心里就有底了。