一点杂七杂八的想法,暂时归到这里吧。
1. 模型持久化
- 模型为什么要持久化?模型的训练过程昂贵,需要将结果存储下来。
- 模型持久化了究竟存储了什么内容?如果一个模型持久化之后不能再次被加载和用来score,那么该模型就等于没有持久化。持久化与开发语言相关的内容,但是不管何种持久化机制,至少要持久化模型的params(例如算法的fields字段)
weka采用的Java的序列化来实现模型的持久化。
2. 挖掘产品需要考虑的
2.1 MPP&Muti-JVM
分布式、多机、多JVM,根据算法特点尽量在多种粒度的进行并行化。没有人不想数据再多点,执行再快点。
2.2 Auto-Optimization
自动参数寻优,例如类似Spark MLlib的ParamGrid search和scikit-learn的grid search
2.3 降低使用难度
- 针对专业和非专业人员,有选择性地参数暴露,控制算法细节。
- WorkFlow式的体验,当然这与灵活性之间是与一个trade-off。
2.4 融入生态
- 能够“融入别的算法”和“被别人融入”
- PMML(Predictive Model Markup Language),支持跨工具间模型导入导出。
2.5 版本控制
backward-compatibility是长生命周期的产品必须要考虑的。
2.6 减少安装包的大小
- 没有人需要所有的算法。
- runtime类型的安装包,可以runtime时安装。
- packageManager,package社区,培养上下游生态。