`

自学习dag的改造

阅读更多


一. 自学习dag改造步骤:

(1)数据组+数据组合并
(2)选取时间范围的分片
(3)对账户慢变化和卡片慢变化表,要变成拉链表,即构造出VALID_FROM_DT和VALID_TO_DT
(4)对利辉提供的欺诈表,进行格式化处理。(由于利辉返回的欺诈表的ATH_DT格式是20190307,ATH_TM是121323666,所以通过字符串切割,转换成正常的格式)
(5)label字段是欺诈表拼接出来的。(由于交易表中也有该字段,所以一定要保留拼表后的label字段)
(6)保证字段有序。

  (7) 自学习的数据组的名称一定要和表名称一样,从而才能使用simon来导入数据。

         为了在自学习中控制白样本的数量。科学家的dag中,编程写上选取时间为2018-01月到2018-09月,并且抽样card_id为1%的。在未来自学习中,交易选取最近两年的,抽样为0.5%

 

二. 自学习遇到的问题:


(1)当前dag中的blacklist中没有TRACE_NBR和TIME_S字段,因为这是我们自己手动创建的,不是利辉生成的。所以要构造出来。
(2)发现3.5版本的先知,对分片了的数据组,策略是按时间选择,则在数据组合并的算子中,会导致分片选择的不全。该bug已经提交给了平台,平台预计在3.7版本中会修复。当前我们使用simon调度,所以绕过了该问题。
(3)自学习中的算子,无需创建字段或更新值,因为都是在利辉的程序中做的,只需要选择字段。

  (4)   如果dag中有任何一个数据组选片选不到数据,那么dag是无法运行的。

(5)在form.ui中如果没有配置方案名称和描述,则启动自学习会失败

 

三. 自学习使用simon后的选片策略:

表名 业务时间/数据组 选片策略 tag标记 选择的数据量
交易表 STD_INT,simon数据组 按repartition时间选择,[0,720] 最近2年
交易表2 无,普通数据组 按tag时间选择,[1,731] 数据第一次预入库时间 最近2年
欺诈表 无,普通数据组 按tag时间选择,[1,2] 数据第一次预入库时间 最近一片
卡片表 无,普通数据组 按tag时间选择,[0,到最早上传] 数据第一次预入库时间 全量
账户慢变化 无,普通数据组 按tag时间选择,[0,到最早上传] 数据第一次预入库时间 全量
卡片慢变化 无,普通数据组 按tag时间选择,[0,到最早上传] 数据第一次预入库时间 全量
Blacklist表 无,普通数据组 按tag时间选择,[1,2] 数据第一次预入库时间 最近一片

 

四. 给数据组增加tag的方法

对于场内存量的历史数据,由于是通过先知直接写入到数据组中的,都没有tag标记。目前打算是改先知的mysql表,手动的加上tag。

目前改为通过postman调用先知的api接口,添加tag。

地址:POST /telamon/v1/prns/tags

请求语法:

POST /telamon/v1/prns/tags HTTP/1.1
Host: gateway.qatest350cdh.qatest.4pd.io
User-Token: 247d746b-c3a6-4a76-9c7a-eba31638c794
Content-Type: application/json
X-Prophet-Workspace-Id: 1
Cache-Control: no-cache

[
    {
        "prn":"modelIDE/guyc-gu-1-DataSplit-212477.table",
        "tag":"business_date",
        "tagValue":"20180701"
    }
]

响应示例:

{
    "status": "0",
    "msg": "",
    "data": [
        {
            "prn": "modelIDE/guyc-gu-1-DataSplit-212477.table",
            "tag": "business_date",
            "tagValue": "20180701",
            "createdTime": 1551341909586
        }
    ]
}

五 自学习上线时,form.ui的配置信息要写入到simon

场景 alias(模型算子名称) model_group(模型组名称) model_name(模型前缀) namespace(工作区)
反欺诈自学习 fraud_learning fraud fraud simon
M2自学习 m2_learning m2 m2 simon

 

六 训练dag与自学习dag的区别

1)历史存量数据与增量数据之间的不同。(比如自学习dag中,要将VALID_FROM_DTVALID_TO_DT处理成拉链表,而训练不需要)

2)训练dag要考虑ETL,但是自学习不需要考虑,因为之前已经在先知外处理过了。(比如:字段的改变ACCPT_ID,字段的新增TIME_SSTD_INT等)

3)训练dag中会写死指定的时间,并根据这些时间进行抽样。自学习的dag中时间的选择要根据数据组的分片按照tag时间来选择。

4)选取的时间的范围不同,导致两个dag抽样的比率不同。

 

训练的dag中做了ETL处理,但是自学习DAG中不需要做的:

交易表

1)创建STD_INT

2)创建STD_INT3

3)创建ACCP_ID_KEY

4)创建ID

5TRACE_NBR字段的赋默认值

其他表

1)创建TIME_S

黑样本表

1TRACE_NBR字段赋默认值,

欺诈表

1TRACE_NBR字段赋默认值

账户慢变化表

1)创建VALID_FROM_DT_TIME,

2)创建VALID_TO_DT_TIME,

3)创建CREDITLIMIT_CHNG_DT_TIME

 

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics