[发明专利]一种面向硬件实现的GBDT分类模型压缩方法在审
申请号: | 201710892740.4 | 申请日: | 2017-09-27 |
公开(公告)号: | CN107797973A | 公开(公告)日: | 2018-03-13 |
发明(设计)人: | 梅魁志;王晓;吴杰;赵海波;薛建儒;郑南宁;赵英海;高凡 | 申请(专利权)人: | 西安交通大学 |
主分类号: | G06F17/22 | 分类号: | G06F17/22;G06N99/00 |
代理公司: | 西安通大专利代理有限责任公司61200 | 代理人: | 徐文权 |
地址: | 710049 陕*** | 国省代码: | 陕西;61 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 面向 硬件 实现 gbdt 分类 模型 压缩 方法 | ||
技术领域
本发明涉及信息的压缩技术,具体涉及一种面向硬件实现的GBDT分类模型压缩方法,尤其面向资源受限的硬件系统GBDT分类模型压缩。
背景技术
GBDT(Gradient Boosting Decision Tree)由Friedman在1999年提出,是一种由弱学习器组合生成强学习器的算法。该算法由多棵决策树(本发明中为CART树)构成,其结果由所有树的结论累加得到。GBDT泛化能力较强,在回归、分类、排序问题上的应用也十分广泛。然而过大的规模导致其在一些资源受限的硬件系统,诸如FPGA及DSP上的应用受到了一定制约。特别是对于GBDT分类模型在资源受限的硬件实现来说,还存在以下几个问题:
1)现有的GBDT模型保留了所有弱分类器——每一棵CART决策树的原始信息,而没有考虑树本身所携带的冗余信息。
2)现有的GBDT模型中的节点参数多存为int型或float型,而在实际应用过程中对于其的精度要求则并不是很高,因此数据的存储格式也带来了空间的额外占用。
3)现有的GBDT模型主要通过指针索引的方式构建,若利用硬件运行该模型,则会导致每个节点又额外需要两个指针的存储空间,加重了硬件内存的负担。
由于目前对于压缩GBDT模型的研究较少,因此这些问题都亟待解决。
发明内容
本发明的目的在于针对现有技术中的上述问题,提供一种面向硬件实现的GBDT分类模型压缩方法,利用自定义剪枝方法压缩模型结构,利用自定义编码存储模型参数,利用自定义寻址方式构建模型,来有效降低模型的存储空间、减轻硬件压力。
为了实现上述目的,本发明采用的技术方案包括以下步骤:
一、解析OpenCV训练所得GBDT分类模型的xml文件以提取每个节点的深度depth、分叉split、属性var、阈值le以及预测值value的信息;
二、将预测值value近似为整数并对原模型中的每一棵树进行剪枝;
三、按出现顺序排列构成模型的决策树,对每棵树按照深度depth由浅到深的顺序排布其节点,令其根节点位置为零,记录树内所有节点较根节点的相对位置,并据此给出所有非叶子节点的左子节点位置add;叶子节点的左子节点由下一棵树的根节点较当前根节点的相对位置替代;
四、将阈值le转换为整数,并将分叉split、属性var、阈值le、预测值value以及节点位置add编写为定长二进制码;
五、对于每个非叶子节点,按分叉split、属性var、阈值le以及节点位置add的顺序将其数据编为一组码字;对于每个叶子节点,按分叉split、补0、预测值value、节点位置add的顺序将其数据编为一组与非叶子节点等长的码字;而后将节点码字按地址顺序排布成树,并将树按照在原模型中出现的先后次序存入相应类别对应的数组中;
六、利用位运算读取节点编码中存储的分叉split、属性var、阈值le、预测值value以及节点位置add的信息,实现分类模型的重建。
所述第一步中分叉split的取值域为0、1,split=1表示节点处有分叉,split=0表示节点为叶子节点。
所述第二步中剪枝操作剪掉预测值value相同的左右分支。
所述第三步中排布每棵决策树的节点时,若深度depth相同,则左节点在前。
所述第四步中,对阈值le做le=rounddown(le,m)×10m运算将其从浮点数变整数,也即对le保留m位小数再将其扩大10m倍,m取模型所需处理数据的有效小数位数,若有效小数位过多,则在保证准确率的情况下减小m的取值;将预测值value替换为value=value-min(value),避免对value符号的编码;
通过下式计算二进制码的长度:
其中,x表示需要编码的值,length表示编码长度。
所述第五步中,通常每类别节点数目不同,所需存储空间的长度不同,因此为避免浪费,存储数据时采用每类别存入一个一维数组而非所有类别存入一个二维数组的做法。
所述第六步中分类模型的重建方法如下:
首先,将输入数据保留m位小数并将小数点右移m位,m为扩大阈值le时右移的位数;然后,访问第一类别第一棵树的根节点,记其地址为Tadd=0,并通过位运算读取其编码首位分叉split的值并进行下述判别:
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于西安交通大学,未经西安交通大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201710892740.4/2.html,转载请声明来源钻瓜专利网。
- 上一篇:一种城市设计暴雨雨型统计方法
- 下一篇:报表的显示处理方法及网页报表服务器