机器学习被广泛的应用于推荐、风控等场景。经典的机器学习建模数据是由特征列和单一目标列构成的,比如要做广告的CTR预测,其实模型关心的是一个广告曝光后是否会被点击,这是一个单一目标场景的建模过程。但是在实际应用场景中,往往有时候会出现“既要也要”的情况,比如推荐一个视频给客户,推荐引擎不光希望客户可以点击这个视频,更希望客户可以长时间光看,这就成了一个多目标建模的情况。

单目标建模在很多情况下是有局限的,以新闻推荐为例,如果只通过新闻是否点击来评估模型好坏,那么推送一些吸引眼球的没有内涵的新闻往往可以提升点击,比如推送《八旬老汉偷窥儿媳妇洗澡》,但是这种推荐是没有灵魂的。多目标推荐会更好的帮助模型去理解用户。比如在美拍视频中,需要考虑点击率、播放、关注、时长等四个因素。

多目标回归预测存在的问题 多目标模型_多目标回归预测存在的问题

 

那么多目标推荐要怎么做呢?目前在中文网站上很难找到相关文献,于是我去到国外的网站看了下Multi-label Classification相关的介绍,大体可以通过以下方法去做实现多目标建模。为了更好地说明,这里模拟一份数据:

用户

特征1

特征2

特征3

目标1

目标2

A

32

523

234

0

1

B

124

463

46

1

0

C

42

352

64

1

1

 

方法一:将多目标问题转化成单目标问题

以上面的问题为例,假设目标1和目标2的正例都是“1”,则转化成单目标建模逻辑的时候可以把目标1和目标2都是“1”的情况标为“1”,其它情况标为“0”。案例数据变为下面的形式:

用户

特征1

特征2

特征3

目标

A

32

523

234

0

B

124

463

46

0

C

42

352

64

1

这种方法比较暴力并且好实现,但是问题就是减少了很多数据间的信息。

 

方法二:将多目标问题转化成多分类问题

转化成多分类问题的好处是可以保留所有的信息,给业务系统更多选择。比如一个系统有两个推荐评估目标分别是点击和时长,但是某用户没有匹配到点击和时长都不错的内容。这时候转换成多分类问题的好处就体现出来了,在没有两个目标都符合的方案情况下,可以从其它符合的类别中选择一个推送给客户。

 

转化成多分类问题后,样例数据变为下面的形式:

用户

特征1

特征2

特征3

目标

A

32

523

234

0

B

124

463

46

1

C

42

352

64

2

  1. 目标值为0对应原始目标1=“0”,目标2=“1”
  2. 目标值为1对应原始目标1=“1”,目标2=“0”
  3. 目标值2对应原始目标1=“1”,目标2=“1”

方法三:将多目标问题转化成多组模型的形式

多组模型的模式是最精确地模式,但是也是计算量最大的模式。比如样例数据有两个评估指标,可以分别对两个评估指标进行建模。

 

训练数据1:

用户

特征1

特征2

特征3

目标1

A

32

523

234

0

B

124

463

46

1

C

42

352

64

1

训练数据2:

用户

特征1

特征2

特征3

目标2

A

32

523

234

1

B

124

463

46

0

C

42

352

64

1

 

这样的话会分别针对目标1和目标2生成两个分类模型。实际预测的时候,每个样本需要调用两次模型分别拿到对应两个目标的分类结果,假如样本1对应的两份结果分别是“0.65”和”0.21”,把这两个结果组合起来就是最终的预测结果,是向量[0.65,0.21]。以此类推,计算所有样本的预测向量,再通过向量具体判断用户的意向。

 

总结

随着推荐系统的普及,多目标建模一定会变成业内普遍的需求,希望这篇文章可以给有需要的同学更多地帮助。