# Steerable recommender — M1 report

## E1 Factorization

Implicit ALS on the read-or-not matrix (confidence 1 + 20), 12 epochs. k chosen by the one-SE rule on held-out recall@20: **256** (best mean at k=256, bar 0.2302). **The best k is the largest in the grid; extend the grid.**

| k | mean recall@20 | SE |
|---|---|---|
| 32 | 0.1684 | 0.0011 |
| 64 | 0.1978 | 0.0017 |
| 128 | 0.2094 | 0.0037 |
| 256 | 0.2319 | 0.0017 |

Geometry check: nearest films by cosine in the centered item space, among films with ≥ 1,000 ratings. Shrinkage n0 (median catalog rating count) = 288.

- **Harry Potter and the Sorcerer's Stone (Harry Potter, #1)** → Harry Potter and the Chamber of Secrets (Harry Potter, #2) (0.86), Harry Potter and the Prisoner of Azkaban (Harry Potter, #3) (0.83), Harry Potter and the Goblet of Fire (Harry Potter, #4) (0.75), Harry Potter and the Order of the Phoenix (Harry Potter, #5) (0.68), Harry Potter and the Half-Blood Prince (Harry Potter, #6) (0.64), Harry Potter and the Deathly Hallows (Harry Potter, #7) (0.53)
- **The Shining** → Doctor Sleep (0.52), 'Salem's Lot (0.51), Pet Sematary (0.50), Carrie (0.46), Misery (0.45), The Stand (0.45)
- **Gone Girl** → The Girl on the Train (0.48), Dark Places (0.46), Sharp Objects (0.41), The Fault in Our Stars (0.35), The Book Thief (0.28), The Night Circus (0.27)
- **Pride and Prejudice** → Emma (0.47), Sense and Sensibility (0.45), Mansfield Park (0.41), Persuasion (0.40), Jane Eyre (0.40), Wuthering Heights (0.34)
- **The Hobbit** → The Fellowship of the Ring (The Lord of the Rings, #1) (0.51), The Return of the King (The Lord of the Rings, #3) (0.48), The Two Towers (The Lord of the Rings, #2) (0.47), The Lord of the Rings (The Lord of the Rings, #1-3) (0.37), The Silmarillion (0.36), The Lion, the Witch, and the Wardrobe (Chronicles of Narnia, #1) (0.30)
- **The Martian** → Ready Player One (0.48), Station Eleven (0.35), Dark Matter (Blake Crouch) (0.27), Armada (0.26), All the Light We Cannot See (0.26), The Girl on the Train (0.25)

## E2 Directions

719 tags fit; 719 encoded (AUC − 2·SE > 0.5); 75 of the 75 pool tags encoded. Top 25 by AUC:

| tag | AUC | SE | σ | cos vs diff-of-means | in pool |
|---|---|---|---|---|---|
| young adult | 0.999 | 0.000 | 0.165 | 0.93 |  |
| romance | 0.999 | 0.000 | 0.176 | 0.92 |  |
| fantasy | 0.998 | 0.001 | 0.151 | 0.91 |  |
| teen | 0.997 | 0.000 | 0.164 | 0.91 |  |
| love | 0.996 | 0.001 | 0.163 | 0.88 | yes |
| action | 0.994 | 0.001 | 0.140 | 0.92 |  |
| chick lit | 0.991 | 0.000 | 0.142 | 0.89 |  |
| adult | 0.991 | 0.002 | 0.157 | 0.91 |  |
| adventure | 0.984 | 0.001 | 0.141 | 0.87 |  |
| supernatural | 0.983 | 0.001 | 0.139 | 0.85 |  |
| loved | 0.981 | 0.001 | 0.160 | 0.86 |  |
| magic | 0.980 | 0.002 | 0.138 | 0.86 | yes |
| drama | 0.980 | 0.001 | 0.140 | 0.83 |  |
| mystery | 0.979 | 0.001 | 0.125 | 0.89 |  |
| suspense | 0.979 | 0.001 | 0.123 | 0.90 | yes |
| contemporary | 0.977 | 0.002 | 0.134 | 0.84 |  |
| alpha males | 0.976 | 0.001 | 0.136 | 0.77 |  |
| literature | 0.975 | 0.001 | 0.151 | 0.85 |  |
| paranormal | 0.975 | 0.002 | 0.137 | 0.86 |  |
| fun | 0.973 | 0.001 | 0.117 | 0.90 | yes |
| romantic | 0.972 | 0.002 | 0.159 | 0.85 | yes |
| coming of age | 0.970 | 0.001 | 0.138 | 0.83 | yes |
| thriller | 0.970 | 0.002 | 0.122 | 0.91 |  |
| science fiction | 0.966 | 0.003 | 0.134 | 0.88 |  |
| steamy | 0.966 | 0.003 | 0.193 | 0.96 | yes |

Dials (greedy by AUC within the pool, |cos| < 0.5): **love** (1.00), **magic** (0.98), **suspense** (0.98), **fun** (0.97), **coming of age** (0.97), **literary** (0.96), **erotic** (0.93), **philosophical** (0.93)

## E3 Steerability

2000 sampled users × 8 dials, top-20 mean genome score at −2…+2σ. Overall monotonic fraction **0.789**.

| dial | monotonic | slope per σ | means at −2,−1,0,+1,+2 |
|---|---|---|---|
| love | 0.831 | +0.0672 | 0.346, 0.408, 0.473, 0.542, 0.615 |
| magic | 0.737 | +0.0723 | 0.192, 0.251, 0.318, 0.396, 0.481 |
| suspense | 0.809 | +0.0583 | 0.258, 0.300, 0.350, 0.413, 0.491 |
| fun | 0.861 | +0.0478 | 0.124, 0.158, 0.202, 0.254, 0.315 |
| coming of age | 0.811 | +0.0534 | 0.173, 0.219, 0.270, 0.327, 0.387 |
| literary | 0.791 | +0.0606 | 0.302, 0.359, 0.417, 0.480, 0.545 |
| erotic | 0.710 | +0.0229 | 0.061, 0.075, 0.091, 0.116, 0.153 |
| philosophical | 0.765 | +0.0344 | 0.147, 0.175, 0.207, 0.245, 0.285 |

## E4 The Sixth Sense test

Cosine between the two users' positions: 0.10. Positions are scaled to r = 0.551 (median training-user norm) before steering; the Pixar household's raw norm is 0.95, the horror devotee's 0.93.

### with the nearest dial

Dial used: **suspense**. At +1σ the two steered top-10s overlap in 0 titles; mean scary score pixar 0.180 → 0.245, horror 0.799 → 0.795. At +4σ the two steered top-10s overlap in 0 titles; mean scary score pixar 0.180 → 0.297, horror 0.799 → 0.779.

**pixar / unsteered** — The Witches (0.78); The Tale of Despereaux (0.13); The Little Prince (0.00); Number the Stars (0.35); The Magician's Nephew (Chronicles of Narnia, #6) (0.00); Hatchet (Brian's Saga, #1) (0.12); Harry Potter and the Chamber of Secrets (Harry Potter, #2) (0.21); From the Mixed-Up Files of Mrs. Basil E. Frankweiler (0.00); Harry Potter and the Prisoner of Azkaban (Harry Potter, #3) (0.21); Island of the Blue Dolphins (Island of the Blue Dolphins, #1) (0.00)

**pixar / steered_1** — The Witches (0.78); Harry Potter and the Chamber of Secrets (Harry Potter, #2) (0.21); Hatchet (Brian's Saga, #1) (0.12); The Tale of Despereaux (0.13); Number the Stars (0.35); The Little Prince (0.00); Harry Potter and the Prisoner of Azkaban (Harry Potter, #3) (0.21); The Magician's Nephew (Chronicles of Narnia, #6) (0.00); The Wonderful Wizard of Oz (Oz, #1) (0.41); Harry Potter and the Goblet of Fire (Harry Potter, #4) (0.24)

**pixar / steered_4** — The Witches (0.78); Harry Potter and the Chamber of Secrets (Harry Potter, #2) (0.21); Harry Potter and the Prisoner of Azkaban (Harry Potter, #3) (0.21); Hatchet (Brian's Saga, #1) (0.12); Harry Potter and the Goblet of Fire (Harry Potter, #4) (0.24); The Bad Beginning (A Series of Unfortunate Events, #1) (0.26); And Then There Were None (0.69); The Wonderful Wizard of Oz (Oz, #1) (0.41); The Magician's Nephew (Chronicles of Narnia, #6) (0.00); Harry Potter and the Order of the Phoenix (Harry Potter, #5) (0.06)

**pixar / genre_filter** — Coraline (0.84); Frankenstein (0.55); Night (The Night Trilogy #1) (0.32); The Picture of Dorian Gray (0.14); The Legend of Sleepy Hollow (0.78); Welcome to Dead House (Goosebumps, #1) (0.80); The Strange Case of Dr. Jekyll and Mr. Hyde (0.50); Carrie (0.87); Interview with the Vampire (The Vampire Chronicles, #1) (0.56); Misery (0.88)

**horror / unsteered** — Doctor Sleep (0.88); Gerald's Game (0.84); Horns (0.65); The Dead Zone (0.83); Cell (0.80); Mr. Mercedes (Bill Hodges Trilogy, #1) (0.74); Night Shift (0.83); Revival (0.88); Bag of Bones (0.75); Firestarter (0.78)

**horror / steered_1** — Doctor Sleep (0.88); Horns (0.65); Gerald's Game (0.84); Mr. Mercedes (Bill Hodges Trilogy, #1) (0.74); Cell (0.80); Revival (0.88); The Dead Zone (0.83); Night Shift (0.83); Bag of Bones (0.75); The Girl Who Loved Tom Gordon (0.74)

**horror / steered_4** — Doctor Sleep (0.88); Mr. Mercedes (Bill Hodges Trilogy, #1) (0.74); Horns (0.65); Revival (0.88); Cell (0.80); Gerald's Game (0.84); Joyland (0.65); Under the Dome (0.77); The Dead Zone (0.83); Bag of Bones (0.75)

**horror / genre_filter** — Doctor Sleep (0.88); Gerald's Game (0.84); Horns (0.65); The Dead Zone (0.83); Cell (0.80); Mr. Mercedes (Bill Hodges Trilogy, #1) (0.74); Night Shift (0.83); Revival (0.88); Bag of Bones (0.75); Firestarter (0.78)

### with the scary direction itself

Dial used: **scary direction**. At +1σ the two steered top-10s overlap in 0 titles; mean scary score pixar 0.180 → 0.221, horror 0.799 → 0.795. At +4σ the two steered top-10s overlap in 0 titles; mean scary score pixar 0.180 → 0.374, horror 0.799 → 0.804.

**pixar / unsteered** — The Witches (0.78); The Tale of Despereaux (0.13); The Little Prince (0.00); Number the Stars (0.35); The Magician's Nephew (Chronicles of Narnia, #6) (0.00); Hatchet (Brian's Saga, #1) (0.12); Harry Potter and the Chamber of Secrets (Harry Potter, #2) (0.21); From the Mixed-Up Files of Mrs. Basil E. Frankweiler (0.00); Harry Potter and the Prisoner of Azkaban (Harry Potter, #3) (0.21); Island of the Blue Dolphins (Island of the Blue Dolphins, #1) (0.00)

**pixar / steered_1** — The Witches (0.78); Harry Potter and the Chamber of Secrets (Harry Potter, #2) (0.21); The Tale of Despereaux (0.13); Hatchet (Brian's Saga, #1) (0.12); Harry Potter and the Prisoner of Azkaban (Harry Potter, #3) (0.21); Number the Stars (0.35); The Little Prince (0.00); The Magician's Nephew (Chronicles of Narnia, #6) (0.00); The Wonderful Wizard of Oz (Oz, #1) (0.41); From the Mixed-Up Files of Mrs. Basil E. Frankweiler (0.00)

**pixar / steered_4** — The Witches (0.78); Harry Potter and the Chamber of Secrets (Harry Potter, #2) (0.21); Harry Potter and the Prisoner of Azkaban (Harry Potter, #3) (0.21); The Wonderful Wizard of Oz (Oz, #1) (0.41); Hatchet (Brian's Saga, #1) (0.12); Coraline (0.84); Harry Potter and the Goblet of Fire (Harry Potter, #4) (0.24); The Outsiders (0.01); Heart-Shaped Box (0.86); Harry Potter and the Order of the Phoenix (Harry Potter, #5) (0.06)

**pixar / genre_filter** — Coraline (0.84); Frankenstein (0.55); Night (The Night Trilogy #1) (0.32); The Picture of Dorian Gray (0.14); The Legend of Sleepy Hollow (0.78); Welcome to Dead House (Goosebumps, #1) (0.80); The Strange Case of Dr. Jekyll and Mr. Hyde (0.50); Carrie (0.87); Interview with the Vampire (The Vampire Chronicles, #1) (0.56); Misery (0.88)

**horror / unsteered** — Doctor Sleep (0.88); Gerald's Game (0.84); Horns (0.65); The Dead Zone (0.83); Cell (0.80); Mr. Mercedes (Bill Hodges Trilogy, #1) (0.74); Night Shift (0.83); Revival (0.88); Bag of Bones (0.75); Firestarter (0.78)

**horror / steered_1** — Doctor Sleep (0.88); Horns (0.65); Gerald's Game (0.84); Cell (0.80); Revival (0.88); The Dead Zone (0.83); Mr. Mercedes (Bill Hodges Trilogy, #1) (0.74); Night Shift (0.83); Bag of Bones (0.75); The Girl Who Loved Tom Gordon (0.74)

**horror / steered_4** — Doctor Sleep (0.88); Horns (0.65); Revival (0.88); Gerald's Game (0.84); Cell (0.80); A Head Full of Ghosts (0.88); Mr. Mercedes (Bill Hodges Trilogy, #1) (0.74); The Troop (0.85); Under the Dome (0.77); Bag of Bones (0.75)

**horror / genre_filter** — Doctor Sleep (0.88); Gerald's Game (0.84); Horns (0.65); The Dead Zone (0.83); Cell (0.80); Mr. Mercedes (Bill Hodges Trilogy, #1) (0.74); Night Shift (0.83); Revival (0.88); Bag of Bones (0.75); Firestarter (0.78)

## E7 Beyond accuracy (200 users, ±1σ on every dial, top-20)

| mode | β | λ | coverage | popularity bias | ILD | distance | serendipity |
|---|---|---|---|---|---|---|---|
| cosine | 0.0 | 1.0 | 0.218 | +0.173 | 0.265 | 0.664 | 0.0020 |
| cosine | 0.0 | 0.8 | 0.220 | +0.176 | 0.296 | 0.607 | 0.0020 |
| cosine | 0.0 | 0.6 | 0.262 | +0.167 | 0.321 | 0.558 | 0.0026 |
| cosine | 0.1 | 1.0 | 0.197 | +0.186 | 0.266 | 0.677 | 0.0013 |
| cosine | 0.1 | 0.8 | 0.195 | +0.191 | 0.297 | 0.625 | 0.0016 |
| cosine | 0.1 | 0.6 | 0.227 | +0.185 | 0.323 | 0.581 | 0.0017 |
| cosine | 0.3 | 1.0 | 0.160 | +0.212 | 0.268 | 0.707 | 0.0012 |
| cosine | 0.3 | 0.8 | 0.154 | +0.218 | 0.298 | 0.666 | 0.0018 |
| cosine | 0.3 | 0.6 | 0.168 | +0.218 | 0.326 | 0.633 | 0.0025 |
| dot | 0.0 | 1.0 | 0.154 | +0.209 | 0.274 | 0.690 | 0.0012 |
| dot | 0.0 | 0.8 | 0.151 | +0.211 | 0.287 | 0.672 | 0.0016 |
| dot | 0.0 | 0.6 | 0.155 | +0.213 | 0.310 | 0.642 | 0.0028 |
| dot | 0.1 | 1.0 | 0.147 | +0.214 | 0.274 | 0.697 | 0.0013 |
| dot | 0.1 | 0.8 | 0.145 | +0.216 | 0.287 | 0.680 | 0.0015 |
| dot | 0.1 | 0.6 | 0.148 | +0.218 | 0.311 | 0.652 | 0.0025 |
| dot | 0.3 | 1.0 | 0.136 | +0.223 | 0.275 | 0.712 | 0.0014 |
| dot | 0.3 | 0.8 | 0.134 | +0.226 | 0.288 | 0.697 | 0.0013 |
| dot | 0.3 | 0.6 | 0.134 | +0.229 | 0.312 | 0.671 | 0.0020 |

## E8 Shared intent (200 pairs of users at cosine ≤ 0, +2σ on each dial, top-20)

For each controller: concept response (Δ mean genome score vs unsteered), the share of the user's own unsteered list that survives, the two users' list overlap (Jaccard; unsteered overlap in parentheses), and the fraction of pairs where both users moved up. The re-rank adds λ·(tag score) to the unsteered score with λ calibrated per dial to match steering's mean response; the filter keeps films in the tag's top quartile.

Own-taste is the mean cosine between the returned films and the user's unsteered direction (unsteered value in parentheses): how far each controller's list drifted from the taste it was made for, at equal concept response.

| dial | controller | response | self retained | own-taste | pair overlap | both moved |
|---|---|---|---|---|---|---|
| love | steer | +0.129 | 0.60 | 0.345 (0.362) | 0.001 (0.000) | 0.81 |
| love | filter | +0.366 | 0.28 | 0.278 (0.362) | 0.004 (0.000) | 0.86 |
| love | rerank | +0.128 | 0.69 | 0.355 (0.362) | 0.001 (0.000) | 0.82 |
| magic | steer | +0.155 | 0.63 | 0.352 (0.362) | 0.001 (0.000) | 0.81 |
| magic | filter | +0.554 | 0.25 | 0.274 (0.362) | 0.003 (0.000) | 0.99 |
| magic | rerank | +0.155 | 0.73 | 0.357 (0.362) | 0.001 (0.000) | 0.65 |
| suspense | steer | +0.133 | 0.65 | 0.353 (0.362) | 0.001 (0.000) | 0.92 |
| suspense | filter | +0.495 | 0.14 | 0.278 (0.362) | 0.004 (0.000) | 0.97 |
| suspense | rerank | +0.135 | 0.68 | 0.359 (0.362) | 0.001 (0.000) | 0.99 |
| fun | steer | +0.108 | 0.66 | 0.356 (0.362) | 0.001 (0.000) | 0.95 |
| fun | filter | +0.451 | 0.13 | 0.285 (0.362) | 0.003 (0.000) | 1.00 |
| fun | rerank | +0.110 | 0.73 | 0.359 (0.362) | 0.001 (0.000) | 0.91 |
| coming of age | steer | +0.104 | 0.64 | 0.351 (0.362) | 0.001 (0.000) | 0.88 |
| coming of age | filter | +0.473 | 0.15 | 0.260 (0.362) | 0.003 (0.000) | 1.00 |
| coming of age | rerank | +0.101 | 0.75 | 0.358 (0.362) | 0.001 (0.000) | 0.78 |
| literary | steer | +0.119 | 0.60 | 0.344 (0.362) | 0.001 (0.000) | 0.88 |
| literary | filter | +0.351 | 0.22 | 0.265 (0.362) | 0.004 (0.000) | 0.91 |
| literary | rerank | +0.118 | 0.68 | 0.354 (0.362) | 0.001 (0.000) | 0.94 |
| erotic | steer | +0.067 | 0.62 | 0.351 (0.362) | 0.001 (0.000) | 0.86 |
| erotic | filter | +0.274 | 0.18 | 0.274 (0.362) | 0.003 (0.000) | 0.91 |
| erotic | rerank | +0.067 | 0.80 | 0.360 (0.362) | 0.000 (0.000) | 0.73 |
| philosophical | steer | +0.069 | 0.65 | 0.356 (0.362) | 0.000 (0.000) | 0.85 |
| philosophical | filter | +0.367 | 0.11 | 0.255 (0.362) | 0.002 (0.000) | 1.00 |
| philosophical | rerank | +0.069 | 0.77 | 0.361 (0.362) | 0.001 (0.000) | 0.93 |

Reversibility and commutativity hold by construction: the steered position is r·u/|u| + Σ v_t σ_t d_t, so +v then −v returns the same position and the order of two dials does not matter. They are stated here rather than measured.

## E9 Cross-talk (400 users, slope per σ of every pool tag's top-20 mean score when a dial moves)

Dial × dial block (row = dial moved, column = tag measured):

| | love | magic | suspense | fun | coming of age | literary | erotic | philosophical |
|---|---|---|---|---|---|---|---|---|
| **love** | +0.066 | -0.002 | -0.023 | +0.000 | +0.006 | -0.014 | +0.010 | -0.008 |
| **magic** | +0.008 | +0.071 | +0.001 | +0.007 | -0.018 | -0.014 | +0.000 | -0.006 |
| **suspense** | -0.017 | -0.005 | +0.058 | -0.007 | -0.013 | -0.003 | +0.003 | +0.005 |
| **fun** | +0.006 | +0.016 | -0.006 | +0.048 | -0.005 | -0.018 | -0.000 | -0.002 |
| **coming of age** | +0.006 | -0.022 | -0.011 | -0.005 | +0.051 | +0.019 | -0.005 | +0.010 |
| **literary** | -0.013 | -0.021 | +0.002 | -0.020 | +0.024 | +0.060 | -0.005 | +0.010 |
| **erotic** | +0.019 | -0.005 | +0.018 | -0.004 | -0.014 | -0.010 | +0.024 | +0.013 |
| **philosophical** | -0.014 | -0.018 | +0.012 | -0.004 | +0.005 | +0.013 | +0.002 | +0.034 |

Strongest off-diagonal drags per dial (pool tags other than the dial itself):

- **love** (own slope +0.066): romantic +0.064, sweet +0.024, sad +0.023, suspense -0.023
- **magic** (own slope +0.071): epic +0.030, realistic -0.025, mythology +0.020, emotional -0.019
- **suspense** (own slope +0.058): dark +0.036, creepy +0.033, psychological +0.030, disturbing +0.025
- **fun** (own slope +0.048): funny +0.037, witty +0.033, humor +0.030, hilarious +0.028
- **coming of age** (own slope +0.051): realistic +0.027, magic -0.022, epic -0.020, literary +0.019
- **literary** (own slope +0.060): tragedy +0.024, coming of age +0.024, romantic -0.021, magic -0.021
- **erotic** (own slope +0.024): steamy +0.025, courage -0.019, love +0.019, dark +0.018
- **philosophical** (own slope +0.034): made me cry -0.027, romantic -0.021, heartbreaking -0.019, courage -0.018

## E10 Relevance retention and saturation (400 users; 385 with held-out liked films)

Recall@20 of held-out films rated ≥ 4, averaged over dials, at each step:

| step | -2 | -1 | 0 | 1 | 2 |
|---|---|---|---|---|---|
| recall@20 | 0.2086 | 0.2145 | 0.2142 | 0.2190 | 0.2137 |

Response to +2σ by where the user started (terciles of the unsteered top-20 concept score, low → high):

| dial | low third | middle | high third |
|---|---|---|---|
| love | +0.199 | +0.168 | +0.040 |
| magic | +0.128 | +0.251 | +0.109 |
| suspense | +0.134 | +0.154 | +0.131 |
| fun | +0.118 | +0.117 | +0.104 |
| coming of age | +0.090 | +0.133 | +0.113 |
| literary | +0.071 | +0.185 | +0.125 |
| erotic | +0.051 | +0.058 | +0.087 |
| philosophical | +0.053 | +0.089 | +0.088 |

## E11 Placement ablation (400 users; same cosine × shrink retrieval for every placement)

| placement | recall@20 unsteered | monotonic (±2σ) | slope per σ | pair overlap, dial 1 at +2σ |
|---|---|---|---|---|
| centroid | 0.2142 | 0.789 | +0.0515 | 0.001 |
| als_factor | 0.2497 | 0.844 | +0.0759 | 0.010 |
| ridge_fold_in | 0.1088 | 0.894 | +0.1233 | 0.021 |
| model's own rating prediction (reference) | 0.2521 | | | |
| most-rated unseen films (reference) | 0.0552 | | | |
