数学分析和ML调参

对于zenfs运用数学分析和ML进行调参

方案一 基于方差的方法判定参数重要性

参考论文:Carver: Finding Important Parameters for Storage System Tuning

流程:

1. 首先根据PI系数计算出最重要的参数,PI系数根据方差给出定义:

$$ Var(S)=\frac{1}{|S|} \sum_{i=1}^{|S|}(y_i-μ)^2 $$

$$ PI(P)=Var(S)-\sum_{i=1}^N\frac{S_{P=P_i}}{S}Var(S_{P=p_i}) $$

这里PI系数越大,由于Var(S)是个常数,PI系数的后一项是当参数中的P取不同值时将S拆分成子集,获得这些子集的方差加权而成,如果后半部分越小,说明P这个参数的影响力越大,也就是说当PI系数大时,参数P是重要的参数。因此第一步选出这里最大的作为最重要的调参参数。

2. 再用固定之前选定参数的方式选择最重要参数,给出了条件参数重要性的公式如下所示:

$$ CPI(Q|P=p)=Var(S_{P=p})-\sum_{j=1}^m\frac{|S_{Q=w_j,P=p|}}{S_P=p}Var(S_{Q=q_j|P=p}) $$

对于所有P中的取值,选择其中最大的作为CPI指数: $$ CPI(Q|P)=\mathop{\max}_{i=1}^nCPI(Q|p=p_i) $$ 选择下一个最大值的参数作为次重要参数。

3. 停止条件

停止的方案有两种:

  • 当选择的参数到了一定个数

  • CPI指数已经降低到一定阈值以下,说明剩余的参数对于目标而言影响不大

现存问题

  • 确定调参的参数是哪些
  • 数据集如何收集,论文中提到了数据集训练了4年,虽然拉丁超采样可以让我们只需要部分数据集,但是这仍然是个问题
  • 如何测试调参的效果