build_tree.md 1.5 KB
Newer Older
S
seiriosPlus 已提交
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19


wget https://paddlerec.bj.bcebos.com/utils/tree_build_utils.tar.gz --no-check-certificate

# input_path: embedding的路径
# emb_shape: embedding中key-value,value的维度
# emb格式要求: embedding_id(int64),embedding(float),embedding(float),......,embedding(float)
# cluster_threads: 建树聚类所用线程
python_172_anytree/bin/python -u main.py --input_path=./gen_emb/item_emb.txt --output_path=./ --emb_shape=24 --cluster_threads=4

建树流程是:1、读取emb -> 2、kmeans聚类 -> 3、聚类结果整理为树 -> 4、基于树结构得到模型所需的4个文件
    1    Layer_list:记录了每一层都有哪些节点。训练用
    2    Travel_list:记录每个叶子节点的Travel路径。训练用
    3    Tree_Info:记录了每个节点的信息,主要为:是否是item/item_id,所在层级,父节点,子节点。检索用
    4    Tree_Embedding:记录所有节点的Embedding。训练及检索用

注意一下训练数据输入的item是建树之前用的item id,还是基于树的node id,还是基于叶子的leaf id,在tdm_reader.py中,可以加载字典,做映射。
用厂内版建树得到的输出文件夹里,有名为id2nodeid.txt的映射文件,格式是『hash值』+ 『树节点ID』+『叶子节点ID(表示第几个叶子节点,tdm_sampler op 所需的输入)』
在另一个id2bidword.txt中,也有映射关系,格式是『hash值』+『原始item ID』,这个文件中仅存储了叶子节点的信息。