KMEANS


Applies to: CELONIS 4.3 CELONIS 4.4

Description

KMeans finds clusters based on the K-means++ algorithm. It assigns a number to every cluster.
KMeans consists of two steps, as in Linear Regression. The first step is training a model, meaning finding the centroids of the clusters. Second, cluster the values by the model. Our KMeans implementation is very flexible and allows the user to specify on which data the algorithm should train, and which data it should cluster.
There is also a simple KMeans operator, which just expects the number of clusters.

KMeans находит кластеры на основе алгоритма K-means ++. Он присваивает номер каждому кластеру.
KMeans состоит из двух этапов, как в линейной регрессии. Первым шагом является обучение модели, то есть нахождение центроидов кластеров. Во-вторых, кластеризовать значения по модели. Наша реализация KMeans является очень гибкой и позволяет пользователю указать, на каких данных должен обучаться алгоритм и какие данные он должен кластеризовать.
Существует также простой оператор KMeans, который просто ожидает количество кластеров.

Syntax

Simple Kmeans. It creates K clusters based on all other inputs in the query:
Простые Kmeans. Он создает K кластеров на основе всех других входных данных в запросе:

KMEANS ( k )

  • k: Number of clusters.
Количество кластеров.
Flexible Kmeans:
Гибкие Kmeans:

KMEANS ( TRAIN_[Filtered_]KM ( [ EXCLUDED ( table.exclude_column, ... ), ] INPUT ( table.input_column, ... ), k ), CLUSTER ( table.cluster_column, ... ) )

  • TRAIN_KM: Finds K centroids in the cluster. Authorization objects are still respected.
Находит K центроидов в скоплении. Объекты авторизации все еще соблюдаются.
  • TRAIN_FILTERED_KM: Finds K centroids in the filtered data.
Находит K центроидов в отфильтрованных данных.
  • EXCLUDED: Here you can optionally define dimensions which influence the aggregations used for model training, but are not itself included in the training.
Здесь вы можете опционально определить измерения, которые влияют на совокупности, используемые для обучения модели, но сами по себе не включаются в обучение.
  • INPUT: One or more columns, which is used to train the model.
Один или несколько столбцов, которые используются для обучения модели.
  • k: Number of clusters.
Количество кластеров.
  • CLUSTER: One or more columns, which are clustered based on the trained centroids.
Один или несколько столбцов, которые сгруппированы на основе обученных центроидов.
All columns in TRAIN_KM have to be joinable. The columns in CLUSTER do not have to be joinable with the columns in TRAIN_KM.
The input of the model training is regarded as an independent sub query. This means if an aggregation is used, it is independent of the dimensions defined in the rest of the query. This also means that the columns within TRAIN_KM have to be joinable, but not with the columns used in the rest of the query.

Все столбцы в TRAIN_KM должны быть присоединяемыми. Столбцы в CLUSTER не обязательно должны соединяться со столбцами в TRAIN_KM.
Ввод модели обучения рассматривается как независимый подзапрос. Это означает, что если используется агрегация, она не зависит от измерений, определенных в остальной части запроса. Это также означает, что столбцы в TRAIN_KM должны быть соединяемыми, но не со столбцами, используемыми в оставшейся части запроса.

Filter behavior

Standard KMeans

If rows of a column are filtered, it does not affect the linear model, as long as the kmeans model is not trained on aggregation results. This means independent of filters and selections, the underlying model stays the same. If you want to restrict the input data of a model you can use a CASE WHEN statement and map the values you want to be ignored to null. If a model is trained on results of an aggregation it still changes with the filtering because the result of the aggregation is affected by the filtering.

Если строки столбца фильтруются, это не влияет на линейную модель, если модель kmeans не обучена результатам агрегации. Это означает, что независимо от фильтров и выборок базовая модель остается неизменной. Если вы хотите ограничить входные данные модели, вы можете использовать оператор CASE WHEN и сопоставить значения, которые вы хотите игнорировать, с нулем. Если модель обучается на результатах агрегации, она все еще изменяется с фильтрацией, потому что фильтрация влияет на результат агрегации.

Filtered KMeans

If a filter or selection changes, the model is retrained and the resulting function adopts to the new of view of data. This has a serious performance impact.

Если фильтр или выбор изменяется, модель переобучается, и результирующая функция адаптируется к новому представлению данных. Это оказывает серьезное влияние на производительность.

Result

KMeans finds clusters based on the K-means++ algorithm. It assigns a number to every cluster. K-means is not a stable algorithm, so you can get different results when executing the algorithm multiple times. Therefore you must not rely that clusters stay the same.
KMeans находит кластеры на основе алгоритма K-means ++. Он присваивает номер каждому кластеру. K-means не является стабильным алгоритмом, поэтому вы можете получить разные результаты при многократном выполнении алгоритма. Поэтому вы не должны полагаться на то, что кластеры остаются прежними.

Examples

Example using simple KMeans syntax on an aggregation.
Пример использования простого синтаксиса KMeans для агрегации.
Query
Column1

"Table1"."MONTH"

Column2

sum("Table1"."Income")

Column3

KMEANS(3)

Input
Table1

Month : INT
Income : INT
1
100
1
150
2
450
2
500
3
800
3
900

Output
Result

Column1 : INT
Column2 : INT
Column3 : INT
1
250
1
2
950
2
3
1700
0




Example returning the same result as above but using advanced syntax.
Пример, возвращающий тот же результат, что и выше, но с использованием расширенного синтаксиса.
Query
Column1

"Table1"."MONTH"

Column2

sum("Table1"."Income")

Column3

KMEANS(TRAIN_KM(INPUT("Table1"."Month", SUM("Table1"."Income")), 3), CLUSTER("Table1"."Month", SUM("Table1"."Income")))

Input
Table1

Month : INT
Income : INT
1
100
1
150
2
450
2
500
3
800
3
900

Output
Result

Column1 : INT
Column2 : INT
Column3 : INT
1
250
1
2
950
2
3
1700
0




Here, month 2 and 3 are clustered together, even though the income of month 4 (600) would be closer to the income of month 2 (500). This is because we also cluster by the months themselves. If we want to cluster only by the income and still use month as dimension, we need to use the EXCLUDED tag as shown in the next example.

Здесь месяц 2 и 3 сгруппированы вместе, хотя доход за месяц 4 (600) будет ближе к доходу за месяц 2 (500). Это потому, что мы также сгруппированы по месяцам. Если мы хотим кластеризовать только по доходам и по-прежнему использовать месяц в качестве измерения, нам нужно использовать тег EXCLUDED, как показано в следующем примере.
Query
Column1

"Table1"."MONTH"

Column2

KMEANS(TRAIN_KM(INPUT("Table1"."Month", sum("Table1"."Income")), 3), CLUSTER("Table1"."Month", sum("Table1"."Income")))

Input
Table1

Month : INT
Income : INT
1
100
1
50
2
500
3
800
4
600

Output
Result

Column1 : INT
Column2 : INT
1
1
2
2
3
2
4
0




This example is based on the same data as above. But now Month is excluded from the training data. The result is that month 2 and 4 are clustered together. The timeline has now no influence on the clustering but is still used for the aggregation.

Этот пример основан на тех же данных, что и выше. Но сейчас Месяц исключен из тренировочных данных. В результате месяцы 2 и 4 сгруппированы вместе. Временная шкала теперь не влияет на кластеризацию, но все еще используется для агрегирования.
Query
Column1

"Table1"."MONTH"

Column2

KMEANS(TRAIN_KM(EXCLUDED("Table1"."Month"), INPUT(sum("Table1"."Income")), 3), CLUSTER(sum("Table1"."Income")))

Input
Table1

Month : INT
Income : INT
1
100
1
50
2
500
3
800
4
600

Output
Result

Column1 : INT
Column2 : INT
1
1
2
0
3
2
4
0





Содержание

  1. Data Types
  2. DATE
  3. FLOAT
  4. INT
  5. STRING
  6. Functions
  7. Aggregation Functions
  8. GLOBAL
  9. Pull Up Aggregation Functions
  10. PU_AVG
  11. PU_COUNT
  12. PU_COUNT_DISTINCT
  13. PU_FIRST
  14. PU_LAST
  15. PU_MAX
  16. PU_MEDIAN
  17. PU_MIN
  18. PU_QUANTILE
  19. PU_SUM
  20. Standard Aggregation Functions
  21. AVG
  22. COUNT
  23. COUNT_TABLE
  24. COUNT DISTINCT
  25. MAX
  26. MEDIAN
  27. MIN
  28. QUANTILE
  29. STDEV
  30. SUM
  31. TRIMMED_MEAN
  32. VAR
  33. Moving Aggregation Functions
  34. MOVING_AVG
  35. MOVING_COUNT
  36. MOVING_COUNT_DISTINCT
  37. MOVING_MAX
  38. MOVING_MEDIAN
  39. MOVING_MIN
  40. MOVING_STDEV
  41. MOVING_SUM
  42. MOVING_TRIMMED_MEAN
  43. RUNNING_TOTAL
  44. HOUR_NOW
  45. TODAY
  46. DATE_BETWEEN
  47. DAYS_BETWEEN
  48. HOURS_BETWEEN
  49. MILLIS_BETWEEN
  50. MINUTES_BETWEEN
  51. MONTHS_BETWEEN
  52. SECONDS_BETWEEN
  53. WORKDAYS_BETWEEN
  54. YEARS_BETWEEN
  55. ADD_DAYS
  56. ADD_HOURS
  57. ADD_MILLIS
  58. ADD_MINUTES
  59. ADD_MONTHS
  60. ADD_SECONDS
  61. ADD_WORKDAYS
  62. ADD_YEARS
  63. CALENDAR_WEEK
  64. DATE_MATCH
  65. DAY
  66. DAY_OF_WEEK
  67. HOURS
  68. MILLIS
  69. MINUTES
  70. MONTH
  71. QUARTER
  72. REMAP_TIMESTAMP
  73. SECONDS
  74. TO_TIMESTAMP
  75. YEAR
  76. DateTime Rounding Functions
  77. ROUND_DAY
  78. ROUND_HOUR
  79. ROUND_MINUTE
  80. ROUND_MONTH
  81. ROUND_QUARTER
  82. ROUND_SECOND
  83. ROUND_WEEK
  84. ROUND_YEAR
  85. DECISION_TREE
  86. KMEANS
  87. LINEAR_REGRESSION
  88. Math Functions
  89. ABC
  90. ABS
  91. CEIL
  92. FLOOR
  93. LOG
  94. POWER
  95. ROUND
  96. SQRT
  97. SQUARE
  98. ISNULL
  99. Process Functions
  100. ACTIVATION_COUNT
  101. CALC_CROP
  102. CALC_CROP_TO_NULL
  103. CALC_REWORK
  104. CALC_THROUGHPUT
  105. MATCH_PROCESS
  106. PROCESS_ORDER
  107. PROCESS EQUALS
  108. SOURCE / TARGET
  109. VARIANT
  110. Statistic Functions
  111. QNORM
  112. ZSCORE
  113. CONCAT
  114. LEFT
  115. LEN
  116. LOWER
  117. LTRIM
  118. REVERSE
  119. RIGHT
  120. RTRIM
  121. STR_TO_INT
  122. SUBSTRING
  123. UPPER
  124. Operators
  125. CASE WHEN
  126. FILTER
  127. Math Operators
  128. Addition Operator
  129. Division Operator
  130. MODULO
  131. Multiplication Operator
  132. Subtraction Operator
  133. Predicate Operators
  134. IN
  135. LIKE
  136. Ссылки на мануалы