SEACells 代码学习 (2)

Archetypal Analysis 是一种用于数据分析的技术,它旨在找出数据集中的“极端类型”或“原型”(archetypes),并将每个数据点表示为这些原型的混合或组合。这种方法可以揭示数据的潜在结构,尤其是在需要理解数据多样性和极端情况的场景中非常有用。

数据集中的每个观测值(如个体、案例等)被表示为这些原型的加权组合。
这种表示揭示了每个观测值与不同原型之间的关系。

在实现上,Archetypal Analysis 通常涉及以下步骤:

  1. 选择原型数量:

首先确定要在数据中寻找多少个原型。这个数目是一个超参数,需要根据数据集的特性和分析目的来确定。

  1. 初始化:

随机或使用特定策略选择原型的初始估计。

  1. 迭代优化:

使用数学优化方法(如梯度下降、Frank-Wolfe算法等)迭代地更新原型和数据点的表示,以最小化表示误差。

Frank-Wolfe算法是一种用于解决带有线性约束的优化问题的迭代算法。在 _updateA 方法中,它被用于更新分配矩阵 A,这是一个关键步骤,用于在模型中确定如何将各个细胞分配给不同的SEACells(即archetype)。更新 A 矩阵是为了找到最优的细胞到SEACells的分配,从而最小化给定目标函数的值。

 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 算法通过迭代地选择一个方向(在这个案例中是由 e 指定)并更新当前解决方案,逐步优化目标函数。在每次迭代中,算法评估当前解决方案的质量(通过梯度 G),并决定如何改进(通过计算 e 并更新 A)。这种方法允许算法在遵守给定约束的同时,逐步改进解决方案,最终找到满足条件的最优或近似最优解。

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容