基于矩阵乘法的特征编码方法、装置、设备及介质与流程

文档序号:21783342发布日期:2020-08-07 20:17阅读:210来源:国知局
基于矩阵乘法的特征编码方法、装置、设备及介质与流程

本发明涉及机器学习技术领域,尤其涉及一种基于矩阵乘法的特征编码方法、装置、设备及介质。



背景技术:

机器学习或深度学习,在训练模型之前,往往需要先对特征进行编码。特征编码一般为为两个步骤:

1.确定特征编码的映射关系,例如分箱字典。

2.根据映射关系,对数据进行编码。这里的数据包括训练数据,也包括海量的新数据。

现有技术通常是通过两层循环遍历的方式,完成数据的编码,具体地,先循环遍历各个特征,再循环遍历各个bin(特征编码的条件),匹配到bin时就返回bin对应的woe值(具体编码值),如果都没有匹配到,返回指定的woe值。

现有技术通过两层循环遍历的进行数据编码的方式运行效率较低,经常需要遍历多个bin之后,才能返回对应的woe值。



技术实现要素:

为了克服现有技术的不足,本发明的目的之一在于提供一种基于矩阵乘法的特征编码方法,其通过对原始数据、编码条件及编码值建立矩阵,并进行逻辑运算,进而得到原始数据对应的编码值。

本发明的目的之一采用以下技术方案实现:

一种基于矩阵乘法的特征编码方法,包括以下步骤:

获取特征编码映射关系及原始数据;

根据所述特征编码映射关系建立编码条件矩阵bk*n和编码值矩阵wk*1,其中,k为所述特征编码映射关系中特征编码条件的数量,n为特征维度;

根据所述原始数据建立原始数据矩阵,其中,m为所述原始数据的数量;

根据所述特征编码映射关系中的编码条件,对所述原始数据矩阵和所述编码条件矩阵进行逻辑运算,得到升维矩阵em*k;

将所述升维矩阵em*k和所述编码值矩阵wk*1进行矩阵乘法运算,得到目标矩阵

将所述目标矩阵转换为特征编码数组。

进一步地,所述特征编码映射关系为分箱字典。

进一步地,根据所述特征编码映射关系建立编码条件矩阵bk*n和编码值矩阵wk*1,其中,k为所述特征编码映射关系中特征编码条件的数量,包括以下步骤:

根据所述特征编码映射关系中的特征数量确定特征维度n,所述特征维度n为一维或二维;

根据所述特征维度建立编码条件矩阵bk*n和编码值矩阵wk*1;其中,k为所述特征编码条件的数量。

进一步地,根据所述特征维度建立编码条件矩阵bk*n,还包括以下步骤:

根据所述特征编码映射关系得到特征切割点:cutoff[c1,c2,……,ck-1];

根据所述特征切割点建立编码条件矩阵bk*n,所述编码条件矩阵bk*n包括b1,b2两部分:

其中,为所述编码条件的起始值,为所述编码条件的终止值。

进一步地,根据所述特征编码映射关系中的编码条件,对所述原始数据矩阵和所述编码条件矩阵进行逻辑运算,得到升维矩阵em*k,包括以下步骤:

将所述原始数据矩阵与所述编码条件矩阵b1和b2进行比较运算;其中,所述比较运算根据所述特征编码映射关系中的编码条件进行,当所述编码条件为左闭右开区间时,所述比较运算为,反之,所述比较运算为

计算所述原始数据矩阵和b1的比较运算结果及所述原始数据矩阵和b2的比较运算结果的交集,得到所述升维矩阵em*k。

进一步地,将所述升维矩阵em*k和所述编码值矩阵wk*1进行矩阵乘法运算,得到目标矩阵,包括以下步骤:

将所述升维矩阵em*k中转换为稠密矩阵;

将转换后的所述升维矩阵em*k与编码值矩阵wk*1进行矩阵乘法,得到目标矩阵

进一步地,将所述升维矩阵em*k和所述编码值矩阵wk*1进行矩阵乘法运算,得到目标矩阵,包括以下步骤:

根据等价公式计算所述升维原始数据矩阵em*k与编码值矩阵wk*1的结果,所述等价公式为:,其中,为目标矩阵,为目标矩阵在x,y位置的数值。

本发明的目的之二在于提供一种基于矩阵乘法的特征编码装置,其通过对原始数据、编码条件及编码值建立矩阵,并进行逻辑运算,进而得到原始数据对应的编码值。

本发明的目的之二采用以下技术方案实现:

一种基于矩阵乘法的特征编码装置,其包括:

获取模块,用于获取特征编码映射关系及原始数据;

矩阵构建模块,用于根据所述特征编码映射关系建立编码条件矩阵bk*n和编码值矩阵wk*1,其中,k为所述特征编码映射关系中特征编码条件的数量;并根据所述原始数据建立原始数据矩阵,其中,m为所述原始数据的数量,n为特征维度;

计算模块,用于根据所述特征编码映射关系中的编码条件,对所述原始数据矩阵和所述编码条件矩阵进行逻辑运算,得到升维矩阵em*k;将所述升维矩阵em*k和所述编码值矩阵wk*1进行矩阵乘法运算,得到目标矩阵,并将所述目标矩阵转换为特征编码数组。

本发明的目的之三在于提供执行发明目的之一的电子设备,其包括处理器、存储介质以及计算机程序,所述计算机程序存储于存储介质中,所述计算机程序被处理器执行时实现上述的基于矩阵乘法的特征编码方法。

本发明的目的之四在于提供存储发明目的之一的计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现上述的基于矩阵乘法的特征编码方法。

相比现有技术,本发明的有益效果在于:

本发明通过建立原始数据、编码条件及编码值的矩阵,并根据编码条件进行矩阵的逻辑运算,进而快速得到原始数据对应的编码值,无需进行两层循环遍历,大大加快了计算机的运算效率。

附图说明

图1是实施例一的基于矩阵乘法的特征编码方法的原理图;

图2是实施例一的矩阵构建方法的流程图;

图3是实施例一的逻辑运算方法的流程图;

图4是实施例三的基于矩阵乘法的特征编码装置的结构框图;

图5是实施例四的电子设备的结构框图。

具体实施方式

以下将结合附图,对本发明进行更为详细的描述,需要说明的是,以下参照附图对本发明进行的描述仅是示意性的,而非限制性的。各个不同实施例之间可以进行相互组合,以构成未在以下描述中示出的其他实施例。

实施例一

实施例一提供了一种基于矩阵乘法的特征编码方法,旨在通过特征编码条件,进行矩阵乘法,进而快速得到编码值。

请参照图1所示,一种基于矩阵乘法的特征编码方法,包括以下步骤:

s110、获取特征编码映射关系及原始数据;

上述的特征编码映射关系为表示编码条件与编码值的映射关系,本实施例中选用分箱字典,当然,在其他实施例中特征映射关系也可以是其他形式的表现方式,本实施例中分箱字典的形式表现为:{bin1:woe1,bin2,woe2...},bin为编码条件,woe为编码条件对应的编码值,例如一个年龄分箱字典,[15,20):woe1,[20,35):woe2,表示如果年龄介于15和20岁之间,替换为woe1,介于20和35岁之间,则替换为woe2。

s120、根据所述特征编码映射关系建立编码条件矩阵bk*n和编码值矩阵wk*1,其中,k为所述特征编码映射关系中特征编码条件的数量,n为所述编码条件的维度;

由于编码值是一维数据,所以编码值矩阵为k*1的矩阵,编码条件则可能是多维数组,因此其矩阵维度需要根据编码条件的数组维度确定,以一维数组的编码条件为例,编码字典为:[15,20):woe1,[20,35):woe2,则编码条件和编码值的数量都为2,编码条件矩阵为b2*1,编码值矩阵为w2*1。

具体地,请参照图2所示,根据所述特征编码映射关系建立编码条件矩阵bk*n和编码值矩阵wk*1,其中,k为所述特征编码映射关系中特征编码条件的数量,包括以下步骤:

s1201、根据所述特征编码映射关系中的特征数量确定特征维度n,所述特征维度n为一维或二维;

值得注意的是,本实施例主要是针对特征维度为一维或二维的数据进行的,特征维度为一维时,对应的原始数据也为一维,特征维度为二维时,对应的原始数据则为二维。

s1202、根据所述特征维度建立编码条件矩阵bk*n和编码值矩阵wk*1;其中,k为所述特征编码条件的数量。

其中,根据所述特征维度建立编码条件矩阵bk*n,还包括以下步骤:

根据所述特征编码映射关系得到特征切割点:cutoff[c1,c2,……,ck-1];

根据所述特征切割点建立编码条件矩阵bk*n,所述编码条件矩阵bk*n包括b1,b2两部分:

其中,为所述编码条件的起始值,为所述编码条件的终止值。

需要说明的是,当编码条件为二维数据的编码条件时,为一个二维起始值,为二维终止值。

本实施例中以年龄分箱字典为例对s1201和s1202步骤进行说明,年龄特征字典如下:

{(-inf,15):woe1,[15,20):woe2,[20,35):woe3,[35,inf):woe4}

因为特征只有年龄,所以特征数量为1,因此分箱维度为一维;该分箱字典中有4个编码条件和4个编码值,因此k为4;其对应的特征切割点cutoff为[15,20,35],即上述步骤中的cutoff[c1,c2,ck-1],为编码条件的起始值,即-inf,为所述编码条件的终止值,即inf。

编码值矩阵wk*1就为:

编码条件矩阵就为:

当编码条件为二维时,以一个年龄和身高组成的二维特征字典为例,特征字典如下所示:

{(-inf,20),(-inf,170):woe1,

(-inf,20),[170,inf):woe2[20,inf),(-inf,170):woe3,

[20,inf),[170,inf):woe4};

编码条件矩阵就为:

s130、根据所述原始数据建立原始数据矩阵,其中,m为所述原始数据的数量;

本实施例中构建的原始数据矩阵也为仅有一列的矩阵,这样可以便于后续计算更快捷。

s140、根据所述特征编码映射关系中的编码条件,对所述原始数据矩阵和所述编码条件矩阵进行逻辑运算,得到升维矩阵em*k;

上述的逻辑运算指的是根据编码条件进行的逻辑运算,以便于筛选出符合编码条件的原始数据,升维矩阵em*k是一个稀疏矩阵,m*k表示了该矩阵的大小,该矩阵的行数等同于原始数据的数量,该矩阵的列数等同于编码条件的数量;该矩阵中仅有非空元素“1”和空元素,例如如下所示根据四个编码条件得到的升维原始数据矩阵:

其中,“1”就表示原始数据符合编码条件,空元素处表示不符合编码条件处,等同于编程语言中的“true”和“false”,例如第一行第一列的“1”就表示:第一个原始数据符合第一个编码条件,第二行第三列的“1”就表示第二个原始数据符合第三个编码条件。

具体地,逻辑运算可以分为两步进行,先将原始数据和编码条件矩阵做比较运算,再做交集运算;请参照图3所示,根据所述特征编码映射关系中的编码条件,对所述原始数据矩阵和所述编码条件矩阵进行逻辑运算,得到升维矩阵em*k,包括以下步骤:

s1401、将所述原始数据矩阵与所述编码条件矩阵b1和b2进行比较运算;其中,所述比较运算根据所述特征编码映射关系中的编码条件进行,当所述编码条件为左闭右开区间时,所述比较运算为,反之,所述比较运算为

s1402、计算所述原始数据矩阵和b1的比较运算结果及所述原始数据矩阵和b2的比较运算结果的交集,得到所述升维矩阵em*k。

通过上述步骤可以总结出升维矩阵em*k=或em*k=

以s1202中的年龄特征字典为例,假设接收到的原始数据为{12,28,21,32,16……},则原始数据矩阵为:

则,

s150、将所述升维矩阵em*k和所述编码值矩阵wk*1进行矩阵乘法运算,得到目标矩阵

在做矩阵乘法运算时,因为s140得到的升维矩阵是稀疏矩阵,因此其中有很多空元素,为了便于矩阵乘法运算,防止由于空元素的存在导致计算错误,因此需要将稀疏矩阵转换成稠密矩阵,具体地,将所述升维矩阵em*k和所述编码值矩阵wk*1进行矩阵乘法运算,得到目标矩阵,包括以下步骤:

将所述升维矩阵em*k中转换为稠密矩阵;

将转换后的所述升维矩阵em*k与编码值矩阵wk*1进行矩阵乘法,得到目标矩阵

上述稠密矩阵的转换过程本实施例中通过矩阵的补零操作完成,即,对空元素处进行补零。当然,在实际应用中,也可以通过其他转换方式。

s150步骤以s140中得到的升维矩阵为例,通过升维矩阵em*k与编码值矩阵wk*1进行矩阵乘法,实现升维矩阵的降维操作,进而得到原始数据对应的编码值,具体过程如下所示:

需要说明的是,上述实施例对一维原始数据及一维特征维度进行了举例说明,对于二维原始数据及二维特征的计算,只需将公式中的n替换为2,并进行计算即可得到目标矩阵。

s160、将所述目标矩阵转换为特征编码数组。

矩阵转换为数组的具体过程是常规的现有技术,本实施例不对此作过多赘述,上述得到的特征编码数组为一个和原始数据一一对应的数组,以本实施例中的原始数据{12,28,21,32,16……}为例,则特征编码数组为{woe1,woe3,woe3,woe3,woe2}。

实施例二

实施例二主要对实施例一中将升维矩阵和编码值矩阵进行矩阵乘法运算的另一种方法进行了解释和说明。

实施例一中通过补零操作计算目标矩阵的方法主要应用于单机运行环境,当运行环境为大型分布式环境时,为了节约计算成本和存储成本,可以只对升维原始数据矩阵中有“1”的位置进行计算。

具体地,将所述升维原始数据矩阵和所述编码值矩阵进行矩阵乘法运算,得到目标矩阵,包括以下步骤:

根据等价公式计算所述升维原始数据矩阵em*k与编码值矩阵wk*1的结果,所述等价公式为:,其中,为目标矩阵,为目标矩阵在x,y位置的数值。

通过以上的等价法,无需对升维矩阵的空元素处填充0就可以直接计算出目标矩阵,提高了计算效率。

实施例三

实施例三公开了一种对应上述实施例的基于矩阵乘法的特征编码方法对应的装置,为上述实施例的虚拟装置结构,请参照图4所示,包括:

获取模块210,用于获取特征编码映射关系及原始数据;

矩阵构建模块220,用于根据所述特征编码映射关系建立编码条件矩阵bk*n和编码值矩阵wk*1,其中,k为所述特征编码映射关系中特征编码条件的数量;并根据所述原始数据建立原始数据矩阵,其中,m为所述原始数据的数量;

计算模块230,用于根据所述特征编码映射关系中的编码条件,对所述原始数据矩阵和所述编码条件矩阵进行逻辑运算,得到升维矩阵em*k;将所述升维矩阵em*k和所述编码值矩阵wk*1进行矩阵乘法运算,得到目标矩阵,并将所述目标矩阵转换为特征编码数组。

优选地,所述特征编码映射关系为分箱字典。

实施例四

图5为本发明实施例四提供的一种电子设备的结构示意图,如图5所示,该电子设备包括处理器310、存储器320、输入装置330和输出装置340;计算机设备中处理器310的数量可以是一个或多个,图5中以一个处理器310为例;电子设备中的处理器310、存储器320、输入装置330和输出装置340可以通过总线或其他方式连接,图5中以通过总线连接为例。

存储器320作为一种计算机可读存储介质,可用于存储软件程序、计算机可执行程序以及模块,如本发明实施例中的特征编码性能优化方法对应的程序指令/模块(例如,基于矩阵乘法的特征编码方法装置中的获取模块210、矩阵构建模块220和计算模块230)。处理器310通过运行存储在存储器320中的软件程序、指令以及模块,从而执行电子设备的各种功能应用以及数据处理,即实现上述实施例一和实施例二的基于矩阵乘法的特征编码方法。

存储器320可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序;存储数据区可存储根据终端的使用所创建的数据等。此外,存储器320可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他非易失性固态存储器件。在一些实例中,存储器320可进一步包括相对于处理器310远程设置的存储器,这些远程存储器可以通过网络连接至电子设备。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。

输入装置330可用于接收输入的用户身份信息、特征编码映射关系以及原始数据等。输出装置340可包括显示屏等显示设备。

实施例五

本发明实施例五还提供一种包含计算机可执行指令的存储介质,该存储介质可用于计算机执行基于矩阵乘法的特征编码方法,该方法包括:

获取模块,用于获取特征编码映射关系及原始数据;

矩阵构建模块,用于根据所述特征编码映射关系建立编码条件矩阵bk*n和编码值矩阵wk*1,其中,k为所述特征编码映射关系中特征编码条件的数量;并根据所述原始数据建立原始数据矩阵,其中,m为所述原始数据的数量,n为特征维度;

计算模块,用于根据所述特征编码映射关系中的编码条件,对所述原始数据矩阵和所述编码条件矩阵进行逻辑运算,得到升维矩阵em*k;将所述升维矩阵em*k和所述编码值矩阵wk*1进行矩阵乘法运算,得到目标矩阵

当然,本发明实施例所提供的一种包含计算机可执行指令的存储介质,其计算机可执行指令不限于如上所述的方法操作,还可以执行本发明任意实施例所提供的基于矩阵乘法的特征编码方法中的相关操作。

通过以上关于实施方式的描述,所属领域的技术人员可以清楚地了解到,本发明可借助软件及必需的通用硬件来实现,当然也可以通过硬件实现,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如计算机的软盘、只读存储器(read-onlymemory,rom)、随机存取存储器(randomaccessmemory,ram)、闪存(flash)、硬盘或光盘等,包括若干指令用以使得一台电子设备(可以是手机,个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。

值得注意的是,上述基于基于矩阵乘法的特征编码方法装置的实施例中,所包括的各个单元和模块只是按照功能逻辑进行划分的,但并不局限于上述的划分,只要能够实现相应的功能即可;另外,各功能单元的具体名称也只是为了便于相互区分,并不用于限制本发明的保护范围。

对本领域的技术人员来说,可根据以上描述的技术方案以及构思,做出其它各种相应的改变以及形变,而所有的这些改变以及形变都应该属于本发明权利要求的保护范围之内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1