Archetypal Analysis 是一種用于數(shù)據(jù)分析的技術(shù),它旨在找出數(shù)據(jù)集中的“極端類型”或“原型”(archetypes),并將每個(gè)數(shù)據(jù)點(diǎn)表示為這些原型的混合或組合。這種方法可以揭示數(shù)據(jù)的潛在結(jié)構(gòu)还棱,尤其是在需要理解數(shù)據(jù)多樣性和極端情況的場景中非常有用撤摸。
數(shù)據(jù)集中的每個(gè)觀測值(如個(gè)體、案例等)被表示為這些原型的加權(quán)組合缸匪。
這種表示揭示了每個(gè)觀測值與不同原型之間的關(guān)系翁狐。
在實(shí)現(xiàn)上,Archetypal Analysis 通常涉及以下步驟:
- 選擇原型數(shù)量:
首先確定要在數(shù)據(jù)中尋找多少個(gè)原型凌蔬。這個(gè)數(shù)目是一個(gè)超參數(shù)露懒,需要根據(jù)數(shù)據(jù)集的特性和分析目的來確定。
- 初始化:
隨機(jī)或使用特定策略選擇原型的初始估計(jì)砂心。
- 迭代優(yōu)化:
使用數(shù)學(xué)優(yōu)化方法(如梯度下降懈词、Frank-Wolfe算法等)迭代地更新原型和數(shù)據(jù)點(diǎn)的表示,以最小化表示誤差计贰。
Frank-Wolfe算法是一種用于解決帶有線性約束的優(yōu)化問題的迭代算法钦睡。在 _updateA 方法中,它被用于更新分配矩陣 A躁倒,這是一個(gè)關(guān)鍵步驟荞怒,用于在模型中確定如何將各個(gè)細(xì)胞分配給不同的SEACells(即archetype)。更新 A 矩陣是為了找到最優(yōu)的細(xì)胞到SEACells的分配秧秉,從而最小化給定目標(biāo)函數(shù)的值褐桌。
def _updateA(self, B, A_prev):
"""Update step for assigment matrix A.
Given archetype matrix B and using kernel matrix K, compute assignment matrix A using constrained gradient
descent via Frank-Wolfe algorithm.
:param B: (n x k csr_matrix) defining SEACells as weighted combinations of cells
:param A_prev: (n x k csr_matrix) defining previous weights used for assigning cells to SEACells
:return: (n x k csr_matrix) defining updated weights used for assigning cells to SEACells
"""
n, k = B.shape
A = A_prev
t = 0 # current iteration (determine multiplicative update)
# precompute some gradient terms
t2 = (self.K @ B).T
t1 = t2 @ B
# update rows of A for given number of iterations
while t < self.max_FW_iter:
# compute gradient (must convert matrix to ndarray)
G = 2.0 * np.array(t1 @ A - t2)
# # get argmins - shape 1 x n
amins = np.argmin(G, axis=0)
amins = np.array(amins).reshape(-1)
# # loop free implementation
e = csr_matrix((np.ones(len(amins)), (amins, np.arange(n))), shape=A.shape)
A += 2.0 / (t + 2.0) * (e - A)
t += 1
return A
Frank-Wolfe 算法通過迭代地選擇一個(gè)方向(在這個(gè)案例中是由 e 指定)并更新當(dāng)前解決方案,逐步優(yōu)化目標(biāo)函數(shù)象迎。在每次迭代中荧嵌,算法評(píng)估當(dāng)前解決方案的質(zhì)量(通過梯度 G),并決定如何改進(jìn)(通過計(jì)算 e 并更新 A)砾淌。這種方法允許算法在遵守給定約束的同時(shí)啦撮,逐步改進(jìn)解決方案,最終找到滿足條件的最優(yōu)或近似最優(yōu)解汪厨。