diff --git a/ctr/README.md b/ctr/README.md
index 85460e19465d13029ad78b93ac063444dfaea7bd..90f036ba583aaa60974625973e17e7bde40fcf22 100644
--- a/ctr/README.md
+++ b/ctr/README.md
@@ -2,29 +2,29 @@
Table of Contents
-
+
# 背景介绍
@@ -51,7 +51,7 @@ CTR(Click-through rate) 是用来表示用户点击一个特定链接的概率
逐渐地接过 CTR 预估任务的大旗。
-
+
## LR vs DNN
@@ -73,7 +73,7 @@ LR 对于 NN 模型的优势是对大规模稀疏特征的容纳能力,包括
本文后面的章节会演示如何使用 PaddlePaddle 编写一个结合两者优点的模型。
-
+
# 数据和任务抽象
@@ -90,14 +90,14 @@ LR 对于 NN 模型的优势是对大规模稀疏特征的容纳能力,包括
具体的特征处理方法参看 [data process](./dataset.md)
-
+
# Wide & Deep Learning Model
谷歌在 16 年提出了 Wide & Deep Learning 的模型框架,用于融合适合学习抽象特征的 DNN 和 适用于大规模稀疏特征的 LR 两种模型的优点。
-
+
## 模型简介
@@ -112,7 +112,7 @@ Wide & Deep Learning Model 可以作为一种相对成熟的模型框架使用
而模型右边的 Deep 部分,能够学习特征间的隐含关系,在相同数量的特征下有更好的学习和推导能力。
-
+
## 编写模型输入
@@ -136,7 +136,7 @@ click = paddle.layer.data(name='click', type=dtype.dense_vector(1))
```
-
+
## 编写 Wide 部分
@@ -151,7 +151,7 @@ def build_lr_submodel():
```
-
+
## 编写 Deep 部分
@@ -173,7 +173,7 @@ def build_dnn_submodel(dnn_layer_dims):
```
-
+
## 两者融合
@@ -195,7 +195,7 @@ def combine_submodels(dnn, lr):
```
-
+
## 训练任务的定义
@@ -244,7 +244,7 @@ trainer.train(
```
-
+
# 引用
diff --git a/ctr/dataset.md b/ctr/dataset.md
index 080877e92e9d444800a96c24aefdcb491b5edb18..19c8b788bcae5278ac37a425bc193d12e95d11c4 100644
--- a/ctr/dataset.md
+++ b/ctr/dataset.md
@@ -2,34 +2,34 @@
Table of Contents
-
+
# 数据集介绍
@@ -54,7 +54,7 @@
- `C14-C21` – anonymized categorical variables
-
+
# 特征提取
@@ -64,7 +64,7 @@
1. ID 类特征(稀疏,数量多)
```python
-- id
+- `id`
- `site_id`
- `app_id`
- `device_id`
@@ -73,7 +73,7 @@
2. 类别类特征(稀疏,但数量有限)
```python
-- C1
+- `C1`
- `site_category`
- `device_type`
- `C14-C21`
@@ -87,7 +87,7 @@
```
-
+
## 类别类特征
@@ -97,7 +97,7 @@
2. 类似词向量,用一个 Embedding Table 将每个类别映射到对应的向量
-
+
## ID 类特征
@@ -112,7 +112,7 @@ ID 类特征的特点是稀疏数据,但量比较大,直接使用 One-hot
上面的方法尽管存在一定的碰撞概率,但能够处理任意数量的 ID 特征,并保留一定的效果[2]。
-
+
## 数值型特征
@@ -122,12 +122,12 @@ ID 类特征的特点是稀疏数据,但量比较大,直接使用 One-hot
- 用区间分割处理成类别类特征,稀疏化表示,模糊细微上的差别
-
+
# 特征处理
-
+
## 类别型特征
@@ -177,7 +177,7 @@ class CategoryFeatureGenerator(object):
本任务中,类别类特征会输入到 DNN 中使用。
-
+
## ID 类特征
@@ -205,7 +205,7 @@ class IDfeatureGenerator(object):
```
-
+
## 交叉类特征
@@ -225,12 +225,12 @@ def gen_cross_fea(self, fea1, fea2):
我们通过组合出两者组合来捕捉这类信息。
-
+
## 特征维度
-
+
### Deep submodel(DNN)特征
@@ -269,7 +269,7 @@ def gen_cross_fea(self, fea1, fea2):
-hour |
+`hour` |
24 |
@@ -289,7 +289,7 @@ def gen_cross_fea(self, fea1, fea2):
-
+
### Wide submodel(LR)特征
@@ -310,7 +310,7 @@ def gen_cross_fea(self, fea1, fea2):
-id |
+`id` |
100000 |
@@ -348,16 +348,16 @@ def gen_cross_fea(self, fea1, fea2):
-
+
# 输入到 PaddlePaddle 中
Deep 和 Wide 两部分均以 `sparse_binary_vector` 的格式[1]输入,输入前需要将相关特征拼合,模型最终只接受 3 个 input,
分别是
-1. ~dnn input~,DNN 的输入
-2. `lr input`, LR 的输入
-3. ~click~, 标签
+1. `dnn input` ,DNN 的输入
+2. `lr input` , LR 的输入
+3. `click` , 标签
拼合特征的方法:
diff --git a/ctr/dataset.org b/ctr/dataset.org
index 5ef55c9a0b379257d6bfd7a6a0d1268886dbabf6..af008694a422aac8901dc0127db6bc6499b4623c 100644
--- a/ctr/dataset.org
+++ b/ctr/dataset.org
@@ -26,19 +26,23 @@
原始数据中的特征可以分为以下几类:
1. ID 类特征(稀疏,数量多)
- - id
+
+ - ~id~
- ~site_id~
- ~app_id~
- ~device_id~
2. 类别类特征(稀疏,但数量有限)
- - C1
+
+ - ~C1~
- ~site_category~
- ~device_type~
- ~C14-C21~
3. 数值型特征转化为类别型特征
+
- hour (可以转化成数值,也可以按小时为单位转化为类别)
+
** 类别类特征
类别类特征的提取方法有以下两种:
@@ -152,31 +156,31 @@ ID 类特征的特点是稀疏数据,但量比较大,直接使用 One-hot
| ~app_category~ | 21 |
| ~site_category~ | 22 |
| ~device_conn_type~ | 5 |
-| hour | 24 |
+| ~hour~ | 24 |
| ~banner_pos~ | 7 |
|--------------------+-----------|
| Total | 79 |
|--------------------+-----------|
*** Wide submodel(LR)特征
-|-------------------------+-----------|
-| Feature | Dimention |
-|-------------------------+-----------|
-| id | 100000 |
+|-------------------------+------------|
+| Feature | Dimention |
+|-------------------------+------------|
+| ~id~ | 100000 |
| ~site_id~ | 100000 |
| ~app_id~ | 100000 |
| ~device_id~ | 100000 |
| ~device_id~ X ~site_id~ | 10000000 |
-|-------------------------+-----------|
+|-------------------------+------------|
| Total | 10,400,000 |
-|-------------------------+-----------|
+|-------------------------+------------|
* 输入到 PaddlePaddle 中
Deep 和 Wide 两部分均以 ~sparse_binary_vector~ 的格式[1]输入,输入前需要将相关特征拼合,模型最终只接受 3 个 input,
分别是
-1. ~dnn input~,DNN 的输入
-2. ~lr input~, LR 的输入
-3. ~click~, 标签
+1. ~dnn input~ ,DNN 的输入
+2. ~lr input~ , LR 的输入
+3. ~click~ , 标签
拼合特征的方法: