From 6e34279f15ff164bf77780e6d6c6e6f649ea41e1 Mon Sep 17 00:00:00 2001
From: zhuwenjing <2663966198@qq.com>
Date: Wed, 28 Aug 2019 19:54:45 +0800
Subject: [PATCH 1/8] Fix executor test
---
example/jupyter/example.ipynb | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/example/jupyter/example.ipynb b/example/jupyter/example.ipynb
index 7dac56f684..004065b579 100644
--- a/example/jupyter/example.ipynb
+++ b/example/jupyter/example.ipynb
@@ -42,8 +42,8 @@
"FROM iris.train\n",
"TRAIN DNNClassifier\n",
"WITH\n",
- " n_classes = 3,\n",
- " hidden_units = [10, 20]\n",
+ " model.n_classes = 3,\n",
+ " model.hidden_units = [10, 20]\n",
"COLUMN sepal_length, sepal_width, petal_length, petal_width\n",
"LABEL class\n",
"INTO sqlflow_models.my_dnn_model;"
From d44903eca81042705b3d002f625c3607636222a6 Mon Sep 17 00:00:00 2001
From: zhuwenjing <2663966198@qq.com>
Date: Thu, 29 Aug 2019 13:45:43 +0800
Subject: [PATCH 2/8] Design: Clustering in SQLflow
---
doc/cluster_design.md | 56 +++++++++++++++++++++++++++++++++++++++++++
1 file changed, 56 insertions(+)
create mode 100644 doc/cluster_design.md
diff --git a/doc/cluster_design.md b/doc/cluster_design.md
new file mode 100644
index 0000000000..7f0b6d4909
--- /dev/null
+++ b/doc/cluster_design.md
@@ -0,0 +1,56 @@
+# Design: Clustering in SQLflow to analyze patterns in data
+
+## Concept
+
+For analysts and real business people, in the daily analysis work, most of the work is not prediction, but analysis of the patterns in the data. This can help them mine user behavioral characteristics and differences, helping the business discover value and operate.
+
+This design doc introduces how to support the `Cluster Model` in SQLFlow.
+
+## User interface
+
+Users usually use a **TRAIN SQL** to train a model, then use a **Cluster Predict SQL** to predict the clusters and output the results, the simple pipeline like:
+
+Train SQL:
+
+``` sql
+SELECT * FROM train_table
+TRAIN clusterModel
+WITH
+ model.encode_units = [100, 7]
+ model.n_clusters = 5
+COLUMN m1, m2, m3, m4, m5, m6, m7, m8, m9, m10
+INTO my_cluster_model;
+```
+
+Cluster Predict SQL:
+``` sql
+SELECT *
+FROM train_table
+PREDICT result_table
+USING my_cluster_model;
+```
+
+where:
+- `train_table` is the table of training data.
+- `model.encode_units` is the autoencoder layer's encoder units
+- `my_cluster_model` is the trained cluster model.
+- `model.n_clusters` is the number of patterns after clustering.
+- `result_table` is the table of cluster result data.
+
+## Implement Details
+
+-
+-
+
+## Note
+- Train_table is a high-dimensional table to be clustered
+- Result_table is a result of averaging the data of each dimension according to the clustering result label.
+- Result_table example:
+| group_id | m1 | m2 | m3 | m4 | m5 | m6 | m7 | m8 | m9 | m10 |
+| ----------- | --------- | --------- | --------- | --------- | --------- | --------- | --------- | --------- | --------- |
+| 0 | 0.017 | 0.015 | 0.013 | 0.012 | 0.01 | 0.01 | 0.009 | 0.008 | 0.008 | 0.008 |
+| 1 | 0.195 | 0.173 | 0.154 | 0.138 | 0.124 | 0.111 | 0.1 | 0.091 | 0.083 | 0.076 |
+| 2 | 0.014 | 0.012 | 0.011 | 0.01 | 0.009 | 0.008 | 0.007 | 0.005 | 0.005 | 0.004 |
+| 3 | 0.005 | 0.003 | 0.003 | 0.002 | 0.001 | 0.001 | 0.001 | 0.0 | 0.0 | 0.0 |
+| 4 | 0.311 | 0.291 | 0.274 | 0.257 | 0.24 | 0.224 | 0.209 | 0.196 | 0.185 | 0.175 |
+
From 50a74c862f233fc3fb61bb38e2d17e98ab66fb61 Mon Sep 17 00:00:00 2001
From: zhuwenjing <2663966198@qq.com>
Date: Thu, 29 Aug 2019 17:21:45 +0800
Subject: [PATCH 3/8] fix:Design of Clustering in SQLflow
---
doc/cluster_design.md | 37 +++++++++++++++++++++----------------
1 file changed, 21 insertions(+), 16 deletions(-)
diff --git a/doc/cluster_design.md b/doc/cluster_design.md
index 7f0b6d4909..d33503a7b6 100644
--- a/doc/cluster_design.md
+++ b/doc/cluster_design.md
@@ -8,44 +8,49 @@ This design doc introduces how to support the `Cluster Model` in SQLFlow.
## User interface
-Users usually use a **TRAIN SQL** to train a model, then use a **Cluster Predict SQL** to predict the clusters and output the results, the simple pipeline like:
+Users usually use a **TRAIN SQL** to train a model in Supervised learning. But, in this scenario, we focus on the extraction of data patterns in unsupervised learning. Therefore, we use **EXTRCT SQL** for pattern extraction, the simple pipeline like:
-Train SQL:
+EXTRCT SQL:
``` sql
SELECT * FROM train_table
-TRAIN clusterModel
+EXTRCT clusterModel
WITH
- model.encode_units = [100, 7]
+ model.encode_units = [100, 7]
model.n_clusters = 5
COLUMN m1, m2, m3, m4, m5, m6, m7, m8, m9, m10
-INTO my_cluster_model;
+INTO my_cluster_model, result_table;
```
-Cluster Predict SQL:
+PREDICT SQL:
``` sql
SELECT *
-FROM train_table
-PREDICT result_table
+FROM new_table
+PREDICT result_test_table
USING my_cluster_model;
```
where:
-- `train_table` is the table of training data.
-- `model.encode_units` is the autoencoder layer's encoder units
-- `my_cluster_model` is the trained cluster model.
+- `train_table` is the high-dimensional table to be clustered.
+- `model.encode_units` is the autoencoder model layer's encoder units, the decode_units can reverse encode_units directly.
- `model.n_clusters` is the number of patterns after clustering.
-- `result_table` is the table of cluster result data.
+- `my_cluster_model` is the trained cluster model.
+- `result_table` is the cluster result for train_table.
+- `new_table`: If you want to apply the model that extracts from train_table to the new data new_table directly, you can use **PREDICT SQL**. Note that the structure of new_table is the same as train_table, namely, same feature column.
+- `result_test_table` is the cluster result for new_table.
## Implement Details
-
+-
-
-
## Note
-- Train_table is a high-dimensional table to be clustered
-- Result_table is a result of averaging the data of each dimension according to the clustering result label.
-- Result_table example:
+- The **EXTRCT SQL** includes two models, the autoencode model and the cluster model.
+First, the former is used to achieve data compression. At training time, the input to this model is train_table (eg. train_table.shape = (10000 * 184)), and the output is also train_table. We only use the output of the trained encode layer (10000*7) as the input to the clustering model.
+Then, the clustering model starts training, randomly initializes weights and multiple iterations, generates clustering models and clustering results of train_table.
+Next, we average each feature in the train_table according to the clustering result category to get the result table.
+Finally, **EXTRCT SQL** outputs two parts, clustering model and the result table are included.
+- The example of result_table:
| group_id | m1 | m2 | m3 | m4 | m5 | m6 | m7 | m8 | m9 | m10 |
| ----------- | --------- | --------- | --------- | --------- | --------- | --------- | --------- | --------- | --------- |
| 0 | 0.017 | 0.015 | 0.013 | 0.012 | 0.01 | 0.01 | 0.009 | 0.008 | 0.008 | 0.008 |
From e53cbd343f9fabe4f1c4eae2b09513f2ee415bdb Mon Sep 17 00:00:00 2001
From: zhuwenjing <2663966198@qq.com>
Date: Fri, 30 Aug 2019 23:40:40 +0800
Subject: [PATCH 4/8] cluster_model_train_overview.png
---
doc/figures/cluster_model_train_overview.png | Bin 0 -> 197408 bytes
1 file changed, 0 insertions(+), 0 deletions(-)
create mode 100644 doc/figures/cluster_model_train_overview.png
diff --git a/doc/figures/cluster_model_train_overview.png b/doc/figures/cluster_model_train_overview.png
new file mode 100644
index 0000000000000000000000000000000000000000..56994b9cf9b5956be7099f440417da99e56f52d1
GIT binary patch
literal 197408
zcmb@t2UL^G6F9nQgkCft9R!2~6%B-55_*vmnj%-F3qk21MY>{%R0)CsAxc+KQ4mlN
zP-!Y1J0L|sK
fZK>WhP0k}v3$lo;P(C>DE
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