BISECTING_KMEANS
对输入关系运行二分 k-means 算法。结果将生成一个具有群集中心层次结构的已训练模型,其包含一系列 k 值,每个值都可用于预测。
这是元函数。您必须在顶级 SELECT 语句中调用元函数。
行为类型
易变语法
BISECTING_KMEANS('model-name', 'input-relation', 'input-columns', 'num-clusters'
[ USING PARAMETERS
[exclude_columns = 'exclude-columns']
[, bisection_iterations = bisection-iterations]
[, split_method = 'split-method']
[, min_divisible_cluster_size = min-cluster-size]
[, kmeans_max_iterations = kmeans-max-iterations]
[, kmeans_epsilon = kmeans-epsilon]
[, kmeans_center_init_method = 'kmeans-init-method']
[, distance_method = 'distance-method']
[, output_view = 'output-view']
[, key_columns = 'key-columns'] ] )
参数
- model‑name
- 标识要创建的模型,其中 model‑name 符合标识符中描述的约定。 同一架构中的序列、表、投影、视图和模型中也必须是唯一的。
- input‑relation
- 包含 k 均值输入数据的表或视图。 如果输入关系在 Hive 中定义,请使用
SYNC_WITH_HCATALOG_SCHEMA
以同步hcatalog
架构,然后运行机器学习功能。 - input‑columns
- 输入关系中要使用的列的逗号分隔列表,或者使用星号 (*) 选择所有列。 输入列的数据类型必须为数字。
- num‑clusters
- 要创建的群集数,为 ≤ 10,000 的整数。此实参表示 k 均值中的 k。
参数
exclude_columns
input-columns 中要排除在处理范围之外的列名的逗号分隔列表。
bisection_iterations
- 1 - 1MM(包含)之间的整数,指定二等分 k 均值算法对每个二等分步骤执行的迭代次数。其对应于独立 k 均值算法在每个二等分步骤中运行的次数。
如果设置为 >1,则允许算法运行并选择在每个二等分步骤中运行的最佳 k 均值。如果使用 kmeanspp,
bisection_iterations
的值始终为 1,因为 kmeanspp 的运行成本更高(但也好过替代方案),因此它不需要多次运行。默认值: 1
split_method
- 用于选择要进行二等分/拆分的群集的方法,为以下之一:
-
size
:选择最大群集进行二等分。 -
sum_squares
:选择群集内平方和最大的群集进行二等分。
默认值:
sum_squares
-
min_divisible_cluster_size
- ≥ 2 的整数,指定可分群集中点的最小数量。
默认值: 2
kmeans_max_iterations
- 1 和 1MM(包含)之间的整数,指定 k 均值算法执行的最大迭代数。如果该值小于收敛所需要的迭代数,则算法无法进行收敛。
默认值: 10
kmeans_epsilon
- 1 和 1MM(包含)之间的整数,确定 k 均值算法是否已收敛。自上一次迭代后,如果中心移动的距离小于 epsilon,则认为该算法已收敛。
默认值: 1e-4
kmeans_center_init_method
- 用于找到初始群集中心的 k 均值方法,为以下之一:
-
kmeanspp
(默认):kmeans++ 算法 -
pseudo
:使用 Spark 所用的“伪中心”方法,将给定中心二等分,但不迭代点
-
distance_method
- 两个数据点之间的距离测量。目前仅支持欧氏距离。
默认值:
euclidean
output_view
- 保存分配到群集的每个点的视图名称。您必须对视图架构具有 CREATE 权限。
key_columns
- 用于标识输出行的列名称的逗号分隔列表。列必须位于 input-columns 实参列表中。要防止算法使用这些和其他输入列,请将其列在参数
exclude_columns
中。
模型属性
centers
- K 个质心的中心列表。
hierarchy
- K 个群集的层次结构,包括:
-
ParentCluster:每个质心的父群集质心 — 即基于其通过二等分得到一个群集的群集质心。
-
LeftChildCluster:每个质心的左子群集质心 — 即将一个群集二等分后得到的第一个子群集的质心。
-
RightChildCluster:每个质心的右子群集质心 — 即将一个群集二等分得到的第二个子群集的质心。
-
BisectionLevel:指定通过其得到一个群集的二等分步骤。
-
WithinSS:当前群集的群集内平方和
-
TotalWithinSS:迄今为止获得的叶群集的群集内总平方和。
-
metrics
- 与群集质量相关的几个指标,包括
-
总平方和
-
群集内总平方和
-
群集间总平方和
-
群集间平方和/总平方和
-
群集 x、center_id y[...] 的平方和
-
示例
SELECT BISECTING_KMEANS('myModel', 'iris1', '*', '5'
USING PARAMETERS exclude_columns = 'Species,id', split_method ='sum_squares', output_view = 'myBKmeansView');