基于决策树的决策行为生成方法及系统与流程

文档序号:21273425发布日期:2020-06-26 23:05阅读:295来源:国知局
基于决策树的决策行为生成方法及系统与流程
本发明涉及数据处理和数据挖掘的方法及系统,具体讲是基于决策树的决策行为生成方法及系统。
背景技术
:决策树是一种基于树形结构的机器学习方法。由于每个人的行为都有一定的行为依据,因此可以利用决策树将人的行为进行分析,进而得出相应的决策行为依据,这种方法在当前互联网领域的应用越来越广泛。决策树具有较好的可解释性,能够有效帮助决策者进行决策分析,被广泛应用于银行信贷建模工作中。建模人员可以通过手工配置树形结构、配置从属关系,进而得到一个决策树。常用的决策树构建工具如sas,属于单机交互式建模工具,主要特点是可以通过自定义配置实现数据建模,需要建模人员手工单个节点构建决策树,构建时间长,可处理少量数据,不支持批量数据分析。利用分布式存储的训练数据进行交互式建模虽然可以解决单机交互式建模数据处理量少的问题,但不能真正解决决策结果高效、准确的要求。随着消费信贷业务的爆发式发展,信贷业务已进入存量管理阶段,如何精细化运营和管理好庞大的存量客户,是银行贷中工作的重点,需要对存量客户保持极高的关注。目前,虽然数据来源多种多样,但是因为低效的数据分析流程,导致客户的动态不能实时定位,不能第一时间输出决策行动,大多还是靠人工触发,将大量时间和精力投入在低效的数据分析和手工响应上成为了日常面临的高频挑战。以“客户额度冻结”为例,建模人员通常使用单机交互式建模工具进行手工建模,然后跑存量客户名单,当名单中出现异常客户时,则通过手动通知方式(单机建模工具输出分析文件未能与其他业务系统联通)告知下游系统冻结客户额度。这种方式能够帮助建模人员定位到一个问题的表现现象,即发现需要冻结的客户,但缺乏实际能够解决问题的能力,即不能实时冻结该客户,也不能发现客户的其他表象,且导致客户额度冻结的详细原因还是需要数据人员进行排查,通过查看多个相关数据、拉取客户行为日志等操作定位产生原因,直到人工排查出原因后再解除冻结。综上所述,在现有单机交互式建模技术中,由于人工编写决策树的过程重复繁琐,且效率低,且数据时效性差,所以丞需一种能够基于决策树进行高效配置输出有决策依据的决策行为的方式。技术实现要素:本发明提供了一种基于决策树的决策行为生成方法及系统,以解决目前依靠建模人员手动构建决策树耗费时间长、构建效率低的技术问题。本发明基于决策树的决策行为生成方法,包括:s1.通过处理器从客户信息中进行特征提取,得到供决策树应用的指标,然后通过对指标进行表达式正确性校验,得到可用指标;s2.新建决策树上的单一节点,每个单一节点都具有唯一性的节点编码,通过所述的可用指标对各单一节点进行参数配置,再根据各单一节点的类型、节点编码和输入/输出参数将所有单一节点相互形成父/子关系,其中,单一节点的类型包括开始节点、分支节点、规则节点和叶子节点,其中叶子节点没有子节点,每个子节点的输入参数是其父节点的输出参数;s3.对具有父子关系的节点分别进行条件配置,得到配置完整的决策路径,每条决策路径的叶子节点都具有表示决策行为的决策行动码,然后对配置完整的决策路径进行正确性校验,得到决策树;s4.通过样本数据进行决策树预跑批,得到决策树预跑批结果,对决策树预跑批结果进行数据验证后,得到可用决策树;s5.通过预先配置时间定时器或预先获取指标值来对可用决策树的跑批始点进行配置,得到决策树跑批任务,进而得到决策树版本;决策树的触发分为主动触发和被动触发。主动触发为时间定时任务,预先配置时间定时器,然后决策树在时间计划内按时执行。被动触发为指标值更新,预先获取指标值,一旦指标值变更,立即执行决策树。s6.通过对决策树版本进行配置,得到系统应用的决策树,然后通过系统应用的决策树进行决策树跑批任务,得到可立即执行的决策行为。本发明是通过建立决策树,再为决策树配置跑批始点,实现自动化跑批,并利用决策树和数据指标相结合的方法,使得全量数据可以从多个决策维度进行分别决策执行,大幅度提高了分析结果的准确度,并且对于新加入的数据通过实时指标配置可以直接带入决策树中,有效提高了分析速度,进而达到自动化决策的技术效果。进一步的,步骤s1中,通过处理器对客户信息进行结构化、半结构化和非结构化字段的解析、抽取和计算,得到基础指标,再通过数学运算符对基础指标进行数值表达式配置,得到衍生指标,基础指标和衍生指标共同构成所述的供决策树应用的指标。其中,对基础指标的数值表达式配置的数学运算符包括:乘法运算符*、除法运算符/、整除运算符div、取余运算符mod、加法运算符+、减法运算符-。运算优先级为:括号→函数→乘方→乘/除→加/减→字符连接运算符→关系运算符→逻辑运算符。同级运算则按从左到右次序进行;多层括号运算由里向外进行。然后再对上述的指标进行表达式正确性校验,其中包括:表达式的写法是否符合数学逻辑、括号是否能够匹配、加减乘除是否使用得当等。以及表达式的参数是否为已有的指标,表达式的参数是否为int或者double的数值类型,校验返回值是否为布尔变量,例如true代表合法,false代表不合法。进一步的,步骤s2中所述的通过所述的可用指标对各单一节点进行参数配置,是通过逻辑表达式将不同的可用指标进行关联。具体的,在决策树中各单一节点之间的父/子关系为:开始节点:无父节点,子节点只能为分支节点和/或规则节点;在决策树上有且只有1个;分支节点:父节点为开始节点、分支节点或规则节点;至少有一个子节点,子节点为分支节点、规则节点和/或叶子节点;在决策树上至少有1个;规则节点:父节点为开始节点、分支节点或规则节点;有且只有一个子节点,子节点为分支节点、规则节点或叶子节点;在决策树上至少有1个;叶子节点:父节点为分支节点或规则节点,后面无子节点,是决策树上的最小级节点。进一步的,步骤s3中所述的对具有父子关系的节点分别进行条件配置,是通过在存储空间中设置二维数组的数据结构,通过设置二维数组的参数来表示达到各单一节点需要满足的条件,包括设置每个单一节点的类别为类型类别或值类别,以及设置操作符号,其中类型类别包括所述的开始节点、分支节点、规则节点和叶子节点;根据单一节点的类别不同,设置不同操作符号,如果类别为值类别,则设置操作符号为比较符,例如:>、<、>=、<=、=等,如果类别为类型类别,则设置操作符号为属于或不属于,例如:in和notin,如果要对一个单一节点设置多个类型类别,则用逗号“,”分隔不同的类型类别。例如,如果配置的是“start(开始节点)”,该节点在决策树上有且只能有一个,因此start=0,且无父节点,子节点只能是branch(分支节点)或filter(规则节点)。如果配置的是“branch(分支节点)”,该节点在决策树上至少有1个,因此branch≥1,且必须有父节点和子节点,且子节点个数≥2,子节点的分支都是可用指标构成的分支。举例:可用指标为“是否列入失信被执行人名单”,该可用指标的值只有两个,一个“是”,一个“否”,所以,因此该branch(分支节点)有两个子节点:“是”和“否”。如果配置的是“filter(规则节点)”,该节点在决策树上至少有1个,因此filter≥1,且必须有父节点和子节点,子节点可以是branch(分支节点),也可以是leaf(叶子节点),如果是leaf(叶子节点),那leaf(叶子节点)是决策树上的最小级节点,会输出决策行动码。如果配置的是“leaf(叶子节点)”,该节点是决策树上的最小级节点,会输出决策行动码。最后从start(开始节点)到leaf(叶子节点)构成完整的决策路径。并且,在步骤s3中所述的对配置完整的决策路径进行正确性校验,是对决策路径进行数据化存储,得到对应的json字符串。然后对该json字符串进行深度优先搜索(dfs),得到决策路径拓扑排序表。最后对决策路径拓扑排序表进行并查集(disjoint-set)优化,得到决策树。通过解析决策路径中指标的详细加工逻辑,采用数据库语言中的and、where等方式,得到每一条数据库执行语句(sql语句)。生成数据库执行语句(sql语句)的数量与叶子节点的数量相同。然后将生成的数据库执行语句(sql语句)提交到es(基于lucene的搜索服务器)执行集群,待定时任务时间到时立即执行。进一步的,步骤s4所述的对决策树预跑批结果进行数据验证,是先对决策树预跑批结果进行样本量统计,得到每一条决策路径所得的样本数,再对每一条决策路径得的样本数累加,得到决策树预跑批得到的总样本数,然后将该总样本数和进行决策树预跑批的样本数据的数量进行对比,如果对比数值相等,则数据验证通过;若对比数值不相等,则数据验证失败,重新调整构建决策树的决策流模型。在步骤s6中,所述的对决策树版本进行配置,是将决策树的节点参数作为json字符串传到数据库,并说明编辑状态是“待定”还是“完成”。若为“待定”状态,数据库不校验,直接入库,状态设为“待定”;若为“完成”状态,数据库对json字符串校验,并返回前端校验结果。校验成功后入库。然后对决策树进行系统使用开关配置,得到系统应用的决策树,同时将决策树id、版本等参数同步到后台数据库。进一步的,步骤s6中通过系统应用的决策树进行决策树跑批任务,是先从数据库中读取系统应用的决策树的树id,通过树id查询到所述决策树的开始节点,再由开始节点关联子节点,以此递归直到叶子节点,由此查询出整个决策树的树形数据结构,然后遍历决策树上所有节点的节点id,通过节点id在数据库中查询出对应的指标值,并将该指标值填充到对应的节点中,最后得到各条决策路径的决策结果,对决策结果进行行动码转译,得到es(基于lucene的搜索服务器)用于跑批的sql语句,通过对所述sql语句跑批得到可立即执行的决策行为。本发明还提供了一种用于上述方法的基于决策树的决策行为生成系统,包括:指标获取模块:获取供决策树应用的指标;决策树生成模块:根据获取的指标进行节点可视化图形配置,生成决策路径;决策树提取模块:提取所有决策路径上的所有节点,包括节点的分叉特征和不同节点之间的从属关系;决策树验证模块:对获取的指标进行表达式正确性校验、决策路径的正确性检验,以及决策树预跑批数据验证;决策树触发模块:触发决策树执行的任务,分为时间触发和行为触发;决策行为输出模块:对正式的执行数据进行数据跑批,得到决策树跑批结果,进而得到决策行动码,自动化执行决策行为。本发明的基于决策树的决策行为生成方法及系统,能够高效的构建出决策树,并且能够实现对客户动态的实时定位,及时输出决策行动,有效实现了对客户决策行为的及时执行。通过可视化数据建模方式,实现决策树建立,基于客户信息数据配置建模指标,进而实时输出决策行为。其中决策行为包括但不限于银行信贷业务中的额度调整、利率调整、解冻/冻结、还款方式调整等。以下结合实施例的具体实施方式,对本发明的上述内容再作进一步的详细说明。但不应将此理解为本发明上述主题的范围仅限于以下的实例。在不脱离本发明上述技术思想情况下,根据本领域普通技术知识和惯用手段做出的各种替换或变更,均应包括在本发明的范围内。附图说明图1为本发明基于决策树的决策行为生成系统的框图。图2为本发明基于决策树的决策行为生成方法的流程图。图3为以额度冻结为例的决策树结构示意图。具体实施方式如图1所示本发明基于决策树的决策行为生成系统,包括有:指标获取模块:获取供决策树应用的指标;决策树生成模块:根据获取的指标进行节点可视化图形配置,生成决策路径;决策树提取模块:提取所有决策路径上的所有节点,包括节点的分叉特征和不同节点之间的从属关系;决策树验证模块:对获取的指标进行表达式正确性校验、决策路径的正确性检验,以及决策树预跑批数据验证;决策树触发模块:触发决策树执行的任务,分为时间触发和行为触发;决策行为输出模块:对正式的执行数据进行数据跑批,得到决策树跑批结果,进而得到决策行动码,自动化执行决策行为。如图2所示,基于上述系统,本发明基于决策树的决策行为生成方法,包括:s1.通过处理器从客户信息中进行特征提取,由处理器对客户信息进行结构化、半结构化和非结构化字段的解析、抽取和计算,得到基础指标,再通过数学运算符对基础指标进行数值表达式配置,得到衍生指标,基础指标和衍生指标共同构成供决策树应用的指标。其中,对基础指标的数值表达式配置的数学运算符包括:乘法运算符*、除法运算符/、整除运算符div、取余运算符mod、加法运算符+、减法运算符-。运算优先级为:括号→函数→乘方→乘/除→加/减→字符连接运算符→关系运算符→逻辑运算符。同级运算则按从左到右次序进行;多层括号运算由里向外进行。然后通过对指标进行表达式正确性校验,其中包括:表达式的写法是否符合数学逻辑、括号是否能够匹配、加减乘除是否使用得当等。以及表达式的参数是否为已有的指标,表达式的参数是否为int或者double的数值类型,校验返回值是否为布尔变量,例如true代表合法,false代表不合法。最后得到可用指标。s2.新建决策树上的单一节点,每个单一节点都具有唯一性的节点编码,通过逻辑表达式将不同的可用指标进行关联来对各单一节点进行参数配置,再根据各单一节点的类型、节点编码和输入/输出参数将所有单一节点相互形成父/子关系,其中,单一节点的类型包括开始节点、分支节点、规则节点和叶子节点,其中叶子节点没有子节点,每个子节点的输入参数是其父节点的输出参数。在决策树中各单一节点之间的父/子关系为:开始节点:无父节点,子节点只能为分支节点和/或规则节点;在决策树上有且只有1个;分支节点:父节点为开始节点、分支节点或规则节点;至少有一个子节点,子节点为分支节点、规则节点和/或叶子节点;在决策树上至少有1个;规则节点:父节点为开始节点、分支节点或规则节点;有且只有一个子节点,子节点为分支节点、规则节点或叶子节点;在决策树上至少有1个;叶子节点:父节点为分支节点或规则节点,后面无子节点,是决策树上的最小级节点。s3.对具有父子关系的节点分别进行条件配置,通过在存储空间中设置二维数组的数据结构,通过设置二维数组的参数来表示达到各单一节点需要满足的条件,包括设置每个单一节点的类别为类型类别或值类别,以及设置操作符号,其中类型类别包括所述的开始节点、分支节点、规则节点和叶子节点;根据单一节点的类别不同,设置不同操作符号,如果类别为值类别,则设置操作符号为比较符,例如:>、<、>=、<=、=等,如果类别为类型类别,则设置操作符号为属于或不属于,例如:in和notin,如果要对一个单一节点设置多个类型类别,则用逗号“,”分隔不同的类型类别。例如,如果配置的是“start(开始节点)”,该节点在决策树上有且只能有一个,因此start=0,且无父节点,子节点只能是branch(分支节点)或filter(规则节点)。如果配置的是“branch(分支节点)”,该节点在决策树上至少有1个,因此branch≥1,且必须有父节点和子节点,且子节点个数≥2,子节点的分支都是可用指标构成的分支。举例:可用指标为“是否列入失信被执行人名单”,该可用指标的值只有两个,一个“是”,一个“否”,所以,因此该branch(分支节点)有两个子节点:“是”和“否”。如果配置的是“filter(规则节点)”,该节点在决策树上至少有1个,因此filter≥1,且必须有父节点和子节点,子节点可以是branch(分支节点),也可以是leaf(叶子节点),如果是leaf(叶子节点),那leaf(叶子节点)是决策树上的最小级节点,会输出决策行动码。如果配置的是“leaf(叶子节点)”,该节点是决策树上的最小级节点,会输出决策行动码。最后从start(开始节点)到leaf(叶子节点)构成完整的决策路径。得到配置完整的决策路径后,每条决策路径的叶子节点都具有表示决策行为的决策行动码,然后对配置完整的决策路径进行正确性校验:先对决策路径进行数据化存储,得到对应的json字符串。然后对该json字符串进行深度优先搜索(dfs),得到决策路径拓扑排序表。最后对决策路径拓扑排序表进行并查集(disjoint-set)优化,得到决策树。通过解析决策路径中指标的详细加工逻辑,采用数据库语言中的and、where等方式,得到每一条数据库执行语句(sql语句)。生成数据库执行语句(sql语句)的数量与叶子节点的数量相同。然后将生成的数据库执行语句(sql语句)提交到es(基于lucene的搜索服务器)执行集群,待定时任务时间到时立即执行。校验完成后,得到决策树。s4.通过样本数据进行决策树预跑批,得到决策树预跑批结果,对决策树预跑批结果进行数据验证后,得到可用决策树。所述对决策树预跑批结果的数据验证为:先对决策树预跑批结果进行样本量统计,得到每一条决策路径所得的样本数,再对每一条决策路径得的样本数累加,得到决策树预跑批得到的总样本数,然后将该总样本数和进行决策树预跑批的样本数据的数量进行对比,如果对比数值相等,则数据验证通过;若对比数值不相等,则数据验证失败,重新调整构建决策树的决策流模型。s5.通过预先配置时间定时器或预先获取指标值来对可用决策树的跑批始点进行配置,得到决策树跑批任务,进而得到决策树版本。决策树的触发分为主动触发和被动触发。主动触发为时间定时任务,预先配置时间定时器,然后决策树在时间计划内按时执行。被动触发为指标值更新,预先获取指标值,一旦指标值变更,立即执行决策树。s6.对决策树版本进行配置,将决策树的节点参数作为json字符串传到数据库,并说明编辑状态是“待定”还是“完成”。若为“待定”状态,数据库不校验,直接入库,状态设为“待定”;若为“完成”状态,数据库对json字符串校验,并返回前端校验结果。校验成功后入库。然后对决策树进行系统使用开关配置,得到系统应用的决策树,同时将决策树id、版本等参数同步到后台数据库。通过对决策树版本进行配置得到系统应用的决策树,然后通过系统应用的决策树进行决策树跑批任务,步骤为:先从数据库中读取系统应用的决策树的树id,通过树id查询到所述决策树的开始节点,再由开始节点关联子节点,以此递归直到叶子节点,由此查询出整个决策树的树形数据结构,然后遍历决策树上所有节点的节点id,通过节点id在数据库中查询出对应的指标值,并将该指标值填充到对应的节点中,最后得到各条决策路径的决策结果,对决策结果进行行动码转译,得到es(基于lucene的搜索服务器)用于跑批的sql语句,通过对所述sql语句跑批得到可立即执行的决策行为。本发明是通过建立决策树,再为决策树配置跑批始点,实现自动化跑批,并利用决策树和数据指标相结合的方法,使得全量数据可以从多个决策维度进行分别决策执行,大幅度提高了分析结果的准确度,并且对于新加入的数据通过实时指标配置可以直接带入决策树中,有效提高了分析速度,进而达到自动化决策的技术效果。下面以决策行为是“额度冻结”为例进行详细描述。所述的“额度冻结”指的是将客户的剩余额度冻结,使其不能再对额度进行支用。本实施例中,假设在银行信贷业务场景中,在额度已经授信之后,需要对已经额度授信的客户进行决策判定,得出“额度是否冻结”的决策行为。如图3所示,在该决策树中,节点1是该决策树的开始节点,节点2是该决策树的分叉节点,节点3和节点4是该决策树的普通子节点,节点5和节点6是该决策树的叶子节点。假设该决策树跑批始点触发规则为时间定时任务,当达到预设时间时决策树自动执行跑批。例如,假设设定定时器为每周1上午10点执行,则到达该时间点时,决策树自动读取决策树节点1,以递归遍历的方式遍历所有节点。在遍历所有节点的时候,需要先对节点类型进行判断,若为叶子节点,则退出遍历,若为普通子节点则继续遍历其下层节点。该决策树包括有两条决策路径,一条决策路径为:节点1→节点2→节点3→节点5;另一条决策路径为:节点1→节点2→节点4→节点6。第一条决策路径如表1所示:表1:节点条件节点1读取跑批始点规则节点2当前逾期天数≥28节点3产品编码=hrd,且历史借据笔数≥5,且最近一个月贷款申请次数≥6节点5行动代码=额度冻结第二条决策路径如表2所示:表2:节点条件节点1读取跑批始点规则节点2当前逾期天数<28节点4非节点3条件节点6行动代码=无动作每一个节点在条件配置中都有对应一个或多个可用指标,每个可用指标都会根据具体的场景输出指标值,基于所述指标值选择可执行的唯一决策路径。其中决策路径中的条件阈值可预先设定,例如第一条决策路径对应的大于等于指标值的判定结果,和第二条决策路径对应的小于指标值的判定结果。表3表示出了决策树涉及的可用指标为①、②、③、④。表3:序号可用指标①当前逾期天数②产品编码③历史借据笔数④最近一个月贷款申请次数在执行该决策树时,需要先提取出决策树的id和版本参数。然后从数据库查询到该决策树之后,通过调用接口,将决策树上的所有节点的规则转化为es可执行的sql语句,去es执行,获取执行结果,将结果入库,并将结果返回给前端。假设某一客户的当前逾期天数是30天,则该客户执行第一决策路径,进入下一层决策节点3,如果该客户的产品编码等于hrd,且历史借据笔数等于10,且最近一个月贷款申请次数等于15。则进入下一层决策节点5,然后输出本决策路径的决策行动代码“额度冻结”。本实施例中的实例和图3仅为示例性的说明,在实际应用中生成的决策树通常会比图3更加复杂。本实施例以此实例来说明通过结构化数据转化、计算、配置自动的生成决策行动代码的过程。当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1