全部产品

机器学习

更新时间:2019-08-05 17:42:36

目录

线性支持向量机

支持向量机(SVM)是90 年代中期发展起来的基于统计学习理论的一种机器学习方法,通过寻求结构化风险最小来提高学习机泛化能力,实现经验风险和置信范围的最小化,从而达到在统计样本量较少的情况下,亦能获得良好统计规律的目的。算法的详细介绍可以参考wiki
本版线性支持向量机不是采用核函数方式实现的,具体实现理论详见http://www.csie.ntu.edu.tw/~cjlin/papers/logistic.pdf?中的“6. Trust Region Method for L2-SVM”。本算法仅支持二分类

算法组件

  1. 设置组件的字段参数

    svm_param_col_select

    • 输入列:选择输入列只支持bigint 与 double类型
    • 标签列:支持bigint类型、double类型和string类型; 本组件仅支持二分类问题
  2. 设置算法参数

    svm_param_setting

    • 惩罚因子:默认为1
    • 目标基准值:(可选)正例的值,不指定则随机选一个。建议正负例样本差异大时指定
    • 正例权重值:(可选)正例惩罚因子,默认1.0,范围(0, ~)
    • 负例权重值:(可选)负例惩罚因子,默认1.0,范围(0,~)
    • 收敛系数:(可选)收敛误差,默认0.001,范围(0, 1)注意:当不指定目标基准值时,正例权重值和负例权重值必须相同

PAI 命令

  1. PAI -name LinearSVM -project algo_public
  2. -DinputTableName="bank_data"
  3. -DmodelName="xlab_m_LinearSVM_6143"
  4. -DfeatureColNames="pdays,emp_var_rate,cons_conf_idx"
  5. -DlabelColName="y"
  6. -DpositiveLabel="0";
  7. -DpositiveCost="1.0"
  8. -DnegativeCost="1.0"
  9. -Depsilon="0.001"

参数说明

参数名称 参数描述 参数值可选项 默认值
inputTableName 输入表 - -
inputTableParitions 可选,输入表中指定哪些分区参与训练,格式为: Partition_name=value。如果是多级格式为name1=value1/name2=value2;如果是指定多个分区,中间用’,’分开 - 输入表的所有分区
modelName 必选,输出的模型名称 - -
featureColNames 必选,输入表中用于训练的特征的列名 - -
labelColName 必选,输入表中标签列的列名 - -
positiveLabel 可选,正例的值 - 在label的取值中随机选择一个
positiveCost 可选,正例权重值。即正例惩罚因子 (0, ∞) 默认1.0
negativeCost 可选,负例权重值,即负例惩罚因子 (0, ∞) 默认1.0
epsilon 可选,收敛系数 (0, 1) 0.001
enableSparse 可选,输入数据是否为稀疏格式 ture,false false
itemDelimiter 可选,当输入表数据为稀疏格式时,kv间的分割符 - 空格
kvDelimiter 可选,当输入表数据为稀疏格式时,key和value的分割符 - 冒号
coreNum 可选,计算的核心数 正整数 系统自动分配
memSizePerCore 可选,每个核心的内存(单位为兆) 正整数,范围(0, 65536) 系统自动分配

具体示例

训练数据
id y f0 f1 f2 f3 f4 f5 f6 f7
1 -1 -0.294118 0.487437 0.180328 -0.292929 -1 0.00149028 -0.53117 -0.0333333
2 +1 -0.882353 -0.145729 0.0819672 -0.414141 -1 -0.207153 -0.766866 -0.666667
3 -1 -0.0588235 0.839196 0.0491803 -1 -1 -0.305514 -0.492741 -0.633333
4 +1 -0.882353 -0.105528 0.0819672 -0.535354 -0.777778 -0.162444 -0.923997 -1
5 -1 -1 0.376884 -0.344262 -0.292929 -0.602837 0.28465 0.887276 -0.6
6 +1 -0.411765 0.165829 0.213115 -1 -1 -0.23696 -0.894962 -0.7
7 -1 -0.647059 -0.21608 -0.180328 -0.353535 -0.791962 -0.0760059 -0.854825 -0.833333
8 +1 0.176471 0.155779 -1 -1 -1 0.052161 -0.952178 -0.733333
9 -1 -0.764706 0.979899 0.147541 -0.0909091 0.283688 -0.0909091 -0.931682 0.0666667
10 -1 -0.0588235 0.256281 0.57377 -1 -1 -1 -0.868488 0.1
测试数据
id y f0 f1 f2 f3 f4 f5 f6 f7
1 +1 -0.882353 0.0854271 0.442623 -0.616162 -1 -0.19225 -0.725021 -0.9
2 +1 -0.294118 -0.0351759 -1 -1 -1 -0.293592 -0.904355 -0.766667
3 +1 -0.882353 0.246231 0.213115 -0.272727 -1 -0.171386 -0.981213 -0.7
4 -1 -0.176471 0.507538 0.278689 -0.414141 -0.702128 0.0491804 -0.475662 0.1
5 -1 -0.529412 0.839196 -1 -1 -1 -0.153502 -0.885568 -0.5
6 +1 -0.882353 0.246231 -0.0163934 -0.353535 -1 0.0670641 -0.627669 -1
7 -1 -0.882353 0.819095 0.278689 -0.151515 -0.307329 0.19225 0.00768574 -0.966667
8 +1 -0.882353 -0.0753769 0.0163934 -0.494949 -0.903073 -0.418778 -0.654996 -0.866667
9 +1 -1 0.527638 0.344262 -0.212121 -0.356974 0.23696 -0.836038 -0.8
10 +1 -0.882353 0.115578 0.0163934 -0.737374 -0.56974 -0.28465 -0.948762 -0.933333
创建实验svm_example

ex_svm_demo

选择特征列

ex_svm_selected_feature

选择标签列

ex_svm_select_label

配置SVM的参数

ex_svm_set_param

运行实验
  • 生成模型如下:

ex_svm_model

  • 预测结果如下:ex_svm_predict_result

逻辑回归二分类

经典逻辑回归是一个二分类算法,组件支持稀疏、稠密两种数据格式。

组件设置

PAI 命令

  1. PAI -name logisticregression_binary
  2. -project algo_public
  3. -DmodelName="xlab_m_logistic_regression_6096"
  4. -DregularizedLevel="1"
  5. -DmaxIter="100"
  6. -DregularizedType="l1"
  7. -Depsilon="0.000001"
  8. -DlabelColName="y"
  9. -DfeatureColNames="pdays,emp_var_rate"
  10. -DgoodValue="1"
  11. -DinputTableName="bank_data"

参数说明

参数名称 参数描述 取值范围 是否必选,默认值
inputTableName 输入表 表名 必选
featureColNames 输入表中选择的用于训练的特征列名 列名 可选,默认值选择所有数值列
labelColName 输入表标签列列名 列名 必选
inputTablePartitions 输入表中指定哪些分区参与训练, 格式为: partition_name=value. 如果是多级格式为name1=value1/name2=value2; 如果是指定多个分区, 中间用’,’分开 可选, 默认值选择所有分区
modelName 输出模型名 模型名 必选
regularizedType 正则化类型 ‘l1’、’l2’、’None’ 可选,默认值’l1’
regularizedLevel 正则化系数,当 regularizedType 为 None 时,该项会被忽略 - 可选,默认为 1.0
maxIter 最大迭代数,指定L-BFGS的最大迭代次数 - 可选,默认值100
epsilon 收敛误差,L-BFGS的终止条件,即两次迭代之间log-likelihood的差 - 可选,默认值1.0e-06
goodValue 目标基准值。二分类时,指定训练系数针对的 label 值;如果填空,会随机选择一个 - 可选
enableSparse 输入数据是否为稀疏格式 true,false 可选,false
itemDelimiter 当输入表数据为稀疏格式时,kv间的分割符 - 可选,空格
kvDelimiter 当输入表数据为稀疏格式时,key和value的分割符 - 可选,冒号
coreNum 核心个数 正整数 可选,默认自动分配
memSizePerCore 单个核心使用的内存数,1000代表1GB内存 正整数 可选,默认自动分配

具体示例

数据生成

  1. drop table if exists lr_test_input;
  2. create table lr_test_input
  3. as
  4. select
  5. *
  6. from
  7. (
  8. select
  9. cast(1 as double) as f0,
  10. cast(0 as double) as f1,
  11. cast(0 as double) as f2,
  12. cast(0 as double) as f3,
  13. cast(0 as bigint) as label
  14. from dual
  15. union all
  16. select
  17. cast(0 as double) as f0,
  18. cast(1 as double) as f1,
  19. cast(0 as double) as f2,
  20. cast(0 as double) as f3,
  21. cast(0 as bigint) as label
  22. from dual
  23. union all
  24. select
  25. cast(0 as double) as f0,
  26. cast(0 as double) as f1,
  27. cast(1 as double) as f2,
  28. cast(0 as double) as f3,
  29. cast(1 as bigint) as label
  30. from dual
  31. union all
  32. select
  33. cast(0 as double) as f0,
  34. cast(0 as double) as f1,
  35. cast(0 as double) as f2,
  36. cast(1 as double) as f3,
  37. cast(1 as bigint) as label
  38. from dual
  39. union all
  40. select
  41. cast(1 as double) as f0,
  42. cast(0 as double) as f1,
  43. cast(0 as double) as f2,
  44. cast(0 as double) as f3,
  45. cast(0 as bigint) as label
  46. from dual
  47. union all
  48. select
  49. cast(0 as double) as f0,
  50. cast(1 as double) as f1,
  51. cast(0 as double) as f2,
  52. cast(0 as double) as f3,
  53. cast(0 as bigint) as label
  54. from dual
  55. ) a;

PAI命令行

训练

  1. drop offlinemodel if exists lr_test_model;
  2. PAI -name logisticregression_binary
  3. -project algo_public
  4. -DmodelName="lr_test_model"
  5. -DitemDelimiter=","
  6. -DregularizedLevel="1"
  7. -DmaxIter="100"
  8. -DregularizedType="None"
  9. -Depsilon="0.000001"
  10. -DkvDelimiter=":"
  11. -DlabelColName="label"
  12. -DfeatureColNames="f0,f1,f2,f3"
  13. -DenableSparse="false"
  14. -DgoodValue="1"
  15. -DinputTableName="lr_test_input";

预测

  1. drop table if exists lr_test_prediction_result;
  2. PAI -name prediction
  3. -project algo_public
  4. -DdetailColName="prediction_detail"
  5. -DmodelName="lr_test_model"
  6. -DitemDelimiter=","
  7. -DresultColName="prediction_result"
  8. -Dlifecycle="28"
  9. -DoutputTableName="lr_test_prediction_result"
  10. -DscoreColName="prediction_score"
  11. -DkvDelimiter=":"
  12. -DinputTableName="lr_test_input"
  13. -DenableSparse="false"
  14. -DappendColNames="label";

输入说明

lr_test_input

f0 f1 f2 f3 label
1.0 0.0 0.0 0.0 0
0.0 0.0 1.0 0.0 1
0.0 0.0 0.0 1.0 1
0.0 1.0 0.0 0.0 0
1.0 0.0 0.0 0.0 0
0.0 1.0 0.0 0.0 0

输出说明

lr_test_prediction_result

label prediction_result prediction_score prediction_detail
0 0 0.9999998793434426 {“0”: 0.9999998793434426, “1”: 1.206565574533681e-07}
1 1 0.999999799574135 {“0”: 2.004258650156743e-07, “1”: 0.999999799574135}
1 1 0.999999799574135 {“0”: 2.004258650156743e-07, “1”: 0.999999799574135}
0 0 0.9999998793434426 {“0”: 0.9999998793434426, “1”: 1.206565574533681e-07}
0 0 0.9999998793434426 {“0”: 0.9999998793434426, “1”: 1.206565574533681e-07}
0 0 0.9999998793434426 {“0”: 0.9999998793434426, “1”: 1.206565574533681e-07}

常见问题

目前特征上限2KW

KV格式说明

PAI中稀疏数据使用的表示方法为KV格式,使用itemDelimiter来表示kv间的分割符,用kvDelimiter来表示key和value的分割符

数据说明

key_value
1:100,4:200,5:300
1:10,2:20,3:30

KV格式使用索引(从0起始)表示key,使用字符表示key将会报错

逻辑回归多分类

经典逻辑回归多分类算法,组件支持稀疏、稠密两种数据格式

组件设置

PAI 命令

  1. PAI -name logisticregression_multi
  2. -project algo_public
  3. -DmodelName="xlab_m_logistic_regression_6096"
  4. -DregularizedLevel="1"
  5. -DmaxIter="100"
  6. -DregularizedType="l1"
  7. -Depsilon="0.000001"
  8. -DlabelColName="y"
  9. -DfeatureColNames="pdays,emp_var_rate"
  10. -DgoodValue="1"
  11. -DinputTableName="bank_data"

参数说明

参数名称 参数描述 取值范围 是否必选,默认值
inputTableName 输入表 表名 必选
featureColNames 输入表中选择的用于训练的特征列名 列名 可选,默认值选择所有数值列
labelColName 输入表标签列列名 列名 必选
inputTablePartitions 输入表中指定哪些分区参与训练, 格式为: partition_name=value. 如果是多级格式为name1=value1/name2=value2; 如果是指定多个分区, 中间用’,’分开 可选, 默认值选择所有分区
modelName 输出模型名 模型名 必选
regularizedType 正则化类型 ‘l1’、’l2’、’None’ 可选,默认值’l1’
regularizedLevel 正则化系数,当 regularizedType 为 None 时,该项会被忽略 - 可选,默认为 1.0
maxIter 最大迭代数,指定L-BFGS的最大迭代次数 - 可选,默认值100
epsilon 收敛误差,L-BFGS的终止条件,即两次迭代之间log-likelihood的差 - 可选,默认值1.0e-06
goodValue 目标基准值。二分类时,指定训练系数针对的 label 值;如果填空,会随机选择一个 - 可选
enableSparse 输入数据是否为稀疏格式 true,false 可选,false
itemDelimiter 当输入表数据为稀疏格式时,kv间的分割符 - 可选,空格
kvDelimiter 当输入表数据为稀疏格式时,key和value的分割符 - 可选,冒号
coreNum 核心个数 正整数 可选,默认自动分配
memSizePerCore 单个核心使用的内存数,1000代表1GB内存 正整数 可选,默认自动分配

具体示例

数据生成

  1. drop table if exists multi_lr_test_input;
  2. create table multi_lr_test_input
  3. as
  4. select
  5. *
  6. from
  7. (
  8. select
  9. cast(1 as double) as f0,
  10. cast(0 as double) as f1,
  11. cast(0 as double) as f2,
  12. cast(0 as double) as f3,
  13. cast(0 as bigint) as label
  14. from dual
  15. union all
  16. select
  17. cast(0 as double) as f0,
  18. cast(1 as double) as f1,
  19. cast(0 as double) as f2,
  20. cast(0 as double) as f3,
  21. cast(0 as bigint) as label
  22. from dual
  23. union all
  24. select
  25. cast(0 as double) as f0,
  26. cast(0 as double) as f1,
  27. cast(1 as double) as f2,
  28. cast(0 as double) as f3,
  29. cast(2 as bigint) as label
  30. from dual
  31. union all
  32. select
  33. cast(0 as double) as f0,
  34. cast(0 as double) as f1,
  35. cast(0 as double) as f2,
  36. cast(1 as double) as f3,
  37. cast(1 as bigint) as label
  38. from dual
  39. ) a;

PAI命令行

训练

  1. drop offlinemodel if exists multi_lr_test_model;
  2. PAI -name logisticregression_multi
  3. -project algo_public
  4. -DmodelName="multi_lr_test_model"
  5. -DitemDelimiter=","
  6. -DregularizedLevel="1"
  7. -DmaxIter="100"
  8. -DregularizedType="None"
  9. -Depsilon="0.000001"
  10. -DkvDelimiter=":"
  11. -DlabelColName="label"
  12. -DfeatureColNames="f0,f1,f2,f3"
  13. -DenableSparse="false"
  14. -DinputTableName="multi_lr_test_input";

预测

  1. drop table if exists multi_lr_test_prediction_result;
  2. PAI -name prediction
  3. -project algo_public
  4. -DdetailColName="prediction_detail"
  5. -DmodelName="multi_lr_test_model"
  6. -DitemDelimiter=","
  7. -DresultColName="prediction_result"
  8. -Dlifecycle="28"
  9. -DoutputTableName="multi_lr_test_prediction_result"
  10. -DscoreColName="prediction_score"
  11. -DkvDelimiter=":"
  12. -DinputTableName="multi_lr_test_input"
  13. -DenableSparse="false"
  14. -DappendColNames="label";

输入说明

multi_lr_test_input

f0 f1 f2 f3 label
1.0 0.0 0.0 0.0 0
0.0 0.0 1.0 0.0 2
0.0 0.0 0.0 1.0 1
0.0 1.0 0.0 0.0 0

输出说明

lr_test_prediction_result

label prediction_result prediction_score prediction_detail
0 0 0.9999997274902165 {“0”: 0.9999997274902165, “1”: 2.324679066261573e-07, “2”: 2.324679066261569e-07}
0 0 0.9999997274902165 {“0”: 0.9999997274902165, “1”: 2.324679066261573e-07, “2”: 2.324679066261569e-07}
2 2 0.9999999155958832 {“0”: 2.018833979850994e-07, “1”: 2.324679066261573e-07, “2”: 0.9999999155958832}
1 1 0.9999999155958832 {“0”: 2.018833979850994e-07, “1”: 0.9999999155958832, “2”: 2.324679066261569e-07}

常见问题

目前特征上限2KW

GBDT二分类

在GBDT回归与排序的基础上,用于二分类问题,即设定阈值,大于阈值为正例,反之为负例。

PAI命令及说明

1. PAI 命令

  1. PAI -name gbdt_lr
  2. -project algo_public
  3. -DfeatureSplitValueMaxSize="500"
  4. -DrandSeed="0"
  5. -Dshrinkage="0.5"
  6. -DmaxLeafCount="32"
  7. -DlabelColName="y"
  8. -DinputTableName="bank_data_partition"
  9. -DminLeafSampleCount="500"
  10. -DgroupIDColName="nr_employed"
  11. -DsampleRatio="0.6"
  12. -DmaxDepth="11"
  13. -DmodelName="xlab_m_GBDT_LR_21208"
  14. -DmetricType="2"
  15. -DfeatureRatio="0.6"
  16. -DinputTablePartitions="pt=20150501"
  17. -DtestRatio="0.0"
  18. -DfeatureColNames="age,previous,cons_conf_idx,euribor3m"
  19. -DtreeCount="500"

2. 参数说明

参数名称 参数描述 取值范围 是否必选,默认值
inputTableName 输入表 表名 必选
featureColNames 输入表中选择的用于训练的特征列名 列名 可选,默认值选择所有数值列
labelColName 输入表标签列列名 列名 必选
inputTablePartitions 可选,输入表中指定哪些分区参与训练,格式为Partition_name=value。如果是多级格式为name1=value1/name2=value2,如果是指定多个分区,中间用“,”分开 NA 可选, 默认值选择所有分区
modelName 输出模型名 NA 必选
outputImportanceTableName 输出特征重要性表名 NA 可选
groupIDColName 数据分组列 列名 可选,默认值整表
lossType 损失函数类型,0:GBRANK,1:LAMBDAMART_DCG,2:LAMBDAMART_NDCG,3:LEAST_SQUARE,4:LOG_LIKELIHOOD 0,1,2,3,4 可选,默认为 0
metricType metric类型,0(NDCG)-:normalized discounted cumulative gain;1(DCG) : discounted cumulative gain;2 (AUC) 只适应0/1 label 0,1,2 可选,默认值2
treeCount 树数量 [1,10000] 可选,默认值500
shrinkage 学习速率 (0,1] 可选,默认0.05
maxLeafCount 最大叶子数,必须为整数 [2,1000] 可选,默认32
maxDepth 一棵树的最大深度,必须为整数 [1,11] 可选,默认11
minLeafSampleCount 叶子节点容纳的最少样本数,必须为整数 [100,1000] 可选,默认500
sampleRatio 训练采集样本比例 (0,1] 可选,默认0.6
featureRatio 训练中采集的特征比例 (0,1] 可选,默认0.6
tau gbrank loss中的Tau参数 [0,1] 可选,默认0.6
p gbrank loss中的p参数 [1,10] 可选,默认1
randSeed 随机数种子 [0,10] 可选,默认0
newtonStep 是否使用newton法 0,1 可选,默认1
featureSplitValueMaxSize 一个特征分裂的最大数量 [1,1000] 可选,默认500
lifecycle 输出表的生命周期 NA 可选,默认不设置

具体示例

数据生成

  1. drop table if exists gbdt_lr_test_input;
  2. create table gbdt_lr_test_input
  3. as
  4. select
  5. *
  6. from
  7. (
  8. select
  9. cast(1 as double) as f0,
  10. cast(0 as double) as f1,
  11. cast(0 as double) as f2,
  12. cast(0 as double) as f3,
  13. cast(0 as bigint) as label
  14. from dual
  15. union all
  16. select
  17. cast(0 as double) as f0,
  18. cast(1 as double) as f1,
  19. cast(0 as double) as f2,
  20. cast(0 as double) as f3,
  21. cast(0 as bigint) as label
  22. from dual
  23. union all
  24. select
  25. cast(0 as double) as f0,
  26. cast(0 as double) as f1,
  27. cast(1 as double) as f2,
  28. cast(0 as double) as f3,
  29. cast(1 as bigint) as label
  30. from dual
  31. union all
  32. select
  33. cast(0 as double) as f0,
  34. cast(0 as double) as f1,
  35. cast(0 as double) as f2,
  36. cast(1 as double) as f3,
  37. cast(1 as bigint) as label
  38. from dual
  39. union all
  40. select
  41. cast(1 as double) as f0,
  42. cast(0 as double) as f1,
  43. cast(0 as double) as f2,
  44. cast(0 as double) as f3,
  45. cast(0 as bigint) as label
  46. from dual
  47. union all
  48. select
  49. cast(0 as double) as f0,
  50. cast(1 as double) as f1,
  51. cast(0 as double) as f2,
  52. cast(0 as double) as f3,
  53. cast(0 as bigint) as label
  54. from dual
  55. ) a;

PAI命令

训练

  1. drop offlinemodel if exists gbdt_lr_test_model;
  2. PAI -name gbdt_lr
  3. -project algo_public
  4. -DfeatureSplitValueMaxSize="500"
  5. -DrandSeed="1"
  6. -Dshrinkage="1"
  7. -DmaxLeafCount="30"
  8. -DlabelColName="label"
  9. -DinputTableName="gbdt_lr_test_input"
  10. -DminLeafSampleCount="1"
  11. -DsampleRatio="1"
  12. -DmaxDepth="10"
  13. -DmodelName="gbdt_lr_test_model"
  14. -DmetricType="0"
  15. -DfeatureRatio="1"
  16. -DtestRatio="0"
  17. -DfeatureColNames="f0,f1,f2,f3"
  18. -DtreeCount="5"

预测

  1. drop table if exists gbdt_lr_test_prediction_result;
  2. PAI -name prediction
  3. -project algo_public
  4. -DdetailColName="prediction_detail"
  5. -DmodelName="gbdt_lr_test_model"
  6. -DitemDelimiter=","
  7. -DresultColName="prediction_result"
  8. -Dlifecycle="28"
  9. -DoutputTableName="gbdt_lr_test_prediction_result"
  10. -DscoreColName="prediction_score"
  11. -DkvDelimiter=":"
  12. -DinputTableName="gbdt_lr_test_input"
  13. -DenableSparse="false"
  14. -DappendColNames="label";

输入说明

gbdt_lr_test_input

f0 f1 f2 f3 label
1.0 0.0 0.0 0.0 0
0.0 0.0 1.0 0.0 1
0.0 0.0 0.0 1.0 1
0.0 1.0 0.0 0.0 0
1.0 0.0 0.0 0.0 0
0.0 1.0 0.0 0.0 0

输出说明

gbdt_lr_test_prediction_result

label prediction_result prediction_score prediction_detail
0 0 0.9984308925552831 {“0”: 0.9984308925552831, “1”: 0.001569107444716943}
0 0 0.9984308925552831 {“0”: 0.9984308925552831, “1”: 0.001569107444716943}
1 1 0.9982721832240973 {“0”: 0.001727816775902724, “1”: 0.9982721832240973}
1 1 0.9982721832240973 {“0”: 0.001727816775902724, “1”: 0.9982721832240973}
0 0 0.9984308925552831 {“0”: 0.9984308925552831, “1”: 0.001569107444716943}
0 0 0.9984308925552831 {“0”: 0.9984308925552831, “1”: 0.001569107444716943}

常见问题

  • GBDT与GBDT_LR默认损失函数类型不一致。GBDT 默认为“regression loss:mean squared error loss”,GBDT_LR默认为“logistic regression loss”。其中GBDT_LR不需要用户设置损失函数类型,系统直接写入默认损失函数。
  • GBDT的列类型目前只支持数值,包括特征列,标签列和group列
  • 连接ROC曲线时预测组件应该选择自定义并选择目标基准值。

K近邻

该算法解决分类问题。对于预测表的每一行,从训练表中选出距离该行最近的K条记录,K条记录中类别数最多的那一类作为该行的类别。

PAI 命令

  1. PAI -name knn
  2. -DtrainTableName=pai_knn_test_input
  3. -DtrainFeatureColNames=f0,f1
  4. -DtrainLabelColName=class
  5. -DpredictTableName=pai_knn_test_input
  6. -DpredictFeatureColNames=f0,f1
  7. -DoutputTableName=pai_knn_test_output
  8. -Dk=2;

参数说明

参数名称 参数描述 参数值可选项 参数默认值
trainTableName 必选,训练表的表名 NA NA
trainFeatureColNames 必选,训练表中的特征列名 NA NA
trainLabelColName 必选,训练表中标签列的列名 NA NA
trainTablePartitions 可选,训练表中指定哪些分区参与训练 NA 所有partitions
predictTableName 必选,预测表的表名 NA NA
outputTableName 必选,输出表的表名 NA NA
predictFeatureColNames 可选,预测表中特征列名 NA 默认与trainFeatureColNames相同
predictTablePartitions 可选,预测表中指定哪些分区参与预测 NA 所有partitions
appendColNames 可选,输出表中附加预测表的列名 NA 默认与predictFeatureColNames相同
outputTablePartition 可选,输出表分区 NA 输出表不分区
k 可选,最近邻个数 正整数,[1,1000] 100
enableSparse 输入表数据是否为稀疏格式 true, false 可选, 默认值false
itemDelimiter 当输入表数据为稀疏格式时,kv间的分割符 字符 可选, 默认值为空格
kvDelimiter 当输入表数据为稀疏格式时,key和value的分割符 字符 可选, 默认值冒号
coreNum 节点个数 与参数memSizePerCore配对使用,正整数,范围[1, 20000] 可选, 默认自动计算
memSizePerCore 单个节点内存大小,单位为MB 正整数,范围[1024, 64*1024] 可选, 默认自动计算
lifecycle 可选,指定输出表的生命周期 正整数 没有生命周期

实例

测试数据

  1. create table pai_knn_test_input as
  2. select * from
  3. (
  4. select 1 as f0,2 as f1, 'good' as class from dual
  5. union all
  6. select 1 as f0,3 as f1, 'good' as class from dual
  7. union all
  8. select 1 as f0,4 as f1, 'bad' as class from dual
  9. union all
  10. select 0 as f0,3 as f1, 'good' as class from dual
  11. union all
  12. select 0 as f0,4 as f1, 'bad' as class from dual
  13. )tmp;

PAI 命令

  1. pai -name knn
  2. -DtrainTableName=pai_knn_test_input
  3. -DtrainFeatureColNames=f0,f1
  4. -DtrainLabelColName=class
  5. -DpredictTableName=pai_knn_test_input
  6. -DpredictFeatureColNames=f0,f1
  7. -DoutputTableName=pai_knn_test_output
  8. -Dk=2;

输出说明

image

  • f0,f1:结果附件列。
  • prediction_result:分类结果。
  • prediction_score: 分类结果对应概率。
  • prediction_detail: 最近K个结论以及对应的概率。

随机森林

随机森林是一个包含多个决策树的分类器,并且其输出的类别是由单棵树输出的类别的众数而定。单棵树算法可以选择id3,c4.5,cart。更多详细介绍请参见wiki

PAI 命令

  1. PAI -name randomforests
  2. -project algo_public
  3. -DinputTableName="pai_rf_test_input"
  4. -DmodelName="pai_rf_test_model"
  5. -DforceCategorical="f1"
  6. -DlabelColName="class"
  7. -DfeatureColNames="f0,f1"
  8. -DmaxRecordSize="100000"
  9. -DminNumPer="0"
  10. -DminNumObj="2"
  11. -DtreeNum="3";

参数说明

参数名称 参数描述 取值范围 是否必选,默认值/行为
inputTableName 输入表 表名 必选
inputTablePartitions 输入表中指定哪些分区参与训练,格式为Partition_name=value。如果是多级格式为name1=value1/name2=value2,如果是指定多个分区,中间用“,”分开 NA 可选, 默认值选择所有分区
labelColName 输入表中标签列的列名 列名 必选
modelName 输出的模型名 NA 必选
treeNum 森林中树的个数 正整数,(0, 1000] 必选
weightColName 输入表中权重列的列名 NA 可选,默认无权重列
featureColNames 输入表中用于训练的特征的列名 NA 可选,默认除labelColName、weightColName外其他所有列
excludedColNames 用于反选特征列,该参数不可以与featureColNames并存 NA 可选, 默认为空
forceCategorical feature默认解析规则为string、boolean、datetime类型的列解析为离散类型,double、bigint类型的列解析为连续类型。若要将bigint解析为categorical,则需通过参数forceCategorical指定 NA 可选,默认int为连续类型
algorithmTypes 单颗树的算法在森林中的位置 如果有则长度为2。比如有n棵树,algorithmTypes=[a,b],则[0,a) 是 id3, [a,b) 是cart, [b,n) 是c4.5。例如在一个拥有5棵树的森林中,[2, 4]表示0,1为id3算法,2, 3为cart算法,4为c4.5算法。如果输入为None,则算法在森林中均分 可选,默认算法在森林中均分
randomColNum 单颗树在生成时,每次分裂选择的随机的特征个数 [1-N],其中N为feature个数 可选,默认log2N
minNumObj 叶节点数据的最小个数 正整数 可选,默认2
minNumPer 叶节点数据个数占父节点的最小比例 [0,1] 可选,默认0.0
maxTreeDeep 单颗树的最大深度 [1, ∞) 可选,默认∞
maxRecordSize 森林中单颗树输入的随机数据的个数 (1000, 1000000] 可选,默认100000

实例

测试数据

  1. create table pai_rf_test_input as
  2. select * from
  3. (
  4. select 1 as f0,2 as f1, "good" as class from dual
  5. union all
  6. select 1 as f0,3 as f1, "good" as class from dual
  7. union all
  8. select 1 as f0,4 as f1, "bad" as class from dual
  9. union all
  10. select 0 as f0,3 as f1, "good" as class from dual
  11. union all
  12. select 0 as f0,4 as f1, "bad" as class from dual
  13. )tmp;

PAI命令

  1. PAI -name randomforests
  2. -project algo_public
  3. -DinputTableName="pai_rf_test_input"
  4. -Dmodelbashame="pai_rf_test_model"
  5. -DforceCategorical="f1"
  6. -DlabelColName="class"
  7. -DfeatureColNames="f0,f1"
  8. -DmaxRecordSize="100000"
  9. -DminNumPer="0"
  10. -DminNumObj="2"
  11. -DtreeNum="3";

输出说明

模型PMML:

  1. <?xml version="1.0" encoding="utf-8"?
  2. <PMML xmlns="http://www.dmg.org/PMML-4_2" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="4.2" xsi:schemaLocation="http://www.dmg.org/PMML-4_2 http://www.dmg.org/v4-2/pmml-4-2.xsd"
  3. <Header copyright="Copyright (c) 2014, Alibaba Inc." description=""
  4. <Application name="ODPS/PMML" version="0.1.0"/
  5. <TimestampTue, 12 Jul 2016 07:04:48 GMT</Timestamp
  6. </Header
  7. <DataDictionary numberOfFields="2"
  8. <DataField name="f0" optype="continuous" dataType="integer"/
  9. <DataField name="f1" optype="continuous" dataType="integer"/
  10. <DataField name="class" optype="categorical" dataType="string"
  11. <Value value="bad"/
  12. <Value value="good"/
  13. </DataField
  14. </DataDictionary
  15. <MiningModel modelName="xlab_m_random_forests_1_75078_v0" functionName="classification" algorithmName="RandomForests"
  16. <MiningSchema
  17. <MiningField name="f0" usageType="active"/
  18. <MiningField name="f1" usageType="active"/
  19. <MiningField name="class" usageType="target"/
  20. </MiningSchema
  21. <Segmentation multipleModelMethod="majorityVote"
  22. <Segment id="0"
  23. <True/
  24. <TreeModel modelName="xlab_m_random_forests_1_75078_v0" functionName="classification" algorithmName="RandomForests"
  25. <MiningSchema
  26. <MiningField name="f0" usageType="active"/
  27. <MiningField name="f1" usageType="active"/
  28. <MiningField name="class" usageType="target"/
  29. </MiningSchema
  30. <Node id="1"
  31. <True/
  32. <ScoreDistribution value="bad" recordCount="2"/
  33. <ScoreDistribution value="good" recordCount="3"/
  34. <Node id="2" score="good"
  35. <SimplePredicate field="f1" operator="equal" value="2"/
  36. <ScoreDistribution value="good" recordCount="1"/
  37. </Node
  38. <Node id="3" score="good"
  39. <SimplePredicate field="f1" operator="equal" value="3"/
  40. <ScoreDistribution value="good" recordCount="2"/
  41. </Node
  42. <Node id="4" score="bad"
  43. <SimplePredicate field="f1" operator="equal" value="4"/
  44. <ScoreDistribution value="bad" recordCount="2"/
  45. </Node
  46. </Node
  47. </TreeModel
  48. </Segment
  49. <Segment id="1"
  50. <True/
  51. <TreeModel modelName="xlab_m_random_forests_1_75078_v0" functionName="classification" algorithmName="RandomForests"
  52. <MiningSchema
  53. <MiningField name="f0" usageType="active"/
  54. <MiningField name="f1" usageType="active"/
  55. <MiningField name="class" usageType="target"/
  56. </MiningSchema
  57. <Node id="1"
  58. <True/
  59. <ScoreDistribution value="bad" recordCount="2"/
  60. <ScoreDistribution value="good" recordCount="3"/
  61. <Node id="2" score="good"
  62. <SimpleSetPredicate field="f1" booleanOperator="isIn"
  63. <Array n="2" type="integer"2 3</Array
  64. </SimpleSetPredicate
  65. <ScoreDistribution value="good" recordCount="3"/
  66. </Node
  67. <Node id="3" score="bad"
  68. <SimpleSetPredicate field="f1" booleanOperator="isNotIn"
  69. <Array n="2" type="integer"2 3</Array
  70. </SimpleSetPredicate
  71. <ScoreDistribution value="bad" recordCount="2"/
  72. </Node
  73. </Node
  74. </TreeModel
  75. </Segment
  76. <Segment id="2"
  77. <True/
  78. <TreeModel modelName="xlab_m_random_forests_1_75078_v0" functionName="classification" algorithmName="RandomForests"
  79. <MiningSchema
  80. <MiningField name="f0" usageType="active"/
  81. <MiningField name="f1" usageType="active"/
  82. <MiningField name="class" usageType="target"/
  83. </MiningSchema
  84. <Node id="1"
  85. <True/
  86. <ScoreDistribution value="bad" recordCount="2"/
  87. <ScoreDistribution value="good" recordCount="3"/
  88. <Node id="2" score="bad"
  89. <SimplePredicate field="f0" operator="lessOrEqual" value="0.5"/
  90. <ScoreDistribution value="bad" recordCount="1"/
  91. <ScoreDistribution value="good" recordCount="1"/
  92. </Node
  93. <Node id="3" score="good"
  94. <SimplePredicate field="f0" operator="greaterThan" value="0.5"/
  95. <ScoreDistribution value="bad" recordCount="1"/
  96. <ScoreDistribution value="good" recordCount="2"/
  97. </Node
  98. </Node
  99. </TreeModel
  100. </Segment
  101. </Segmentation
  102. </MiningModel
  103. </PMML

模型可视化:

image

朴素贝叶斯

  • 朴素贝叶斯分类是一种应用基于独立假设的贝叶斯定理的简单概率分类算法,更精确的描述这种潜在的概率模型为独立特征模型。 算法详见:Naive Bayes classifier

  • 该算法解决分类问题。

组件配置

naive_bayes_param_show

  • 特征列:支持double、string与bigint数据类型
  • 标签列:只能选择非特征列的其它列,支持double、string与bigint类型

PAI 命令

  1. PAI -name NaiveBayes -project algo_public
  2. -DinputTablePartitions="pt=20150501"
  3. -DmodelName="xlab_m_NaiveBayes_23772"
  4. -DlabelColName="poutcome"
  5. -DfeatureColNames="age,previous,cons_conf_idx,euribor3m"
  6. -DinputTableName="bank_data_partition";

参数说明

参数名称 参数描述 参数值可选项 默认值
inputTableName 必选,输入表的表名 - -
inputTablePartitions 可选,输入表中指定哪些分区参与训练 格式为: Partition_name=value。如果是多级格式为name1=value1/name2=value2;如果是指定多个分区,中间用’,’分开 输入表的所有partition
modelName 必选,输出的模型名 - -
labelColName 必选,输入表中标签列的列名 - -
featureColNames 可选,输入表中用于训练的特征的列名 - 除label列外其他所有列
excludedColNames 可选,用于反选特征列,该参数不可以与featureColNames并存 - 空列
forceCategorical 可选,feature默认解析规则:string、boolean、datetime类型的列解析为离散类型,double、bigint类型的列解析为连续类型;若有将bigint解析为categorical的情况,通过参数forceCategorical指定 - int为连续类型
coreNum 可选,计算的核心数 正整数 系统自动分配
memSizePerCore 可选,每个核心的内存(单位为兆) 正整数,范围(0, 65536) 系统自动分配

具体示例

训练数据
id y f0 f1 f2 f3 f4 f5 f6 f7
1 -1 -0.294118 0.487437 0.180328 -0.292929 -1 0.00149028 -0.53117 -0.0333333
2 +1 -0.882353 -0.145729 0.0819672 -0.414141 -1 -0.207153 -0.766866 -0.666667
3 -1 -0.0588235 0.839196 0.0491803 -1 -1 -0.305514 -0.492741 -0.633333
4 +1 -0.882353 -0.105528 0.0819672 -0.535354 -0.777778 -0.162444 -0.923997 -1
5 -1 -1 0.376884 -0.344262 -0.292929 -0.602837 0.28465 0.887276 -0.6
6 +1 -0.411765 0.165829 0.213115 -1 -1 -0.23696 -0.894962 -0.7
7 -1 -0.647059 -0.21608 -0.180328 -0.353535 -0.791962 -0.0760059 -0.854825 -0.833333
8 +1 0.176471 0.155779 -1 -1 -1 0.052161 -0.952178 -0.733333
9 -1 -0.764706 0.979899 0.147541 -0.0909091 0.283688 -0.0909091 -0.931682 0.0666667
10 -1 -0.0588235 0.256281 0.57377 -1 -1 -1 -0.868488 0.1
测试数据
id y f0 f1 f2 f3 f4 f5 f6 f7
1 +1 -0.882353 0.0854271 0.442623 -0.616162 -1 -0.19225 -0.725021 -0.9
2 +1 -0.294118 -0.0351759 -1 -1 -1 -0.293592 -0.904355 -0.766667
3 +1 -0.882353 0.246231 0.213115 -0.272727 -1 -0.171386 -0.981213 -0.7
4 -1 -0.176471 0.507538 0.278689 -0.414141 -0.702128 0.0491804 -0.475662 0.1
5 -1 -0.529412 0.839196 -1 -1 -1 -0.153502 -0.885568 -0.5
6 +1 -0.882353 0.246231 -0.0163934 -0.353535 -1 0.0670641 -0.627669 -1
7 -1 -0.882353 0.819095 0.278689 -0.151515 -0.307329 0.19225 0.00768574 -0.966667
8 +1 -0.882353 -0.0753769 0.0163934 -0.494949 -0.903073 -0.418778 -0.654996 -0.866667
9 +1 -1 0.527638 0.344262 -0.212121 -0.356974 0.23696 -0.836038 -0.8
10 +1 -0.882353 0.115578 0.0163934 -0.737374 -0.56974 -0.28465 -0.948762 -0.933333
创建实验

ex_naive_bayes_demo

选择特征列

ex_naive_bayes_select_features

选择标签列

ex_naive_bayes_select_label

运行实验
  • 生成的模型如下:

    ex_naive_bayes_model

  • 预测结果如下: ex_naive_bayes_prediction

K均值聚类

K均值聚类是一种得到最广泛使用的聚类算法,把n个对象分为k个簇,使簇内具有较高的相似度。相似度根据一个簇中对象的平均值来计算。
算法首先随机地选择k个对象,每个对象初始地代表了一个簇的平均值或中心。对剩余的每个对象根据其与各个簇中心的距离,将它赋给最近的簇,然后重新计算每个簇的平均值。这个过程不断重复,直到准则函数收敛。
它假设对象属性来自于空间向量,并且目标是使各个群组内部的均方误差总和最小。
KMeans的详细介绍请见维基百科链接 wiki

PAI 命令

  1. pai -name kmeans
  2. -project algo_public
  3. -DinputTableName=pai_kmeans_test_input
  4. -DselectedColNames=f0,f1
  5. -DappendColNames=f0,f1
  6. -DcenterCount=3
  7. -Dloop=10
  8. -Daccuracy=0.01
  9. -DdistanceType=euclidean
  10. -DinitCenterMethod=random
  11. -Dseed=1
  12. -DmodelName=pai_kmeans_test_output_model_
  13. -DidxTableName=pai_kmeans_test_output_idx
  14. -DclusterCountTableName=pai_kmeans_test_output_couter
  15. -DcenterTableName=pai_kmeans_test_output_center;

参数说明

参数名称 参数描述 取值范围 是否必选,默认值/行为
inputTableName 输入表 表名 必选
selectedColNames 输入表中用于训练的列名,以逗号分隔,支持int和double类型。当输入为稀疏格式时可以支持string类型列 列名 可选,默认值选择所有列
inputTablePartitions 输入表中指定哪些分区参与训练, 格式为: Partition_name=value. 如果是多级格式为name1=value1/name2=value2; 如果是指定多个分区, 中间用’,’分开 可选, 默认值选择所有分区
centerCount 聚类数k 正整数, [1, 5000] 必选
loop 最大迭代次数 正整数, [1, 1000] 可选,默认值100
accuracy 算法终止条件,如果两次迭代之间变化低于该值, 算法终止 可选, 默认值0.0
distanceType 距离度量方式,或者写kmeansDistanceType也兼容支持 euclidean(欧式距离)
cosine(夹角余弦)
cityblock(曼哈顿距离)
可选, 默认值euclidean
initCenterMethod 质心初始化方法 random(随机采样)
topk(输入表前k行)
uniform(均匀分布)
kmpp(kmeans++)
external(指定初始质心表)
可选,默认值random
initCenterTableName 初始质心表名 表名 当initCenterMethod为external时生效
seed 初始随机种子 正整数 可选,默认值为当前时间。seed设置为固定值,每次聚类结果是稳定的
enableSparse 输入表数据是否为稀疏格式 true, false 可选, 默认值false
itemDelimiter 当输入表数据为稀疏格式时,kv间的分割符 可选, 默认值为空格
kvDelimiter 当输入表数据为稀疏格式时,key和value的分割符。其中key是稀疏矩阵的列号,建议从0或1编号,不能超过2,000,000 可选, 默认值冒号
appendColNames inputTableName表的哪些列附加输出到idxTableName表,列名以逗号分隔 可选,默认值无附加列
modelName 输出模型 模型名 可选,输出聚类中心表等信息到模型,供预测使用
idxTableName 输出聚类结果表,和输入表对应,并指明聚类后每条record所属的类号 表名 必选
idxTablePartition 输出聚类结果表的分区 表名 可选,默认不输出分区
clusterCountTableName 输出聚类统计表,统计各个聚类包含的点的数目 可选, 模型不输出
centerTableName 输出聚类中心表 可选
coreNum 节点个数 与参数memSizePerCore配对使用,正整数,范围[1, 9999]
可选, 默认自动计算
memSizePerCore 单个节点内存大小,单位M 正整数,范围[1024, 64 *1024]
可选, 默认自动计算
lifecycle 可选,指定输出表的生命周期 正整数 没有生命周期

距离度量方式

参数名称 参数描述
euclidean image
cosine image
cityblock image

质心初始化方法

参数名称 参数描述
random 从输入数据表中随机采样出K个初始中心点,初始随机种子可以有参数seed指定
topk 从输入表中读取前K行作为初始中心点
uniform 从输入数据表,按最小到最大值,均匀计算出K个初始中心点
kmpp 使用k-means++算法选出K个初始中心点,详细介绍请见维基百科链接wiki
external 指定额外的初始中心表

具体示例

具体示例一
  • 测试数据
  1. create table pai_kmeans_test_input as
  2. select * from
  3. (
  4. select 'id1' as id,1 as f0,2 as f1 from dual
  5. union all
  6. select 'id2' as id,1 as f0,3 as f1 from dual
  7. union all
  8. select 'id3' as id,1 as f0,4 as f1 from dual
  9. union all
  10. select 'id4' as id,0 as f0,3 as f1 from dual
  11. union all
  12. select 'id5' as id,0 as f0,4 as f1 from dual
  13. )tmp;

其中dual表是一个基础表。

如果使用外部表初始化质心的方式,可按

  1. create table pai_kmeans_test_init_center as
  2. select * from
  3. (
  4. select 1 as f0,2 as f1 from dual
  5. union all
  6. select 1 as f0,3 as f1 from dual
  7. union all
  8. select 1 as f0,4 as f1 from dual
  9. )tmp;
  • pai命令[使用初始中心表]
  1. drop table if exists pai_kmeans_test_output_idx;
  2. yes
  3. drop table if exists pai_kmeans_test_output_couter;
  4. yes
  5. drop table if exists pai_kmeans_test_output_center;
  6. yes
  7. drop offlinemodel if exists pai_kmeans_test_output_model_;
  8. yes
  9. pai -name kmeans
  10. -project algo_public
  11. -DinputTableName=pai_kmeans_test_input
  12. -DinitCenterTableName=pai_kmeans_test_init_center
  13. -DselectedColNames=f0,f1
  14. -DappendColNames=f0,f1
  15. -DcenterCount=3
  16. -Dloop=10
  17. -Daccuracy=0.01
  18. -DdistanceType=euclidean
  19. -DinitCenterMethod=external
  20. -Dseed=1
  21. -DmodelName=pai_kmeans_test_output_model_
  22. -DidxTableName=pai_kmeans_test_output_idx
  23. -DclusterCountTableName=pai_kmeans_test_output_couter
  24. -DcenterTableName=pai_kmeans_test_output_center;
  • pai命令[使用随机初始中心]
  1. drop table if exists pai_kmeans_test_output_idx;
  2. yes
  3. drop table if exists pai_kmeans_test_output_couter;
  4. yes
  5. drop table if exists pai_kmeans_test_output_center;
  6. yes
  7. drop offlinemodel if exists pai_kmeans_test_output_model_;
  8. yes
  9. pai -name kmeans
  10. -project algo_public
  11. -DinputTableName=pai_kmeans_test_input
  12. -DselectedColNames=f0,f1
  13. -DappendColNames=f0,f1
  14. -DcenterCount=3
  15. -Dloop=10
  16. -Daccuracy=0.01
  17. -DdistanceType=euclidean
  18. -DinitCenterMethod=random
  19. -Dseed=1
  20. -DmodelName=pai_kmeans_test_output_model_
  21. -DidxTableName=pai_kmeans_test_output_idx
  22. -DclusterCountTableName=pai_kmeans_test_output_couter
  23. -DcenterTableName=pai_kmeans_test_output_center;
  • pai命令[附加列选别的]
  1. drop table if exists pai_kmeans_test_output_idx;
  2. yes
  3. drop table if exists pai_kmeans_test_output_couter;
  4. yes
  5. drop table if exists pai_kmeans_test_output_center;
  6. yes
  7. drop offlinemodel if exists pai_kmeans_test_output_model_;
  8. yes
  9. pai -name kmeans
  10. -project algo_public
  11. -DinputTableName=pai_kmeans_test_input
  12. -DselectedColNames=f0,f1
  13. -DappendColNames=id
  14. -DcenterCount=3
  15. -Dloop=10
  16. -Daccuracy=0.01
  17. -DdistanceType=euclidean
  18. -DinitCenterMethod=random
  19. -Dseed=1
  20. -DmodelName=pai_kmeans_test_output_model_
  21. -DidxTableName=pai_kmeans_test_output_idx
  22. -DclusterCountTableName=pai_kmeans_test_output_couter
  23. -DcenterTableName=pai_kmeans_test_output_center;
  • 输出说明

1)聚类结果表:idxTableName,行数等于输入表总行数,每行的值表示输入表对应行表示的点的聚类编号,字段分别为:

column name comment
appendColNames 附加列
cluster_index 表示训练表每行样本被分配到的簇
distance 表示训练表每行样本到簇中心的距离

数据展示

  1. +------------+------------+---------------+------------+
  2. | f0 | f1 | cluster_index | distance |
  3. +------------+------------+---------------+------------+
  4. | 1 | 2 | 0 | 0.0 |
  5. | 1 | 3 | 1 | 0.5 |
  6. | 1 | 4 | 2 | 0.5 |
  7. | 0 | 3 | 1 | 0.5 |
  8. | 0 | 4 | 2 | 0.5 |
  9. +------------+------------+---------------+------------+

2)聚类统计表:clusterCountTableName,行数据等于聚类个数,每行的值表示当前聚类包含的点个数,字段分别为:

column name comment
cluster_index 簇编号
cluster_count 每个聚类有多少条样本行

数据展示

  1. +---------------+---------------+
  2. | cluster_index | cluster_count |
  3. +---------------+---------------+
  4. | 0 | 1 |
  5. | 1 | 2 |
  6. | 2 | 2 |
  7. +---------------+---------------+

3)聚类中心表:centerTableName,字段分别为:

column name comment
cluster_index 簇编号
selectedColNames 选择列

数据展示

  1. +---------------+------------+------------+
  2. | cluster_index | f0 | f1 |
  3. +---------------+------------+------------+
  4. | 0 | 1.0 | 2.0 |
  5. | 1 | 0.5 | 3.0 |
  6. | 2 | 0.5 | 4.0 |
  7. +---------------+------------+------------+

4)输出模型

Pai Studio展示

image

5)Pai Studio展示-Pipeline