Skip to content

Commit 15a2f7a

Browse files
authored
Basic recommendation system example (#57)
1 parent 0f19ef3 commit 15a2f7a

File tree

7 files changed

+116
-0
lines changed

7 files changed

+116
-0
lines changed

examples/movie-ratings/app.yaml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
- kind: app
2+
name: movie-ratings
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
import tensorflow as tf
2+
3+
4+
def create_estimator(run_config, model_config):
5+
user_id_index = model_config["aggregates"]["user_id_index"]
6+
movie_id_index = model_config["aggregates"]["movie_id_index"]
7+
8+
feature_columns = [
9+
tf.feature_column.embedding_column(
10+
tf.feature_column.categorical_column_with_identity(
11+
"user_id_indexed", len(user_id_index)
12+
),
13+
model_config["hparams"]["embedding_size"],
14+
),
15+
tf.feature_column.embedding_column(
16+
tf.feature_column.categorical_column_with_identity(
17+
"movie_id_indexed", len(movie_id_index)
18+
),
19+
model_config["hparams"]["embedding_size"],
20+
),
21+
]
22+
23+
return tf.estimator.DNNRegressor(
24+
feature_columns=feature_columns,
25+
hidden_units=model_config["hparams"]["hidden_units"],
26+
config=run_config,
27+
)

examples/movie-ratings/movies.json

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
{
2+
"samples": [
3+
{
4+
"user_id": "71",
5+
"movie_id": "91529"
6+
},
7+
{
8+
"user_id": "71",
9+
"movie_id": "174055"
10+
}
11+
]
12+
}
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
- kind: api
2+
name: ratings
3+
model_name: basic_embedding
4+
compute:
5+
replicas: 1
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
- kind: environment
2+
name: dev
3+
data:
4+
type: csv
5+
path: s3a://cortex-examples/movie-ratings.csv
6+
csv_config:
7+
header: true
8+
schema: ['user_id','movie_id','rating','timestamp']
9+
10+
- kind: raw_column
11+
name: user_id
12+
type: STRING_COLUMN
13+
14+
- kind: raw_column
15+
name: movie_id
16+
type: STRING_COLUMN
17+
18+
- kind: raw_column
19+
name: rating
20+
type: FLOAT_COLUMN
21+
22+
- kind: raw_column
23+
name: timestamp
24+
type: INT_COLUMN
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
- kind: model
2+
name: basic_embedding
3+
type: regression
4+
target_column: rating
5+
feature_columns: [user_id_indexed, movie_id_indexed]
6+
aggregates: [user_id_index, movie_id_index]
7+
hparams:
8+
embedding_size: 10
9+
hidden_units: [128]
10+
data_partition_ratio:
11+
training: 0.8
12+
evaluation: 0.2
13+
training:
14+
batch_size: 50
15+
num_steps: 8000
Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
- kind: aggregate
2+
name: user_id_index
3+
aggregator: cortex.index_string
4+
inputs:
5+
columns:
6+
col: user_id
7+
8+
- kind: transformed_column
9+
name: user_id_indexed
10+
transformer: cortex.index_string
11+
inputs:
12+
columns:
13+
text: user_id
14+
args:
15+
index: user_id_index
16+
17+
- kind: aggregate
18+
name: movie_id_index
19+
aggregator: cortex.index_string
20+
inputs:
21+
columns:
22+
col: movie_id
23+
24+
- kind: transformed_column
25+
name: movie_id_indexed
26+
transformer: cortex.index_string
27+
inputs:
28+
columns:
29+
text: movie_id
30+
args:
31+
index: movie_id_index

0 commit comments

Comments
 (0)