功能命名约定

机器算法验证 符号 特征工程 软件
2022-03-23 08:27:23

我很想知道其他人倾向于将什么视为模型特征或变量的合适命名约定,特别是当它们与它们在软件应用程序中的使用和引用有关时。

例如,给定两个输入:年龄收入,我们可以围绕它们各自原始值的各种转换和离散化构建特征,并以多种方式捕捉它们的相互作用。

意识到我们想让这些名称简洁而具有描述性,以下看起来是否合理?它们是否过于冗长?

  • gt_100k_收入
  • is_missing_income
  • lg10_income
  • ge_20_lt_25_age
  • zscale_age
  • ratio_ln_income_ln_age
  • ...

是否值得尝试(显式或隐式)表示特征值的返回类型?如何命名从 5 个或更多其他功能派生的功能?

2个回答

有很多变量,在某些时候你会想弄清楚什么是什么,如果按字母顺序排列它们是有意义的,这将更容易。您不太可能按照它们是否被记录来对它们进行分组,而不是它们是否在同一个“家庭”中。因此,我将您的示例重新排列为:

gt_100k_income               income_gt_100k
is_missing_income            income_missing
lg10_income                  income_lg10
age_20_lt_25_age             age_ge_20_lt_25
zscale_age                   age_zscale
ratio_ln_income_ln_age       income_ln_over_age_ln

我意识到这与某些软件自动执行的操作(例如 Excel 数据透视表或 Alteryx 摘要)完全相反,但比尔盖茨并非一直都是正确的。

与您的方法保持一致可能比该特定方法更重要。

你让我想到了一种用于特征名称的匈牙利符号。凉爽的。

我喜欢在某些有意义的域类别上按字母顺序排序的功能名称。在您的示例中,我将所有与收入相关的功能都以income_ 开头。

我也喜欢特征名称后缀,它可以清楚地表明该特征可以采用什么样的值。例如,如果特征是二元的,我可以让它以_is 结尾,例如income_missing_is。如果该特征是一个频率计数,它就是一个 _freq,并且您立即知道它永远不会小于零。

如果特征是由某些特殊机制自动生成的,例如第三方软件或某些交叉引用的数据集,则有时在特征名称中很有用。例如,income_census2010_bracket。

您将需要搜索和过滤功能名称,因此请始终使用下划线分隔符和小写标识符,不要使用驼峰式大小写。

冗长通常不是问题。40-60个字符就可以了。