##20201130-1205

实习内容

说起来,这周实习的内容有点乱、杂。

在这里简单说一下GJ项目,这个项目主要包括3个部分:

  • B端标签(我负责):如总利润、TOP产品、客户等级等标签数据拉取。
  • 需求预测算法(XY负责):基于GJ与客户的实际交易记录,来预测每种产品每天的销量,算法是基于GBDT。
  • 采产销算法(ZB负责):基于GJ与客户的实际交易记录来预测BOM(bills of material)分割方案,也就是说 “GJ自身杀几头猪+市场原料采购” 来获取利润最大化。

我负责的B端标签SQL开发已经于上个星期完成了,所以这个星期主要是在两个算法问题上进行帮忙。这周开始时,我主要是帮忙 采产销算法任务,由于GJ方需求的变动这个部分的需求(算法需求)可能要大改,做了两天便暂停了这个项目进程。

####采产销算法

虽然,采产销算法项目我只帮忙了2两天。但也让我学到一些东西:

  1. 做采产销任务前,首先要弄清楚GJ客户方 产品销售逻辑。例如,一个客户下单,高金方通过哪些部分的结合,来判断客户需求单里面的产品是否 库存满足 可以立刻发货,如果库存不能满足是直接派给屠宰场呢进行 生猪的宰杀 还是 进行市场采购,或者两者相结合。前面提到的 采产销BOM分割方案算法 就是基于这两者来做的。所以,弄清客户的销售逻辑对以后的有用数据的提取起着关键的作用,而且也是以后SQL代码数据审查判别正确的基础。

  2. 除了销售逻辑之外,接下来就涉及到算法数据层面。也就是说 **GJ方对算法的要求是属于什么类型的数学问题?**因为要求的利润最大化,明显是 线性规划问题。对于线性规划为题,最重要的任务就是确定 目标函数(object function)约束条件(subject to)

    • 目标函数:鲜品利润(基于订单)+冻品利润(基于订单)+鲜转冻利润(BOM分割后)

      基于订单的数据很好获取,但是 鲜转冻利润 需要基于算法结果,这个就很难办了。(解释一下,一般情况下,由鲜品转为冻品是亏钱的)。解决办法:用对于不同的BOM分割方案,用实际销售平均亏损值来代替。

    • 约束条件:分割出来的物料产品满足客户订单。

  3. 现在,需要我做的事情:基于算法输入的数据,对获取数据的SQL代码进行逻辑审查。其实这点非常很重要,只要涉及到数据处理,首先要保证的就是 你SQL拉取到的数据到底是不是需求的数据

    • 首先,我先对输入的表结构进行树状图梳理,为了方便我后面阅读他人的SQL代码。
    • 然后,整个任务做了50%后便项目停止了。虽然可惜,不过让我的SQL能力又得到再次提高。

需求预测算法

由于采产销算法的项目的停滞,后面几天我便帮忙另一个同学的 需求预测算法 项目。在前面我也有讲到,这个项目就是基于消费者产品购买数据来预测GJ产品的数量需求(多个产品)。

在采产销算法项目中我有强调:在做一个算法任务之前,一定要检验其数据的可靠性(我发现,在实际项目运行中很多人会忽略这点,而只顾着按照自己的逻辑去写SQL代码)。关于如何做SQL代码数据审查,我就不在此详细描述了。

做这个项目与前面的采产销算法做的内容区别还是很大的。采产销我要做的是SQL代码逻辑审查,而在这个项目中我需要做的事情是 算法预测结果的优化。在做算法优化之前(明确了任务),首先要做的事情便是 **GBDT算法实现的数学原理是什么?**虽然前面工作中,我曾写过《GBDT算法介绍文档》(向GJ方解释为何采取这个算法以及该算法能做什么),但是我觉得自己还是很有必要再好好梳理下该算法的实现数学逻辑。后续会给出专门的文档介绍。

至于这周,在这个任务中我也学到很多东西。一句话来讲就是 如何做数据预处理?(也会有专门的文档or视频笔记)。这一块也刚好包好了我上周(上个视频)提到的待学习任务——数据归一化。关于该项目我还有一点吐槽,前面的测试人员说目前的算法精度很差,希望我能做算法优化。我一看,原来是他们前期根本没有做数据预处理(缺失值、异常值、算法是否有数据归一化要求,数据分布特征等等)。这些流程都没有走完,就直接想当然的把一些标签数据输入到算法里面,就想获得好的模型,我觉得挺可笑的。重点的学到的东西有:

  • 算法输入数据数据不平衡怎么办?:我发现输入到算法的数据,有些标签数据是明显的泊松分布。
  • 对于缺失值、异常值的处理方法?

上面这两个问题是我,这周学习到最有分量的问题了。当然针对目前的实际项目我还不能给出很好的优化,仍需要后续的认真学习。

下周要去上海出差,参与到另一个项目中。昨天阅读的相关的PPT,我很有可能还是要做标签SQL代码开发。

好了那这周的实习分享就到此为止吧!谢谢!

自我学习

  • 日语五十音图学习了20个啦。
  • 周志华机器学习第二章内容(不知道有人感兴趣我分享读书笔记不)

待学习内容

  • 数据不平衡解决方法
  • 异常值、缺失值等数据预处理方法