DeepCTR
DeepCTR copied to clipboard
run_multivalue_movielens.py 的genres变长类别为什么不直接用multi-hot ?
run_multivalue_movielens.py 在处理 genres 用了 VarLenSparseFeat(). 这个做法比直接用genre 的multi-hot array 有什么优势么 ? 程序从数据集得到的单个样本变长标签的最大长度是5. 但是这个不是genre 的类别个数。实际genre的label个数是18. 难道用5维数组输入到模型学习的参数就会少很多么?在实际应用中很难预估最大长度,其上限就应该等于这个 feature 的 len(unique (feature)). 所以直接用multi hot 会对训练和准确度有影响 ?
我也有这个问题,为什么不用multi-hot array而用了VarLenSparseFeat()。而且我还在想combiner会不会损失信息
个人见解是:为了降维;通过嵌入技术,将类别特征降低映射到低维数值向量空间,节省时间、空间,加速计算。但不清楚内部封装的怎么做的,传统word2vector需要文本段,genre还好,但是其他类别特征都一个个单独的,不知道内部怎么转的。
个人观点:我觉得varlen类型的特征一开始不是为了给multihot用的,是为了给din处理序列信息的,只是它顺便还可以简单地代替multihot的功能