openGauss源码解析(186)
openGauss源码解析:AI技术(33)
8.7.3 关键源码解析
1. MADLib的项目结构
MADlib的文件结构及说明如表8-16所示,MADlib的代码可通过其官方网站获取:https://madlib.apache.org/。
表8-16 MADlib的主要文件结构
文件结构 | 说明 | |
cmake | - | Cmake相关文件 |
/array_ops | 数组array操作模块 | |
/kmeans | Kmeans相关模块 | |
/sketch | 词频统计处理相关模块 | |
/stemmer | 词干处理相关模块 | |
/svec | 稀疏矩阵相关模块 | |
/svec_util | 稀疏矩阵依赖模块 | |
/utils | 其他公共模块 | |
src/bin | - | 工具模块,用于安装、卸载、部署等 |
src/bin/madpack | - | 数据库交互模块 |
src/dbal | - | 词干处理相关模块 |
src/libstemmer | - | 工具依赖文件 |
src/madpack | - | 里面包含公共的模块 |
src/modules | - | 关联规则算法 |
/assoc_rules | 包括凸算法的实现 | |
/convex | 包括条件随机场算法 | |
/crf | 弹性网络算法 | |
/elastic_net | 广义线性模型 | |
/glm | 隐狄利克雷分配 | |
/lda | 线性代数操作 | |
/linalg | 线性系统模块 | |
/linear_systems | 概率模块 | |
/prob | 决策树和随机森林 | |
/recursive_partitioning | 回归算法 | |
/regress | 采样模块 | |
/sample | 数理统计类模块 | |
/stats | 时间序列 | |
/utilities | 包含pg,gaussdb平台相关接口 | |
src/ports | - | 接口,链接db |
src/ports/postgres | - | 针对pg系,相关算法 |
/dbconnector | 关联规则算法 | |
/modules | 贝叶斯算法 | |
/modules/bayes | 共轭梯度法 | |
/modules/conjugate_gradient | 包括多层感知机 | |
/modules/convex | 条件随机场 | |
/modules/crf | 弹性网络 | |
/modules/elastic_net | Prophet时序预测 | |
/modules/gbdt | Gdbt算法 | |
/modules/glm | 广义线性模型 | |
/modules/graph | 图模型 | |
/modules/kmeans | Kmeans算法 | |
/modules/knn | Knn算法 | |
/modules/lda | 隐狄利克雷分配 | |
/modules/linalg | 线性代数操作 | |
/modules/linear_systems | 线性系统模块 | |
/modules/pca | PCA降维 | |
/modules/prob | 概率模块 | |
/modules/recursive_partitioning | 决策树和随机森林 | |
/modules/sample | 回归算法 | |
/modules/stats | 采样模块 | |
/modules/summary | 数理统计类模块 | |
/modules/svm | 描述性统计的汇总函数 | |
/modules/tsa | Svm算法 | |
/modules/validation | 时间序列 | |
/modules/xgboost_gs | 交叉验证 | |
src/utils | - | Xgboost算法 |
2. MADlib在openGauss上的执行流程
用户通过调用UDF即可进行模型的训练和预测,相关的结果会保存在表中,存储在数据库上。以训练过程为例,MADlib在openGauss上执行的整体流程如图8-22所示。
图8-22 MADlib在openGauss上训练模型的流程图