具体实施方式
在本申请实施例中,预先建立包含各特征变量的变量池,并且该变量池中的各特征变量均是唯一的,在接收到建立模型的请求时,可以通过该建立模型请求中的模型需求信息,在该变量池中选择若干特征变量,并根据选择的若干特征变量,生成模型,通过该模型进行数据处理。可见本申请所述的方法,各进行数据处理的模型无需将所需的特征变量存储于自身的存储空间内,而只需从该特征变量池中选择所需的特征变量即可,使得进行数据处理的资源耗费大大降低,并且可以提高数据处理的效率。
为使本申请的目的、技术方案和优点更加清楚,下面将结合本申请具体实施例及相应的附图对本申请技术方案进行清楚、完整地描述。显然,所描述的实施例仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
图1为本申请实施例提供的数据处理过程,其中,该方法需要预先建立包含各特征变量的变量池,并且该变量池中的每个特征变量均是唯一的。并且,该特征变量可包含:变量标识、变量描述、变量类型、线上计算脚本以及离线计算脚本,例如,一个用于描述用户在最近5天内的活跃程度的特征变量,可如表1所示。
变量标识 |
Code_0001 |
变量描述 |
账户最近5天的信息浏览次数 |
变量类型 |
基础变量 |
线上计算脚本 |
该特征变量的线上采集方式以及转换方式 |
离线计算脚本 |
该特征变量的离线采集方式以及转换方式 |
表1
其中,变量标识使得在建立模型时可以根据该变量标识调用该特征变量、变量描述作为该特征变量的内容描述使工作人员可以了解该特征变量、变量类型用于后续计算时确定该特征变量的计算顺序、线上计算脚本为线上计算该特征变量的值的方式、离线计算脚本为离线计算该特征变量的值的方式。
另外,该变量池中的特征变量也可根据需求添加、删减以及变更。
于是,图1提供的数据处理过程,具体包括以下步骤:
S101:接收建立模型的请求,其中所述建立模型请求中包含模型需求信息。
在本申请实施例中,由于现有数据处理方法为,根据数据处理的需求,预先建立对应的数据处理模型,而用于数据处理的服务器则通过该数据处理模型处理数据,所以该用于数据处理的服务器在进行数据处理之前,需要先接收建立模型的请求。
其中,该建立模型的请求中包含模型需求信息,即,数据处理的需求,以便后续可以根据该模型需求信息建立对应的模型,并进行数据处理。其中,该需求信息可以是由若干条件信息组成的,如,风险控制模型的需求信息为:异常账户识别正确率达到90%以及识别所需时间少于50ms,或者推送信息模型的需求信息为:推荐信息被点击率高于60%以及推荐信息周期为1天等等。当然,在本申请中所述的模型需求信息也可是其他形式的信息,如,要求该模型由指定特征变量组成,并且可以到达要求的效果等等,本申请对此并不做具体限定。
进一步的,由于进行数据处理和建立模型这两个过程是可以分开进行的,所以具体用于数据处理的服务器和建立模型的服务器可以不是同一台设备,于是,接收到该建立模型请求的服务器也可以是用于建立模型的服务器。则此时,可以将该数据处理服务器以及建立模型服务器视为一个数据处理系统,即,在该数据处理系统中,该建立模型服务器专门生成模型,而该数据处理服务器则根据通过该建立模型服务器建立的模型进行数据处理。以下,仅以接收建立模型的请求为数据处理系统为例进行说明。
另外,无论是数据处理服务器接收该建立模型请求,还是该数据处理系统中的建立模型服务器接收该建立模型请求,该服务器中均包含该预先建立的变量池,使得该服务器在接收到该建立模型的请求后,可以通过该变量池继续执行后续的步骤。但是,为了使特征变量不会出现重复,所以在本申请中可仅存在一个变量池,即无论是该进行数据处理的服务器还是该用于建立模型的服务器,均可使用、拥有同一个变量池,如此也可方便在数据处理时对该变量池的管理。当然,该变量池存储于数据处理服务器中、建立模型的服务器中还是存储于专门用于存储该变量池的服务器中,本申请并不做具体限定。
需要说明的是,上述的用于处理数据的服务器以及用于建立模型的服务器,可以是单独的一台设备,也可以是由多个设备组成的系统。但是,该处理数据的服务器接收到的都是实时的数据,即线上的数据,并且在接收到数据进行处理后并不对该数据进行存储,而是将该数据传输至该建立模型的服务器中。该建立模型的服务器并不直接接收实时数据,而是接收该处理数据的服务器传输的数据,即离线的数据,并且该建立模型的服务器在接收到数据后,还可将该数据作为历史数据存储于该服务器中或者数据库中。
例如,假设某数据处理系统中包含用于进行数据处理的服务器a以及用于建立模型的服务器b,则该服务器a和服务器b拥有同一个预先建立的变量池,并且该服务器b还用于接收建立模型的请求。进一步假设,该服务器b接收到了一条建立模型的请求A,该请求A的目的是根据用户最近10天的交易活跃程度推送信息,那么,该请求A中包含模型需求信息B的内容为:针对每一个账户,确定该账户最近10天内的交易次数,根据交易次数所在的数值范围的不同推送不同的信息,该推送信息在被推送后的点击率应该达到预设的阈值。
S102:根据所述模型需求信息,在所述变量池中选择若干特征变量。
在本申请实施例中,建立模型的服务器可以根据该建立模型请求中的模型需求信息,在该预先建立的变量池中选择若干特征变量,以便后续根据选择的若干特征变量,生成相应的模型。
具体的,在确定了模型需求信息后,由于该模型需求信息中包含与该模型建立需求相关的内容,所以该建立模型的服务器可以根据该模型需求信息中的关键词,与该变量池中的各特征变量的变量描述中的文字进行匹配,将相似度较高的特征变量作为为该模型需求信息相对应的特征变量,作为选择的特征变量。当然,这一特征变量的选择过程也可以根据人工经验来选择,如,涉及到风险控制的模型需求,则要选择变量描述中与交易、金额、地理位置、历史浏览记录等相关的特征变量,而不选择变量描述为天气、交通拥堵状况等无关的特征变量。或者,可以使用随机算法确定选择的特征变量的数量以及具体的特征变量。在该变量池中如何选择特征变量本申请并不做具体限定。
继续沿用上例,假设该服务器b在确定了模型需求信息B之后,根据该模型需求信息B,在预先建立的变量池中,根据该模型需求信息B的内容“针对每一个账户,确定该账户最近10天内的交易次数,根据交易次数所在的数值范围的不同推送不同的信息”选择了3个特征变量:特征变量i、特征变量ii以及特征变量iii。
S103:根据选择的所述若干特征变量,生成模型。
在本申请实施例中,当选择完若干特征变量后,该建立模型的服务器便可以根据所选择的该若干特征变量,生成模型。
具体的,该建立模型的服务器首先,根据该选择的若干特征变量,确定所述模型的算法,其次根据该算法,生成待定模型,之后根据该选择的若干特征变量的离线计算脚本以及该算法,离线运行该待定模型,确定该待定模型的运行结果,最后判断所述待定模型的运行结果是否满足所述模型需求信息,若满足,则将所述待定模型作为生成的要进行数据处理的模型,若不满足,则根据预设的优化算法,在该变量池中重新选择特征变量,并根据重新选择的特征变量,重新生成待定模型,直到生成的待定模型的运行结果满足所述模型需求信息为止。
在本申请中,根据特征变量确定算法时,该建立模型的服务器可根据人工经验进行选择,如,需要生成信息安全的模型时,便可以选择涉及到信息安全的模型中常用的算法。或者,可以随机选取算法作为该模型的算法,具体如何根据特征变量确定算法本申请并不做具体限定。
另外,由于在运行该待定模型,并确定该待定模型的运行结果时,需要使用的数据的真实性较为更重要,而数据的时效性并不重要,所以该待定模型的运行环境可以是离线环境,即,使用离线数据运行该模型,也就是在本申请中所述的离线运行该待定模型。而当使用离线数据运行该模型时,该模型中的各特征变量便需要根据离线计算脚本来确定各自的值。
更进一步的,在确定该待定模型的运行结果不满足该模型需求信息时,则可以根据预设的优化算法,优化该待定模型,直到该待定模型满足该模型需求信息。其中,该预设的优化算法可以是遗传算法、粒子群算法、退火算法或者蚁群算法等等,本申请并不做具体的限定。
继续沿用上例,该服务器b可以根据确定的特征变量i、特征变量ii以及特征变量iii,选择对应的算法,并将这三个特征变量作为该算法中的变量,生成待定模型1,最后根据该服务器b中的离线数据,运行该待定模型1,假设该待定模型1的运行结果满足了该模型需求信息B,则确定该待定模型1作为生成的要进行数据处理的模型2。
S104:通过所述模型进行数据处理。
在本申请实施例中,当该建立模型的服务器生成模型后,该数据处理系统便可通过该模型进行数据处理,并且具体可以由该数据处理服务器进行数据处理。
具体的,该建立模型的服务器在生产模型后,需要先将该模型传输至该数据处理服务器。而该数据处理服务器则根据线上数据,通过该模型中各特征变量的线上计算脚本,计算出所述模型中各特征变量当前的值,再根据所述模型中各特征变量当前的值以及所述模型的算法,确定所述模型的运行结果,并输出对应的数据处理结果。
通过图1所示的数据处理方法,该方法预先建立包含各特征变量的变量池,并且该变量池中的各特征变量均是唯一的,在接收到建立模型的请求时,可以通过该建立模型请求中的模型需求信息,在该变量池中选择若干特征变量,并根据选择的若干特征变量,生成模型,通过该模型进行数据处理。相对于现有方法,在本申请提供的方法中,由于预先建立了变量池,使得在建立模型时,该模型中的特征变量均是从该变量池中选择的特征变量,从而使得无需将模型所需的特征变量存储于该模型的存储空间内,即,解决了现有技术中多个模型在使用相同的特征变量时存在的资源浪费的问题。同时,由于各特征变量之间不存在重复存储的问题,也使得在进行数据处理时消耗的资源减少,可以使服务器将更多的资源用于数据处理本身,使得数据处理的效率得到提升。
另外,在实际使用情况时,一般针对同一账户的同一行为,可能需要多个模型并行运行,并确定不同的结果(如,针对某个账户的浏览信息的行为,可能需要判断该账户的用户的喜好是否出现变化、该账户是否存在盗号风险、是否需要根据该账户的行为向该户推荐信息等等),以便确定根据该账户的行为需要进行哪些后续的操作。而若这多个模型存在相同的特征变量,由于现有技术中各模型仅仅管理自身所需的特征变量,而无法获知其他模型的特征变量,所以在该服务器通过这多个模型进行数据处理时,该服务器可能需要对同一个特征变量进行重复的计算,这就导致大量的资源浪费。例如,假设特征变量iiii在10个模型中均有使用,而当这10个模型需要并行运行时,该特征变量iiii会被这10个模型重复计算10次,也就是该服务器会对该特征变量iiii进行10次计算。
但是,在本申请实施例中,由于存在变量池,各特征变量均存储于该变量池中,所以即使多个模型存在相同的特征变量,该特征变量也仅需进行一次计算,从而大大减少了资源得消耗。
具体的,该用于数据处理的服务器,根据变量池中各特征变量的线上计算脚本,计算各特征变量当前的值,将各特征变量当前的值,提供给需要使用该特征变量的值的模型,通过所述模型的算法以及各特征变量的值,进行数据处理。例如,假设当前数据处理服务器并行运行7个模型,每个模型需要的特征变量如表2所示:
模型1 |
特征变量X |
特征变量III |
特征变量I |
特征变量II |
模型2 |
特征变量I |
特征变量VI |
特征变量IV |
特征变量IX |
模型3 |
特征变量XIX |
特征变量XX |
特征变量I |
特征变量IV |
模型4 |
特征变量VI |
特征变量I |
特征变量III |
特征变量IX |
模型5 |
特征变量X |
特征变量VIII |
特征变量I |
特征变量II |
模型6 |
特征变量III |
特征变量VI |
特征变量II |
特征变量XVI |
模型7 |
特征变量I |
特征变量III |
特征变量X |
特征变量XV |
表2
可见,有6个模型需要特征变量I的值、有3个模型需要特征变量II的值、有4个模型需要特征变量III的值、有2个模型需要特征变量IV的值、有3个模型需要特征变量VI的值、有1个模型需要特征变量VIII的值、有2个模型需要特征变量IX的值、有2个模型需要特征变量X的值、有1个模型需要特征变量XV的值、有1个模型需要特征变量XVI的值、有1个模型需要特征变量XIX的值、有1个模型需要特征变量XX的值。若在现有技术中,该特征变量I将会在6个模型中重复进行6次计算、该特征变量II会在3个模型中重复进行3次计算,等等。而在本申请中,由于该数据处理服务器会在根据变量池中各特征变量的线上计算脚本,计算各特征变量当前的值之后,将各特征变量的值提供给需要使用该特征变量的值的模型,所以模型1~模型7不必再自行对所需的特征变量进行计算,从而避免了同一特征变量在不同模型中被重复计算,导致资源消耗增加的问题。
通过上述方法,当该用于处理数据的服务器需要并行进行多个数据的处理时,由于该服务器仅需将该变量池中的各特征变量进行一次计算,之后只需要将各特征变量当前的值,提供给各模型即可。可见,本申请可以避免同一特征变量被重复计算,大大减少服务器在进行数据处理时的资源消耗。并且,该服务器还可以先确定该变量池中那些特征变量是当前模型需要使用的,并且仅计算当前需要提供的特征变量的值,以进一步减少服务器的资源消耗(如,假设变量池中存在100个特征变量,当前有20个模型在并行运行进行数据处理,而这20个模型需要用到该变量池中的35个特征变量,则此时该服务器仅需计算该35个特征变量的值)。
另外,特征变量分为基础特征变量以及衍生特征变量,其中,基础特征变量为,计算该特征变量所需的值中没有其他特征变量的值,即,使用线上数据既可以确定该特征变量的值的特征变量,而衍生特征变量为,计算该特征变量所需的值中存在基础特征变量的值,所以该服务器在计算个特征变量当前的值时,需要先计算基础特征变量的值,再计算衍生特征变量的值。
进一步的,在本申请中所述的线上计算脚本包含:线上计算所述特征变量的值所基于的数据的标识、线上计算所述特征变量的值所基于的数据的数据源、线上计算所述特征变量的值的计算规则。而离线计算脚本包含:离线计算所述特征变量的值所基于的数据的标识、离线计算所述特征变量的值所基于的数据的数据源、离线计算所述特征变量的值的计算规则。
其中,由于离线计算时所需的数据实时性并不高,所以该离线计算脚本中的离线计算所述特征变量的值所基于的数据的数据源也可是时效性不高的数据源,而线上计算时所需的数据实时性较高,所以该线上计算脚本中的线上计算所述特征变量的值所基于的数据的数据源也可是时效性较高的数据源。并且,在离线计算时,该特征变量的离线计算规则,可以是较为复杂耗时的计算规则,如,数据挖掘方法等。则,针对该特征变量,该服务器可以预先计算并存储该特征变量的值,并使该特征变量的线上计算脚本从存储该特征变量的值得存储空间,确定该特征变量的值。
更进一步的,由于在实际使用过程中,通过模型进行数据处理时,使用的是线上数据,所以上运行模型所的到的模型运行结果,可能与离线运行待定模型所的到的待定模型运行结果并不一致(如,线上运行时,实时数据获取不稳定,导致模型运行结果不稳定,无法达到预期,或者,线上运行时,模型的运行结果无法满足模型需求信息)。则此时,在本申请中还可以对该模型中的特征变量进行更新,将更新后的特征变量添加至该变量池中,更新该更新后的特征变量的离线计算脚本以及线上计算脚本,根据该更新后的特征变量,更新该模型。
具体的,由于更新特征变量时,可能是仅更新原有特征变量的部分内容(如,线上计算脚本、离线计算脚本、变量描述、变量类型),也有可能是更新该特征变量的全部内容(即,更新为全新的特征变量),所以为了保证变量池中各特征变量均是唯一的,所以此时还需要为更新后的变量生成新的变量标识。上述更新特征变量的过程,若涉及线上计算脚本或者离线计算脚本的更新,则在更新后的特征变量在添加至该变量池后,该建立模型的服务器还可以,自动更新线上计算该更新后的特征变量的值所基于的数据的数据源或者离线计算该更新后的特征变量的值所基于的数据的数据源(以下简称线上数据源以及离线数据源)。其原因在于,由于建立模型的服务器一般情况下拥有较多的运算资源以及数据来源信息,所以针对同一个数据,该建立模型的服务器可确定的该数据的数据源一般会更加丰富,所以该建立模型的服务器还可以确定该数据的较佳数据源,并对该数据的数据源进行自动更新。
当然,该更新特征变量也可以是为了获得更优的模型运行结果而进行的更新,并申请并不对此进行限定。
另外,在更新该模型,并通过该更新后的模型处理数据之前,本申请还可以如步骤S103的过程,离线运行该更新后的模型,确定该更新后的模型的运行结果,并判断该更新后的模型的运行结果是否满足该模型的需求信息,若满足,则认为这次对该特征变量的更新是有效的,后续可以使用该更新后的模型进行数据处理,而若不满足,则认为这次对该特征变量的更新是无效的,那么可以将该更新后的变量还原为更新前的特征变量,即,继续使用更新该特征变量前的模型进行数据处理,或者也可以根据优化算法继续优化该模型,直到该模型的运行结果满足该模型需求信息为止。
基于图1所示的数据处理过程,本申请实施例还提供一种数据处理装置,如图2所示,其中,该装置预先建立包含各特征变量的变量池,并且所述变量池中的每个特征变量均是唯一的。
图2是本申请实施例提供一种数据处理装置的结构示意图,具体包括:
接收模块201,用于接收建立模型的请求,其中所述建立模型的请求包含模型需求信息;
选择模块202,用于根据所述模型需求信息,在所述变量池中选择若干特征变量;
生成模块203,用于根据选择的所述若干特征变量,生成模型;
处理模块204,用于通过所述模型进行数据处理。
所述特征变量至少包含:线上计算脚本以及离线计算脚本。
所述离线计算脚本中包含:离线计算所述特征变量的值所基于的数据的标识、离线计算所述特征变量的值所基于的数据的数据源、离线计算所述特征变量的值的计算规则。
所述生成模块203具体用于,根据所述选择的若干特征变量,确定所述模型的算法,根据所述算法,生成待定模型,根据所述选择的若干特征变量的离线计算脚本以及所述算法,离线运行所述待定模型,确定所述待定模型的运行结果,判断所述待定模型的运行结果是否满足所述模型需求信息,若满足,则将所述待定模型作为生成的要进行数据处理的模型,若不满足,则根据预设的优化算法,在所述变量池中重新选择特征变量,并根据重新选择的特征变量,重新生成待定模型,直到生成的待定模型的运行结果满足所述模型需求信息为止。
所述线上计算脚本中包含:线上计算所述特征变量的值所基于的数据的标识、线上计算所述特征变量的值所基于的数据的数据源、线上计算所述特征变量的值的计算规则。
所述处理模块204具体用于,通过所述模型中各特征变量的线上计算脚本,计算出所述模型中各特征变量当前的值,根据所述模型中各特征变量当前的值以及所述模型的算法,确定所述模型的运行结果。
所述装置还包括:
更新模块205,用于当在通过所述模型进行数据处理的过程中,对所述模型中的特征变量进行更新时,将更新后的特征变量添加至所述变量池中,更新所述更新后的特征变量的离线计算脚本以及线上计算脚本,根据所述更新后的特征变量,更新所述模型。
所述处理模块204具体用于,根据变量池中各特征变量的线上计算脚本,计算各特征变量当前的值,将所述各特征变量当前的值,提供给所述模型,通过所述模型的算法以及所述各特征变量的值,进行数据处理。
具体的,上述如图2所示的数据处理装置可以位于服务器中。该服务器可以是单独的一台设备,也可以是由多个设备组成的系统。
在一个典型的配置中,计算设备包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。内存是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。
本领域技术人员应明白,本申请的实施例可提供为方法、系统或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
以上所述仅为本申请的实施例而已,并不用于限制本申请。对于本领域技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本申请的权利要求范围之内。