组稀疏(Group Sparsity)是一种正则化策略用于在高维数据的特征选择中识别和利用特征之间的结构信息

在处理数据时,组稀疏假设数据特征不是独立的,而是按照一定结构组织成组,每个组内的特征要么一起被选中,要么一起被排除。

这种策略特别适用于数据中存在自然的特征群组的情况,例如图像中的像素块、基因表达数据中的基因簇等。

组稀疏通常结合L2范数(欧氏范数)组内部使用,而L1范数在组之间使用
具体来说,在组稀疏的正则化项中,首先对每组内的特征计算L2范数,再对这些L2范数求和最后得到L1范数,也就是L2,1范数。这种组合的正则化形式可以促进特征选择,使模型倾向于选择完整的特征组而非单一特征。

组稀疏模型引入到子空间学习中,使其达到特征选择的目的,同时确保了因子矩阵的稀疏性

组稀疏的公式

假设我们有一个特征矩阵 什么是组稀疏?_数据,其中( m )是特征数量,( k )是组的数量。对于矩阵( U ),每行 什么是组稀疏?_算法_02 代表一组特征,( j = 1, 2, …, k )。组稀疏的L2,1范数正则化项可以表示为:

什么是组稀疏?_数据_03

其中,什么是组稀疏?_数据_04 是第( j )组特征的L2范数。

举例说明

假设我们有以下的特征矩阵( U ):

什么是组稀疏?_正则化_05

特征矩阵( U )包含三组特征,每组由一行向量表示。现在我们要计算这个矩阵的组稀疏L2,1范数正则化项。

对于第一组特征(第一行):
什么是组稀疏?_算法_06

对于第二组特征(第二行):
什么是组稀疏?_机器学习_07

对于第三组特征(第三行):
什么是组稀疏?_正则化_08

组稀疏L21范数正则化项为:
什么是组稀疏?_正则化_09

接下来,让我们计算具体的数值。

import numpy as np

# 计算每一组特征的L2范数
l2_norm_group1 = np.linalg.norm(np.array([1, 0.5, 0]))
l2_norm_group2 = np.linalg.norm(np.array([2, 0, 3]))
l2_norm_group3 = np.linalg.norm(np.array([0, 1, 4]))

# 组稀疏L21范数正则化项
group_sparsity = l2_norm_group1 + l2_norm_group2 + l2_norm_group3

l2_norm_group1, l2_norm_group2, l2_norm_group3, group_sparsity

(1.118033988749895, 3.605551275463989, 4.123105625617661, 8.846690889831546)
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.