ElasticNetOptions {SMRUCC.genomics.Model.Network.Regulons.LinearRegression} .NET clr documentation

ElasticNetOptions

Description

弹性网络(Elastic Net)拟合基因调控网络的参数

弹性网络在最小二乘的损失之上同时加入了 L1 与 L2 惩罚:

 beta = argmin { ||y - X*beta||^2 / (2n) + alpha * [ l1_ratio * ||beta||_1 + (1 - l1_ratio) * ||beta||_2^2 / 2 ] }

其中 L1 项给出稀疏的调控关系,L2 项则在基因高度共线的时候给出分组效应 (相关的基因要么一起被保留、要么一起被剔除),并且允许自变量个数大于样本数量。

Declare

            
# namespace SMRUCC.genomics.Model.Network.Regulons.LinearRegression
export class ElasticNetOptions {
   # 正则化路径的终止比例,即最小的 alpha 等于最大的 alpha 乘以这个比例
   alphaRatio: double;
   # 交叉验证之中每一个 L1 比例下的 alpha 路径步数
   cvAlphaSteps: integer;
   # 交叉验证的折数。样本数量更少的时候会自动收缩到样本数量。
   cvFolds: integer;
   # 交叉验证所搜索的 L1 混合比例网格。 为空的时候使用 ElasticNet 库的默认值(0.1, 0.5, 0.7, 0.9, 0.95, 0.99, 1.0)。
   cvL1Ratios: double;
   # 全局交叉验证模式之下用于估计超参数的代表性基因的数量 (按照表达方差从大到小挑选)
   globalCVReplicates: integer;
   # L1 惩罚所占的混合比例,取值 [0, 1]。
   # 
   # 0 表示纯 Ridge(不会产生稀疏解),1 表示纯 LASSO。 基因表达数据之中存在大量共调控的基因,一般建议取 0.7 附近; 特征数量远大于样本数量的时候可以提高到 0.7~0.9。
   l1Ratio: double;
   # 每一个目标基因允许纳入的最大候选调控因子数量(默认 300)。
   # 
   # 弹性网络本身没有「自变量个数必须小于样本数量」的限制, 因此这里是一个纯粹用于控制内存与计算量的预算: 求解器每一次都会复制一份 n x p 的设计矩阵, 单次拟合的成本与它近似成正比。
   maxCandidates: integer;
   # 坐标下降每一步的最大迭代轮数
   maxIterations: integer;
   # 单个基因模型的 |系数| 之和上限,默认 0(不限制)。
   # 
   # 线性网络做虚拟扰动的时候,如果某一行的 |β| 之和大于 1,级联迭代的谱半径 就可能超过 1,扰动会被指数放大成"全基因组剧烈变化"的假象。 设为 0.9 之后,每一行都是压缩映射(下游变化不会超过上游变化的 0.9 倍), 传播稳定、幅度可控;由于只是按比例缩小系数,R² 与边集都不变。
   maxRowSum: double;
   # 超参数的确定方式,默认为正则化路径选步。
   mode: ElasticNetMode;
   # 正则化路径上面的 alpha 步数(alpha 由大到小排列)
   numberOfAlphas: integer;
   # 坐标下降的收敛容差(系数更新的最大变化量)
   tolerance: double;
}

        

.NET clr type reference tree

  1. use by property member mode: ElasticNetMode

[Package {$package} version {$version} Index]