从 5 月 14 至今, 将公司 GBDT+LR 模型部署到服务端; 在微服务的模式下, GDBT+LR 提供预测的服务, 针对传入的特征进行分析, 返回 sigmoid 后面的分数. 服务是结合 grpc 和 protobuffer(pb). pb 是在不同机器, 语言之间进行数据的传输, 类似于 thrift. 而 grpc 通过它官网的几个例子稍加修改就能上线自己的服务端.
在这个过程中遇到的问题有3点: - 如何编写 MakeList.txt 和使用 cmake - 如何使用 xgboost - 最后的模型如何进行测试, 评价预测正确率
- MakeList 使用起来比 sbt 或者 mvn 更加直观, 只是在寻找包的地址时如果没有 xxx包名.cmake 会找不到包的问题.
- xgboost 虽然是使用 c++ 编写的, 但是 c++的接口使用起来不是特别方便, 也没有类似 api docs 的网站. 最后在 Stack Overflow 上找到(答案)[https://stackoverflow.com/questions/36071672/using-xgboost-in-c]
- 针对模型的测试中, 发现 F1 Score 跟 baseline差了 0.2; 后面进行代码 review 时发现 baseline 中 GBDT 仅仅充当 transform 功能, 将全部数据进行处理, 然后再分为训练集和测试集进行 roc, F1, recall, precision 分数评估. 而我自己的模型是将 训练好的 GDBT 模型保存起来, 然后使用 GDBT 模型对 其进行测试, 然后再用 LR 预测. 两次连续的预测对最终的结果有很大的影响