github repo

Abstract

Can an autoregressive language model serve as a probability estimator for a finite choice problem with text-rich covariates? We analyze several empirical approaches including vocabulary normalization, frozen LLM scoring, in-context conditioning, quantized low-rank adaptation, and validation-estimated calibration to standard tabular methods. The empirical application predicts the most-played title among five games in a Steam user’s library using non-candidate play histories, reviews, and product metadata. On a held-out test sample of 1,000 choice sets, a naive popularity rule reaches 0.404 accuracy, conditional logit reaches 0.461, while naively renormalizing Qwen3.5-4B label likelihoods reach just 0.286 accuracy. A specification combining a 3.15-million-parameter QLoRA adapter, the training-format instruction, and five in-context examples reaches 0.462; affine calibration raises accuracy to 0.480.

Introduction

Discrete-choice models map information about decision makers and alternatives into probabilities on a finite set. In a conventional random-utility model, the analyst writes a systematic index and derives a probability kernel from assumptions on the stochastic component (McFadden 1974; Train 2009). Modern empirical settings also contain semi-structured and mixed data including product characteristics, histories, descriptions, tags, reviews, and multi-modal information that are awkward to compress into a prespecified index. A language model offers a rich nonlinear map of those inputs, but its native output is a distribution over text rather than economic alternatives.

A simple approach is to simply normalize logits. Given a fixed context, the network’s final layer produces one logit for every vocabulary token. A vocabulary softmax converts those logits into next-token probabilities. For a multi-token answer, a deterministic forward pass supplies the probability of each successive token conditional on the fixed preceding tokens; summing their log probabilities gives the likelihood of the entire answer string. No answer need be sampled. If is the answer string assigned to alternative , its log likelihood can serve as an alternative-specific index,

and the analyst can condition the admissible strings on the observed set,

This second normalization is what creates a probability vector on . It addresses the same candidate-string and surface-form problem studied in language-model multiple-choice scoring (Holtzman et al. 2021). It is nevertheless a normalization, not a behavioral derivation: no extreme-value disturbance has been estimated or assumed merely because the final formula resembles logit.

We compare four ways to construct or modify this index. Frozen scoring uses only pretrained parameters. In-context learning (ICL) conditions the model on labeled examples without changing its weights. Quantized low-rank adaptation (QLoRA) estimates a persistent low-rank correction to selected attention matrices. An affine calibration model estimates a common scale and position-specific constants from validation probabilities. We also evaluate whether activation steering, which adds a supervised direction to an internal representation without updating network weights, can supply a lower-dimensional alternative to QLoRA. Local inference uses a four-bit Qwen3.5-4B model on a 12 GB GPU; the numerical formats and estimation criteria are defined below.

The empirical application is a five-alternative prediction problem. Each observation contains five games in a Steam user’s library, and the outcome is the title with the greatest recorded lifetime playtime. Candidate playtime is withheld; predictors include non-candidate play and review histories, user aggregates, and candidate metadata. The setting supplies observed behavioral labels and rich text while keeping the prediction target and leakage controls transparent.

The main empirical benchmark is a conditional logit that imposes common attribute coefficients across randomly ordered positions. It reaches 0.461 accuracy and negative log likelihood 1.335, compared with 0.416 and 1.450 for a pooled position-specific classifier. Frozen label likelihoods reach only 0.286 accuracy. The jointly adapted Qwen specification reaches 0.462, and affine calibration raises it to 0.480 with negative log likelihood 1.345.

The paper sits between four literatures. Neural choice models already replace or augment analyst-written utility with learned representations (Sifringer, Lurkin, and Alahi 2020; Han et al. 2022; van Cranenburgh et al. 2022). Work in empirical demand uses pretrained text and image embeddings as covariates while retaining a structural choice model (Compiani, Morozov, and Seiler 2026). “Homo silicus” work asks LMs to simulate respondents (Horton, Filippas, and Manning 2023), while recommender research fine-tunes LMs directly on recommendation labels (Bao et al. 2023). Here the outcomes are observed human behavior; the LM supplies a reduced-form index rather than a synthetic respondent or a fixed embedding. The methodological contribution is to connect finite-label likelihood scoring to familiar choice probabilities while making the supervised objective, label use, conventional benchmark, and calibration model explicit.

Data and empirical design

The empirical object

The dataset used here contain ownership, playtime, reviews, and product metadata from the Australian Steam community (Pathak, Gupta, and McAuley 2017). They do not record a sequence of menus and purchases. All five displayed games have already been acquired. Let be user ’s recorded lifetime minutes for candidate in an analyst-sampled set . The outcome is

The outcome is a personalized revealed-use ranking with a discrete-choice representation. Recorded minutes combine preference with exposure, ownership duration, session length, and genre-specific time intensity. The resulting probabilities describe rankings within the analyst-sampled five-game sets. They are not market shares and do not identify demand, price elasticities, or welfare.

The eligible catalog contains the 500 most commonly played games in the source ownership records. An included user has at least 24 catalog games with at least 30 minutes of playtime. These thresholds exclude near-zero holdings and guarantee at least three disjoint five-game candidate sets while leaving at least eight games for the displayed history. Up to four sets are sampled per user, and positions are randomized. No sensitivity analysis varies the 500-game catalog, 30-minute threshold, or history requirement.

Exact ties in maximum playtime are assigned deterministically to the lowest displayed position. Seven of 16,001 observations are tied: four in estimation, one in validation, and two in test.

Candidate sets, rather than users, are split: every included user contributes one validation set, one test set, and at least one estimation set, with disjoint games across that user’s sets. The design deliberately permits a model to learn from one set for a user and predict another set from the same user’s observed attributes. A user-level split would answer a different cold-start question; overlap and non-overlap results are reported separately.

Information set and leakage controls

Every observation supplies four classes of pre-outcome information:

  1. the ten highest-playtime non-candidate games and their minutes;
  2. up to five non-candidate reviews, with recommendation indicators and the first 240 characters of text;
  3. ten user-history aggregates, such as total and mean playtime, review counts, recommendation share, and mean review length; and
  4. candidate titles, prices, release years, catalog popularity, genres, tags, 32 taxonomy indicators, taxonomy overlap with the history, and developer or publisher matches.

All candidate games are removed from the displayed history and review excerpts. The five candidate playtimes that define never enter an input, scoring rule, or calibration procedure. Candidate games are disjoint across a user’s sampled sets before splitting.

Catalog membership, ownership count, and ownership rank are computed once from the first 30,000 user records in source-file order before candidate sets are split. A game contributes to its ownership count when the record reports at least 30 lifetime minutes. These fields use no within-set outcome, and the same product metadata is available to classical and LM systems. They are nevertheless transductive: ownership records from eventual test users contribute to the global popularity measure. A strictly inductive deployment study would recompute these fields using estimation users or an external pre-period catalog.

The systems do not receive identical encodings. Conditional logit receives 45 numeric or binary attributes for each candidate: 13 product or history-match fields and 32 taxonomy indicators. The pooled logistic classifier receives those 45 fields in each of five position blocks plus ten user aggregates, for 235 standardized covariates and 1,175 class-specific slopes. The LM receives the ten aggregates; candidate price, free status, release year, ownership count and rank, and five history-match measures; literal titles; up to four genres and six tags; the ten highest-playtime non-candidate titles and minutes; and up to five non-candidate review excerpts. The comparison is between complete prediction systems; it does not hold the information representation fixed.

The covariates are constructed as follows. user_items_count is the source record’s total holding count. user_played_games counts catalog games with at least 30 minutes, while history_played_games counts the remainder after removing every game used in that user’s candidate sets. Total, mean, median, and maximum history playtime are measured in lifetime minutes over this remainder. Review count, recommendation share, and mean review length use non-candidate reviews; the latter is measured in characters, and both means are set to zero when no such review exists.

For candidate , the core product fields are the numeric source price, free and missing-price indicators, release year, an early-access indicator, catalog ownership count and rank, and title length in characters. An unparseable price is stored as zero with the missing-price indicator set to one; a missing release year is stored as zero. Let denote the user’s non-candidate history, the minutes for history game , and the union of its genre and tag terms. The three taxonomy-match features are

Because a history game can share several terms with a candidate, the minute and count scores deliberately count it once per shared term; the minute score is therefore not bounded by one. The remaining two match features count non-candidate history games with the same developer and publisher. The 32 binary taxonomy indicators mark the most common genre or tag terms in the product file: Indie, Action, Adventure, Casual, Simulation, Strategy, RPG, Singleplayer, Free to Play, Multiplayer, Great Soundtrack, Puzzle, Early Access, 2D, Atmospheric, VR, Sports, Platformer, Story Rich, Sci-fi, Fantasy, Horror, Open World, Difficult, Anime, Massively Multiplayer, Pixel Graphics, Co-op, Shooter, Racing, Female Protagonist, and Funny.

The full processed data contain 16,001 observations from 4,078 users. Randomized position makes the labels close to balanced; a position-frequency prior reaches 0.205 accuracy on the test sample.

Table 1. Processed sample composition

SplitObservationsUsersAlternative 1Alternative 2Alternative 3Alternative 4Alternative 5
Estimation7,8454,0781,5361,6241,5891,5431,553
Validation4,0784,078830785853782828
Test4,0784,078830845804773826

Candidate sets are assigned within user using a random-number generator with seed 42: after a user-specific shuffle, one set enters test, one enters validation, and the remaining sets enter estimation. Each resulting split is then independently permuted with the same seed. The analysis takes the first 4,000 rows of the permuted estimation split and the first 1,000 rows of each held-out split. These computational caps make repeated local-model scoring feasible and are held fixed across estimators. Repeated adapter selection uses the first 200 validation rows, while local demonstration selection considers the first 256 estimation rows; these smaller subsamples bound repeated GPU evaluation and prompt serialization.

The 4,000-observation estimation sample contains 2,994 users. Among the 1,000 test observations, 737 users appear in that sample and 263 do not. The 200-observation model-selection subsample remains part of the 1,000 observations later used for calibration. Table 2 records every use of an outcome label.

Table 2. Data and label usage

SampleLabel exposureUse of outcomesEstimated or selected object
Complete estimation split7,845 labelsPosition-frequency priorFive Laplace-smoothed label counts; four free probabilities
No outcome labels0Most-popular-candidate ruleNo fit; select the greatest catalog popularity count in each set
4,000-observation estimation sample4,000 labelsPooled logistic classifier1,180 slopes and intercepts by displayed position, penalized likelihood
4,000-observation estimation sample4,000 labelsConditional logit45 common candidate-attribute coefficients, penalized likelihood
4,000-observation estimation sample4,000 labelsIdentity-based low-rank logitUser and item factors; rank and penalty selected on validation
4,000-observation estimation sample1,600 optimizer presentations from the labeled poolQLoRA3,145,728 adapter parameters by token cross-entropy
256-observation demonstration-selection sample5 labelsLocal ICL demonstrationsNo persistent parameter; labels enter every query
1,000-observation API demonstration sample0, 1, or 5 labelsAPI demonstrationsNo persistent parameter; generated hard label only
200-observation validation subsample200 labelsAdapter-model selectionCheckpoint, adapter scale, and demonstrations on/off
1,000-observation validation sample1,000 labelsClassical tuning and LM calibrationRidge or factor settings; five-fold calibrator comparison; final calibration refit
1,000-observation test sample1,000 labelsDescriptive evaluationNo fitted parameter

ICL uses five labeled estimation observations even though it estimates no persistent parameter. The decision to include demonstrations is itself informed by validation performance.

From systematic utility to language-model scores

For a conventional choice occasion, write

Independent type-I extreme-value errors yield the familiar logit probability. The language-model construction reuses only its finite-set map,

where is now a string log likelihood. Only differences in matter, so a common observation-specific constant is unidentified. The normalization shares algebraic properties with classical logit but does not inherit its behavioral assumptions.

PropertyClassical logit derivationLM finite-set normalization
Five nonnegative probabilities summing to oneYesYes
Invariance to a common additive index constantYesYes
EV1 disturbance interpretationYesNo
IIA from context-independent alternative utilityYesNot generally
Exact equivariance to relabeling and display orderYesNo
Welfare or elasticity interpretationWith additional identificationNo

Because every candidate is in the prompt, may depend on the entire displayed set. The LM can represent compromise, dominance, or other context effects without a special kernel. It can just as freely react to irrelevant formatting, title length, position, or verbalizer choice. This is flexible but unrestricted set dependence, not a structural relaxation of IIA.

Two simple rules and three classical benchmarks

Position-frequency prior. Let count position in the full 7,845-row estimation split. The baseline assigns every observation

and predicts its largest component. The only outcome-bearing inputs are the 7,845 full-estimation labels; there is no numerical optimization. The most-popular-candidate rule uses no outcome label: it selects the candidate with the greatest catalog ownership count. It is evaluated only as a hard rule because no probabilistic mechanism is estimated.

Pooled position-specific logistic classifier. Let stack ten user aggregates and five blocks of 45 candidate attributes. The fitted statistical classifier is

It estimates a different 235-vector for each randomized displayed position, for 1,175 slopes and five intercepts. With and scikit-learn’s , the implemented objective is

on a standardized design; intercepts are unpenalized. This pooled classifier treats the five displayed positions as separate outcome classes and estimates position-specific slopes. The conditional-logit specification below instead imposes common attribute coefficients across positions.

Symmetric conditional logit. Let contain candidate ’s price, free and missing-price flags, release year, early-access flag, popularity count and rank, title length, five history-match measures, and 32 taxonomy indicators. The benchmark appropriate to exchangeable positions is

After standardizing each attribute over all training alternatives, minimizes mean negative log likelihood (NLL) plus . The validation-log-loss grid is ; is selected. There is no position constant because position is randomized and economically meaningless. This 45-parameter model is the primary benchmark because it respects that exchangeability and uses the same conditional-softmax structure as the calibration model.

Equivalently, its implemented criterion for a fixed is

Identity-based (ID) low-rank logit. The empirical factor model follows the repeated-user/item logic of Kallus and Udell (2016),

with probabilities normalized only over the displayed assortment. For fixed rank and penalty, estimation minimizes the summed choice NLL plus a factor penalty,

Utilities are centered to sum to zero across the 500 items for each user; this identification normalization leaves assortment probabilities unchanged. Ranks and penalties are selected by validation accuracy. The selected rank is two and the penalty is one. Appendix C gives the deterministic rule for metric ties.

The factor model reads user and item identities plus the candidate availability mask, not attributes. The estimation sample contains 2,994 users and 500 items but only 4,000 observations. For the 263 test users absent from estimation, the implementation substitutes the factor of the most frequently observed estimation user. This ad hoc rule permits prediction but is not an estimate of an unseen user’s latent factor; the resulting performance combines sparse factor estimation with this cold-start convention.

Mixed logit places low-dimensional structure somewhere else (Train 2009): is random and integrated out, which can relax IIA and yield substitution patterns under maintained behavioral assumptions. QLoRA instead produces a deterministic query-conditional index and restricts neural weight updates. These uses of “low rank” therefore refer to different estimands.

Complete-suffix likelihood

Let be the serialized covariates surrounded by the model’s deterministic chat template, including the control tokens that mark the start of an assistant response. Let be the tokenized suffix that completes the response with choice_j and the model’s end-of-turn material. The frozen index is

and . All five alternatives tokenize to three scored suffix tokens, so summed likelihood does not create cross-alternative length bias here. Natural game names would not share that property and should not be used as unequal-length labels without a considered scoring rule.

The scorer encodes the common query prefix once and branches into the five suffixes. Across the 1,000 test observations, the median of is 0.9996, so the five suffixes account for nearly all continuation mass in this tightly constrained interface. Conditioning remains necessary to define probabilities on the feasible choice set.

Grammar-constrained one-token likelihood

The faster interface replaces choice_1 through choice_5 everywhere with the single-token verbalizers A through E. For demonstrations ,

At inference a grammar restricts the next-token support to A, B, C, D, or E. Generation is limited to one token and all sampling filters are disabled. The local runtime returns the constrained probabilities of all five letters; classification uses that vector rather than the sampled output.

Single-token scoring uses one model evaluation per observation instead of five suffix continuations, but the five long demonstrations raise the median context to 5,616 tokens. Frozen full-label scoring reaches 4.59 observations per second, compared with 2.22 for adapted single-token scoring with five demonstrations.

Generated hard choices

The external comparison systems return generated answers rather than complete five-way probability vectors,

The common-sample API comparison contains three configurations evaluated on July 26, 2026: GPT-5.3 Codex Spark with zero or one demonstration and the provider’s xhigh reasoning setting, and GPT-5.5 with five demonstrations and the medium setting. These provider-defined settings control inference computation; they are not estimated task parameters. The configurations were chosen after evaluations on 200 test rows and were then applied to all 1,000 test observations. They are descriptive benchmarks rather than an exhaustive or preregistered model comparison. Appendix C reports the exact model identifiers, interface, software version, prompt structure, and batch settings.

The one- and five-demonstration prompts use deterministic class-balanced observations from the 1,000-observation API demonstration sample. Demonstrations fit no persistent parameter and optimize no explicit loss. Missing or malformed labels count as incorrect. Because only generated labels were recorded, these systems support accuracy and macro-F1 comparisons but not log loss, Brier score, AUC, or calibration analysis. Exact demonstration identifiers and batch settings are reported in the reproducibility appendix.

Figure 1 shows the probability construction. The adapter alters the network before either softmax; the affine model acts only after the five-way vector has been constructed.

A left-to-right diagram showing a serialized Steam prompt entering a language model, a vocabulary softmax, selection of five label likelihoods, a five-way choice softmax, and affine calibration. A QLoRA adapter modifies the language model before scoring.

Figure 1. From serialized covariates to a finite-choice probability vector. The vocabulary distribution is internal to the LM; the five-way conditioning and affine map are analyst-imposed.

Adaptation and calibration: features, labels, and losses

This section treats each intervention as an estimator and states its covariates, outcome labels, fitted object, criterion, and sample. The distinction is substantive: ICL consumes labeled observations but fits no persistent parameter; QLoRA estimates millions of network parameters with a vocabulary-level token loss; calibration estimates at most five free numbers from already-produced probabilities.

Labels and the serialized design

Let denote the displayed position of the candidate with the greatest lifetime playtime and let

The complete-suffix estimator uses the canonical strings choice_1 through choice_5. The one-token estimator applies the deterministic verbalizer

Thus A means “first displayed candidate,” not a game, brand, or product category. Candidate order is randomized. The 4,000-row estimation pool contains 794, 814, 809, 785, and 798 outcomes at positions one through five. There is no class weighting, oversampling, or label smoothing.

The LM covariate is the literal serialized query . It contains top non-candidate games and minutes; non-candidate review snippets; ten user-history scalars; and, for each candidate, price, free status, release year, popularity, five history-match measures, title, genres, and tags. Candidate playtime is absent. The single-token specification replaces each canonical position label in the query with its corresponding letter. Appendix B reproduces one complete held-out query and the fitted probability vector from each principal estimator.

The LM is scored at the first admissible answer-token position with no intervening generated tokens. Allowing the model to generate reasoning or other text before the label would define a different classifier whose prediction depends on the generated path.

The frozen and adapted single-token specifications use different fixed instructions. The frozen version describes the model as a “discrete-choice classifier” and appends “Answer with one letter” to each user turn. The adapted version uses the system instruction present during supervised training and does not append that phrase. Demonstrations, verbalizers, and the probability rule are otherwise held fixed in their closest comparison. Consequently, the frozen-to-adapted contrast estimates the joint change in adapter weights and instruction format, not an isolated adapter effect.

In-context conditioning

The five-demonstration specification prepends labeled estimation examples as alternating user and assistant turns. Every demonstration contains the same serialized features and an assistant response . The demonstration-selection sample contains the first 256 rows of the randomly permuted estimation split. Within each outcome class, the observation with the shortest serialized query is selected to control context length. This deterministic rule favors observations with relatively sparse histories, and sensitivity to the sample size or demonstration choice is not measured.

Conditional on this rule, ICL estimates no persistent parameter and minimizes no explicit loss:

ICL therefore uses five observed outcomes on every prediction, and validation performance determines whether demonstrations are included in the final specification. Demonstrations can communicate the input-output convention even when they do not identify a stable parametric relationship (Min et al. 2022). The reported estimate conditions on this single deterministic demonstration set.

QLoRA estimation

For every adapted attention projection, LoRA replaces a frozen matrix by (Hu et al. 2021)

where and . QLoRA backpropagates through a frozen four-bit base representation while updating only and (Dettmers et al. 2023).

Training objective

For row , let be the tokenized system message, query, and observed assistant completion. Let index unmasked response tokens. Prompt and padding tokens receive the ignore index . Training minimizes

where is Qwen’s entire vocabulary and is the 4,000-row estimation pool. An untruncated completion contains three supervised tokens: the outcome letter, Qwen’s end-of-turn marker, and a newline. The same token weight is assigned to all three.

A five-class choice loss would instead use only the outcome-letter position and normalize over the five verbalizers,

These objectives are not equivalent. At the label position, the vocabulary loss equals the five-class loss plus the log ratio of the full-vocabulary partition function to the five-verbalizer partition function. It also adds two constant-target termination terms. The training loss of 0.5057 therefore cannot be compared with , the validation choice NLL, or the evaluation choice NLL. The termination tokens may become easy quickly, so their share of token count does not measure their share of useful gradient information. A direct restricted-label loss is an important alternative estimator.

Training truncation error

Right truncation at 1,536 tokens removes the response from 22 of 4,000 estimation sequences. The implementation incorrectly places loss on the last available prompt token for these rows rather than on the outcome label. Training ends after 1,600 example presentations, or 0.40 nominal epoch, and minibatch identifiers were not recorded, so the realized optimizer exposure of the 22 affected rows is unknown.

Parameterization and numerical optimization

ComponentSpecificationConsequence
Frozen training baseNF4, double quantization, BF16 arithmeticBase weights receive no gradient
Adapter locationsQuery, key, value, and output attention projectionsAttention only; no MLP projection is adapted
Rank and scale, Training-time multiplier
Trainable size3,145,728 of 4.209 billion parameters0.0747% of model parameters
RegularizationLoRA dropout 0.05; no adapter bias; no weight decayStochastic adapter path, zero-initialized through
OptimizerPaged eight-bit AdamW, learning rate , , , gradient norm at most one
BatchingEffective batch size 8200 steps equal 1,600 row presentations
Schedule3% warmup, cosine, seed 42Adaptive segments ending at 25, 100, and 200 updates

The rank, target projections, and number of updates define the estimator’s capacity. Optimizer precision, clipping, and checkpointing make estimation feasible on a 12 GB GPU. Estimation consists of segments ending at 25, 100, and 200 updates, with continuation determined by validation accuracy. Each segment restarts the cosine schedule, so the learning rate approaches zero at updates 25 and 100 and then rises at the start of the next segment. The resulting learning-rate path differs from a single 200-update cosine decay.

Validation-selected inference setting

At local inference the adapter is applied to a Q4_K_M base rather than the NF4 representation used during training, and it is multiplied by a separate scale ,

The checkpoint, , and inclusion of demonstrations are selected sequentially by hard-choice accuracy on the 200-observation validation subsample. The search is non-Cartesian: checkpoint and scale are chosen before demonstrations are added, and the 200-update checkpoint is evaluated only after those earlier choices. Table 3 gives the candidate values and selected specification; Appendix C reports the corresponding validation accuracies.

Table 3. Sequential adapter-model selection on 200 validation observations

Selection dimensionCandidate valuesSelected value
Initial checkpoint25 or 100 updates100 updates
Adapter scale at 100 updates
Demonstrations at 100 updates and zero or fivefive
Final checkpoint with five demonstrations and 100 or 200 updates200 updates

For a proportion near one-half, the binomial standard error at is about 0.035. The selected settings are therefore noisy estimates of nearby alternatives. The search is sequential rather than Cartesian, has no multiplicity correction, and reuses the same 200 observations within the 1,000-row calibration sample. These features create validation-selection optimism.

The distinction between and calibration temperature is important. amplifies the estimated neural update before the network produces logits; rescales log probabilities after the network has produced a five-vector. They need not have the same empirical effect.

Economic interpretation of the low-rank restriction

Write the task-specific index as

where is the frozen LM index and is the correction required for this outcome. Pretraining may already represent semantic similarity, genre, popularity, and history-candidate match; adaptation changes how those represented signals map into the revealed-use label. A useful low-dimensional hypothesis is

Possible directions include affinity with high-playtime history, multiplayer fit, novelty, and generic popularity. These names are economic interpretations, not identified adapter factors, and the interpretive dimension need not equal the matrix rank .

A local expansion gives

Because is restricted to low-rank changes in selected matrices, the allowable index correction lies in a restricted tangent family. That is the useful analogy to low-dimensional mixed-logit heterogeneity. It is not an equivalence: QLoRA estimates no distribution , its heterogeneity is deterministic conditional on the query, and rank 16 in neural weight space does not imply a rank-16 user-item utility matrix.

Frozen likelihood renormalization and calibration

Calibration is fitted separately for each raw LM probability source. Let denote the source vector and define

The only calibrator covariates are the five logged source probabilities . No Steam field, text embedding, user identity, or candidate identity enters. The target is the same , and the common criterion is multiclass negative log likelihood,

Five stratified folds split the 1,000 validation observations, with shuffling and seed 42. Parameters are fitted on 800 rows and scored on the other 200; the concatenated holdouts provide out-of-fold selection metrics for the calibrator. The upstream adapter specification has already been selected using 200 observations from this same validation sample, so these are not end-to-end out-of-sample metrics. The selected calibration family is then refitted on all 1,000 validation rows and applied once to test.

The four candidate maps are:

  1. Direct: ; no fitted parameter.
  2. Temperature: with , estimated by minimizing NLL. Because division by a common positive number preserves ordering, temperature alone cannot change accuracy. The selected adapted source gives full-validation .
  3. Marginal prior shift: , where . Both moments and are recomputed inside every training fold. Unlike the other fitted calibration families, this exploratory comparator selects by training-fold accuracy. The full-validation values are and .
  4. Affine:

Affine calibration is a conditional logit with one alternative-varying regressor , a common slope , and four identified alternative-specific constants. Its criterion is

the common slope is unpenalized. For the selected adapted source, the full-validation fit is and

Because displayed positions are randomized, these offsets are not product constants or tastes. They measure systematic distortion associated with letter and display position. The positive first-position adjustment and broadly decreasing offsets through position four are consistent with prompt or verbalizer position bias, a known issue in few-shot classification (Zhao et al. 2021). Deterministic tie-breaking could also favor position one, but only one observation in the entire validation split has a tied maximum, so it cannot mechanically account for an offset affecting the full sample. The partial recovery at position five cautions against a literal linear primacy story.

The estimate sharpens rather than flattens probabilities, implying that the raw adapted model is underconfident on validation. Calibration improves predictive probabilities (Guo et al. 2017); it does not recover preference coefficients. Appendix C gives optimizer initialization, parameter encoding, and deterministic tie rules for the calibration computations.

Exploratory activation steering

Activation steering tests whether a single supervised displacement of the model’s hidden state can change candidate rankings without updating network weights. This restriction is substantially narrower than QLoRA because the same direction is applied to every query, candidate, and token position. It changes confidence slightly but does not materially improve validation classification, so no steering specification is calibrated or evaluated on test. Appendix A defines the features, labels, auxiliary probe, contrast direction, and scale comparison.

Evaluation

Accuracy is the principal hard-classification statistic because it is the only performance object shared by the local probability estimators and the external hard-label classifiers. The empirical position-frequency baseline is 0.205, close to but not exactly the theoretical 0.200 chance rate. Macro F1 prevents a favorable aggregate score from hiding a failed displayed position.

For systems that return a probability vector, average negative log likelihood is the primary probability criterion,

It is a strictly proper score and directly punishes assigning little mass to the realized alternative. The multiclass Brier score is the mean squared distance from the one-hot outcome and is less tail-sensitive. One-versus-rest macro AUC measures ranking separately for each displayed position and does not evaluate calibration.

Model and adapter settings use validation outcomes, and calibration families use five-fold out-of-fold predictions from the same validation sample before a full-validation refit. Marginal 95% Wilson intervals accompany accuracy points in the figure. Differences use 100,000 paired nonparametric bootstrap resamples of the 1,000 test observations; because each row belongs to a distinct user, this also resamples users. Exact two-sided McNemar tests use the two discordant cell counts.

Results

Comparative predictive performance

Table 4 evaluates the simple rules, classical probability estimators, and local LM specifications on the same 1,000 observations. Symmetric conditional logit is the primary benchmark because candidate position is randomized and its common coefficients respect alternative exchangeability. It reaches 0.461 accuracy and has the best NLL, Brier score, and AUC in the table. The calibrated Qwen specification has the highest hard-accuracy point estimate, 0.480, but its NLL is 0.010 higher.

Table 4. Test performance on 1,000 common observations

EstimatorAccuracyMacro F1NLLBrierMacro AUC
Position-frequency prior0.2050.0681.6090.8000.500
Most-popular candidate0.4040.404
Identity-based low-rank logit, rank 20.2870.2862.9420.9650.539
Pooled position classifier, 1,180 fitted numbers0.4160.4171.4500.7200.727
Symmetric conditional logit, 45 attributes0.4610.4611.3350.6710.754
Frozen Qwen, complete-suffix likelihood0.2860.2821.8390.8780.601
Frozen Qwen, five-shot one-token likelihood0.2860.2731.8300.8840.615
Frozen Qwen, five-shot plus affine calibration0.3080.3081.5570.7780.619
Adapted Qwen, training-format instruction and five-shot, uncalibrated0.4620.4601.3810.6890.751
Adapted Qwen plus affine calibration0.4800.4801.3450.6730.751

The popularity rule is included only as a hard decision rule; because it estimates no probability model, proper scores are omitted. The two frozen rows differ in both label representation and demonstrations, so their equal accuracy does not identify an ICL effect.

The closest frozen-to-adapted comparison holds the one-token verbalizers and five demonstrations fixed but jointly changes chat formatting and adapter weights, as detailed in the methods. Accuracy rises from 0.286 to 0.462 across that joint change. The 17.6-point contrast therefore measures the adapted specification as a whole rather than the adapter’s isolated contribution. Independently fitted affine models move the corresponding final figures from 0.308 to 0.480.

The identity factor model performs poorly in this sparse design. There are only 1.34 estimation observations per represented user, and 263 test users are absent from estimation. Its rank-two factors therefore have little repeated-choice information from which to learn, while the most-frequent-user substitution supplies no individualized information for absent users. This result characterizes the present data regime rather than matrix-completion choice models generally.

Paired comparisons

Table 5 compares calibrated Qwen with three references. Its 6.4-point advantage over the pooled position classifier remains positive under paired resampling. The primary conditional-logit comparison is much closer: the point difference is 1.9 points, its interval includes zero, and the exact discordance test does not reject equality.

Table 5. Paired test comparisons for selected Qwen

ReferenceReference accuracyQwen minus referencePaired bootstrap 95% intervalQwen only correctReference only correctExact McNemar
Most-popular candidate0.4040.076177101
Pooled position classifier0.4160.06415995
Symmetric conditional logit0.4610.019100810.181

For the main conditional-logit comparison, Qwen NLL minus conditional-logit NLL is 0.010, with paired bootstrap interval . Thus neither the accuracy evidence nor the proper-score evidence establishes dominance. The 181 rows on which exactly one of these two systems is correct are nevertheless informative: the systems are not duplicates, and a validation-designed ensemble is a natural next experiment.

External hard-label classifiers

The three API configurations cover the same 1,000 test observations. They use the same serialized information and target positions, but only generated labels are available. GPT-5.3 Codex Spark uses xhigh reasoning with zero or one demonstration; GPT-5.5 uses medium reasoning with five. Neither receives task-specific parameter updates.

Table 6. Hard-label classification on the common test sample

Prediction systemTask-specific parameter fittingDemonstrationsAccuracyMacro F1Parseable output
Selected local Qwen3.5-4B3.15-million-parameter QLoRA adapter plus five-parameter affine map50.4800.4801.000
Symmetric conditional logit45-coefficient penalized likelihood00.4610.4611.000
Pooled position classifier1,180 fitted numbers00.4160.4171.000
GPT-5.5, medium reasoningNone50.3870.3881.000
GPT-5.3 Codex Spark, xhighNone00.2720.2720.996
GPT-5.3 Codex Spark, xhighNone10.2600.2600.992

Malformed or missing API labels count as incorrect: four Spark zero-demonstration rows and eight one-demonstration rows are invalid. Five-demonstration GPT-5.5 is 7.4 points below conditional logit and 9.3 points below adapted Qwen. The comparison is asymmetric in task information: Qwen receives 1,600 optimizer presentations drawn from 4,000 labeled rows, whereas GPT-5.5 receives five labels in context. These figures compare complete task-specific procedures, not general model capability. The 1.2-point Spark difference also changes the context and one demonstration and is too small to support a general conclusion about ICL.

Figure 2 collects the principal local specifications, the classical benchmarks, and the three full-sample API configurations. Every point has the same denominator and observation identifiers.

Dot-and-whisker comparison of four local Qwen specifications, four classical rules or estimators, and three API classifiers. The selected jointly adapted Qwen model reaches 48.0 percent accuracy and conditional logit reaches 46.1 percent; their paired difference is 1.9 percentage points with a confidence interval spanning zero.

Figure 2. Hard-choice accuracy on the same 1,000 test observations. The adapted Qwen labels denote the joint QLoRA, instruction-format, and demonstration specification. Bars are marginal 95% Wilson intervals. The bracket emphasizes the paired Qwen versus conditional-logit comparison; its interval is for the paired difference, not the marginal bars. Invalid API outputs count as incorrect.

User overlap

Table 7 stratifies the same test sample by whether the user’s identifier appears in the 4,000-observation estimation sample. Every estimator except the identity-factor model continues to use observed attributes or the serialized history for users not represented in estimation.

Table 7. Accuracy by user overlap with the 4,000-observation estimation sample

Test groupPopularityIdentity low-rankPooled classifierConditional logitSelected Qwen
User represented7370.4060.2900.4080.4590.463
User absent2630.3990.2850.4370.4680.529

The Qwen-minus-conditional-logit difference is 6.1 points among users absent from the 4,000-observation estimation sample and 0.4 points among represented users. User identifiers never enter Qwen, so direct identifier memorization cannot generate this pattern. The comparison remains descriptive: the groups differ compositionally, every row contains a non-candidate history, and no subgroup-specific specification was selected.

What calibration changes

Affine calibration is selected because it has the best calibrator-only out-of-fold validation accuracy, NLL, and Brier score. Prior shift classifies one additional test row, but calibration-family selection is based on validation data. Affine calibration also has the lower test NLL.

Table 8. Adapted-model calibration

TransformationCalibrator-only OOF accuracyCalibrator-only OOF NLLTest accuracyTest NLLTest Brier
Direct0.4451.3880.4621.3810.689
Temperature0.4451.3880.4621.3780.685
Prior shift0.4441.3700.4811.3560.679
Affine0.4511.3610.4801.3450.673

Figure 3 compares top-choice confidence with realized top-choice accuracy in five equal-count test bins. This diagnostic is descriptive because the same test outcomes define the displayed reliability points; calibration parameters themselves were estimated only on validation. Affine calibration lowers this top-choice expected calibration error from 0.063 to 0.037.

Reliability diagram with five bins for direct and affine Qwen probabilities. The affine curve lies closer to the forty-five-degree line, reducing top-choice expected calibration error from 0.063 to 0.037.

Figure 3. Top-choice reliability before and after affine calibration. Each point contains 200 test observations; the diagonal is perfect calibration. ECE is the equal-count-bin weighted absolute confidence gap.

Quantization robustness

The deployment specification uses Q4_K_M base weights. A fixed BF16 evaluation applies the same 200-update adapter, scale 1.25, demonstrations, grammar, test identifiers, and Q4-estimated affine calibration. No component is retuned under BF16.

Table 9. Q4_K_M and BF16 inference parity

Base and probability mapAccuracyMacro F1NLLBrierMacro AUC
Q4_K_M, raw0.4620.4601.3810.6890.751
BF16, raw0.4620.4621.3700.6830.753
Q4_K_M, validation-fitted affine0.4800.4801.3450.6730.751
BF16, same fixed Q4 affine map0.4770.4771.3450.6710.753

Aggregate performance is stable, but the two numerical representations are not rowwise identical. Raw argmax agreement is 0.908 and affine argmax agreement is 0.910. Mean absolute probability difference is 0.0195, mean rowwise total-variation distance is 0.0487, and gold-probability correlation is 0.984. Raw Q4-minus-BF16 accuracy is exactly zero with paired interval ; under the fixed affine map it is 0.003 with interval . The result supports Q4 deployment at the aggregate level while warning against treating quantization as bitwise or observation-level invariance.

Computational requirements

All local LM results use an NVIDIA RTX 5070 with 12 GB of memory. The Q4_K_M base is 3.01 GB and the selected adapter is 6.29 MB; the BF16 base is approximately 8.4 GB. Table 10 reports fitting, model-selection, and scoring time separately.

Table 10. Recorded compute

OperationSample or passesRecorded timeQualification
Conditional-logit ridge grid6 fits on 4,000 rows0.42 s CPU cumulativeSelected fit itself takes 0.07 s
Identity low-rank rank/penalty grid16 fits on 4,000 rows88.6 s CPU cumulativeSelected fit itself takes 3.80 s
Pooled-classifier fit4,000 rows7.93 s CPU235 standardized covariates and five logits
QLoRA updates 101–200100 updates624.5 s GPUTotal adapter-training time is unavailable
Adapter-model selection9 evaluation passes of 200 rowsabout 781 s GPUSequential validation search
Frozen complete-suffix test scoring1,000 rows218.1 s GPU4.59 rows/s; common-prefix branching
Selected Q4 validation scoring1,000 rows447.9 s GPUFive demonstrations
Selected Q4 test scoring1,000 rows450.8 s GPU2.22 rows/s
Fixed BF16 test scoring1,000 rows384.6 s GPUNo component retuned

The median selected-model prompt has 5,616 tokens, and llama.cpp reuses a median 4,639 cached prompt tokens from the fixed demonstrations. At the observed Q4 rate, one million similarly sized choice occasions would require roughly 125 serial GPU-hours before engineering for parallel devices or batching. The local method is feasible, not free. Conditional logit is the obvious operational default when its hand-built feature map is adequate; the local LM buys a text-native representation at several orders of magnitude more computation.

Interpretation

The results support four conclusions.

First, symmetry matters more than model branding. The pooled position classifier wastes parameters by learning five versions of relationships that should be exchangeable. The 45-coefficient conditional logit improves its accuracy by 4.5 points and NLL by 0.115. It essentially matches the uncalibrated adapted Qwen specification and slightly outperforms the final LM on every reported probability score. For an analyst who already has the 45 candidate attributes, conditional logit is the best default here.

Second, pretrained representation is not outcome alignment. Frozen Qwen is weak despite seeing titles, tags, histories, and reviews. The jointly adapted specification, which introduces outcome-supervised low-rank weights together with the training-format instruction, is much more accurate. This pattern is consistent with a restricted correction to represented signals, but the formatting difference prevents attribution of the full 17.6-point contrast to adapter weights alone. The fitted correction also does not reveal whether the predictive signal is “taste,” popularity, genre duration, or another regularity.

Third, calibration is a small econometric model, not cosmetic post-processing. The affine layer estimates a common log-probability slope and position constants. It adds 1.8 accuracy points, materially improves reliability, and exposes a large first-position measurement offset. Those gains should be attributed to validation labels and five fitted calibration degrees of freedom, not to the base LM.

Fourth, the LM and conditional logit are complements before they are rivals. Qwen is uniquely correct on 100 rows and conditional logit on 81. A combined model could use the conditional index, LM index, or both as alternative-varying regressors and estimate their weights on validation data. That design would test whether text contributes beyond the structured attribute benchmark while explicitly accounting for their different information sets.

The external comparisons reinforce the importance of task information. A general-purpose model with five demonstrations is not matched on training exposure to a local model receiving 1,600 presentations from a 4,000-row labeled pool. Its lower accuracy is consistent with a benefit from persistent task estimation; it does not rank general intelligence. Similarly, the popularity baseline shows that a nontrivial share of the task is generic item comparison. Separating popularity, semantic match, and individualization requires item-held-out evaluation and targeted feature ablations.

An operational decision rule follows. Use conditional logit when the alternative attributes are available and probability quality, speed, or interpretability matter. Add a local adapter when important information is genuinely textual, the same narrow outcome recurs often enough to amortize training, and a held-out gain persists relative to a symmetric benchmark. Use calibration whenever probabilities rather than only rankings matter. Do not use this fitted index for price elasticities, welfare, assortment counterfactuals, or policy simulation without a separate behavioral and identification argument.

Limitations

The first limitation is the estimand. Highest lifetime playtime among five already-owned games is a revealed-use ranking, not a purchase at a known menu. It combines preference, exposure, ownership duration, and genre-specific time intensity.

Second, the alternatives are analyst-sampled from a 500-game catalog. Probabilities are conditional on that sampled set and cannot be aggregated into market shares without modeling the sampling and availability process. Catalog rank and popularity are computed from the first 30,000 source user records before splitting, so the experiment is transductive with respect to those product-level fields.

Third, the study is retrospective and not preregistered. Computational caps were chosen during development, and preliminary tuning, including selection of the API configurations, inspected smaller test-split subsets. The reported intervals are therefore descriptive for this realized 1,000-observation analysis. They omit uncertainty from adapter training, demonstration choice, validation search, calibration estimation, instruction design, quantization, and base-model pretraining.

Fourth, demonstration selection and adapter estimation are measured only once. Demonstrations are selected deterministically by minimum serialized length within the 256-observation selection sample. There is no random-demonstration distribution, item-held-out evaluation, independent adapter seed, or repeated fit.

Fifth, standard SFT does not optimize the reported five-way likelihood. Two of three intended response tokens are chat termination material, and 22 right-truncated estimation rows lose the label entirely. The adaptive training schedule covers only 1,600 example presentations and restarts its cosine schedule twice. Convergence to either the vocabulary objective or the ideal five-class objective is not assessed.

Sixth, complete prediction systems receive different representations. Conditional logit receives 45 engineered candidate attributes; Qwen receives a textual serialization containing some of those values plus titles, tags, and reviews. Qwen also uses five labels in context and 1,600 stochastic example presentations, whereas the classical estimators use all 4,000 labels directly. The comparison does not isolate functional form, text, or effective sample size. Moreover, the closest frozen and adapted LM specifications use different chat instructions, so their accuracy difference does not isolate QLoRA.

Seventh, user overlap is not randomly assigned. The stronger point accuracy among users absent from the 4,000-observation estimation sample may reflect composition and does not establish cold-start superiority. The identity-based low-rank result is especially sensitive to sparse observations per user and its ad hoc absent-user substitution.

Eighth, the study covers one dataset, one four-billion-parameter architecture, one adapter parameterization, one Q4 format, and one GPU. The BF16 comparison supports aggregate quantization robustness for this specification, not a general invariance claim. The three API configurations are not an exhaustive comparison of external models.

Finally, finite-set normalization creates coherent predictive probabilities but not a structural random-utility model. The LM index can depend on the entire prompt, displayed order, and arbitrary verbalizers; it need not satisfy regularity or stable substitution restrictions. Endogenous price, exposure, and assortment remain endogenous after passing through a neural network. Instruments, experimental variation, supply-side structure, or explicit assignment assumptions are still required for causal demand analysis.

Conclusion

A quantized four-billion-parameter LM can be converted into a finite-choice probability estimator by scoring admissible labels and conditioning on the displayed set. Frozen likelihoods are not competitive in this application. A jointly adapted specification combining a 3.15-million-parameter QLoRA adapter, the training-format instruction, and five demonstrations supplies the large improvement. The separate test-sample contribution of demonstrations and instruction wording is not identified. A five-parameter affine layer adds 1.8 accuracy points and improves probability alignment.

The resulting 0.480 test accuracy is higher than the popularity rule, the pooled position classifier, conditional logit, and the three full-sample API configurations. Symmetric conditional logit already reaches 0.461 and has slightly better NLL, Brier score, and AUC. The 1.9-point paired accuracy difference is not statistically distinguishable from zero under test-sample resampling. The local model is therefore competitive with a strong conventional estimator, not shown to dominate it.

For empirical economists, the useful object is a nonlinear systematic-index engine whose label use and loss function can be stated explicitly. Frozen scoring exposes the pretrained index; ICL conditions it on labeled vignettes; QLoRA estimates a restricted domain correction; affine calibration estimates a familiar scale and alternative-specific constants. Neural low rank is a regularizer in parameter space, not identified low-dimensional taste heterogeneity. The method is promising for recurring text-rich prediction problems when evaluated against an exchangeable choice model and interpreted as prediction rather than structural demand.

Appendix A: Activation-steering diagnostic

Activation steering (Turner et al. 2024) is evaluated as a weight-preserving alternative to parameter adaptation. An auxiliary probe selects a transformer block. The probe uses 1,000 observations from each of the permuted estimation and validation splits; its features are the standardized final-query hidden state of the frozen model, and its labels are the same five position outcomes . At candidate block , penalized multinomial logistic regression estimates intercepts and class coefficients by minimizing

where

Intercepts are unpenalized. Blocks 24, 28, and 31 sample three depths in the upper quarter of the 32-block network; no exhaustive layer search is performed. Values are compared by accuracy on 1,000 validation rows after fitting on 1,000 estimation rows. Block 24 with reaches 0.267, versus maxima 0.237 and 0.240 at blocks 28 and 31. The probe is used only for layer selection.

The direction uses a separate supervised contrast. Let be the layer- hidden state averaged over the complete response-suffix tokens after presenting query and candidate response choice_j. Define the cyclic counterlabel for and . On the 1,000-observation estimation sample,

The feature is therefore the frozen hidden state induced by the serialized covariates; supplies the positive suffix and the cyclic label supplies the negative suffix. No classifier or differentiable loss fits : it is a difference of sample means followed by normalization. The source is frozen Q4 Qwen with maximum sequence length 6,144. The same intervention is added at every token position in block 24,

Scales are compared on the 200-observation validation subsample used for adapter-model selection. Because steering does not materially improve classification, it is not evaluated on the test sample.

Steering scale AccuracyMacro F1NLLMacro AUC
00.3200.3011.9370.572
-20.3250.3051.8890.569
-40.3250.3051.8530.567
-80.3200.2931.8120.566

The direction changes confidence but not classification materially and degrades AUC monotonically. A single alternative-agnostic vector applied to every token is too restrictive to supply the candidate-specific correction learned by QLoRA.

Appendix B: Illustrative serialized observation

The following query is one held-out observation after deterministic replacement of choice_1 through choice_5 by A through E. Line wrapping is the only change from the model input. Its observation identifier is 12678.

SYSTEM: You are a discrete choice model. Given structured covariates and
candidate alternatives, predict the observed chosen alternative. Respond
with exactly one label from: A, B, C, D, E.
 
USER: Predict which held-out Steam game this user played the most.
The observed user history below excludes all candidate games and candidate reviews.
Return exactly one label from: A, B, C, D, E.
 
Top played non-candidate games as [game, lifetime playtime minutes; ...]:
[Warframe, 8559; Terraria, 5410; Euro Truck Simulator 2, 2674;
 Don't Starve Together, 492; PAYDAY 2, 186; Counter-Strike: Source, 149;
 Fractured Space, 104;
 Red Orchestra 2: Heroes of Stalingrad with Rising Storm, 48]
 
Non-candidate reviews as [game, recommended flag, review text; ...]:
[none]
 
Tabular features:
- user: user_items_count=51, user_played_games=28, history_played_games=8,
  history_total_playtime=17622, history_mean_playtime=2202.75,
  history_median_playtime=339, history_max_playtime=8559,
  history_review_count=0, history_recommend_share=0,
  history_mean_review_length=0
- A: price=0, is_free=1, release_year=2017, popularity_count=13970,
  popularity_rank=4, history_term_minute_score=7.34,
  history_term_count_score=57, history_term_overlap=13,
  history_developer_match_count=0, history_publisher_match_count=0
- B: price=0.99, is_free=0, release_year=2013, popularity_count=3430,
  popularity_rank=66, history_term_minute_score=7.17,
  history_term_count_score=55, history_term_overlap=11,
  history_developer_match_count=0, history_publisher_match_count=0
- C: price=0, is_free=1, release_year=2011, popularity_count=4863,
  popularity_rank=39, history_term_minute_score=6.2,
  history_term_count_score=49, history_term_overlap=11,
  history_developer_match_count=0, history_publisher_match_count=0
- D: price=19.99, is_free=0, release_year=2015, popularity_count=6368,
  popularity_rank=18, history_term_minute_score=4.53,
  history_term_count_score=37, history_term_overlap=9,
  history_developer_match_count=0, history_publisher_match_count=0
- E: price=39.99, is_free=0, release_year=2015, popularity_count=4949,
  popularity_rank=37, history_term_minute_score=6.83,
  history_term_count_score=53, history_term_overlap=12,
  history_developer_match_count=0, history_publisher_match_count=0
 
Candidate games:
- A: Unturned | genres: Action, Adventure, Casual, Free to Play |
  tags: Free to Play, Survival, Zombies, Multiplayer, Open World, Adventure |
  price: 0 | release year: 2017
- B: ORION: Prelude | genres: Action, Adventure, Indie, RPG |
  tags: Dinosaurs, Action, FPS, Multiplayer, Online Co-Op, Co-op |
  price: 0.99 | release year: 2013
- C: No More Room in Hell | genres: Action, Free to Play, Indie |
  tags: Free to Play, Zombies, Multiplayer, Survival, Horror, Co-op |
  price: 0 | release year: 2011
- D: Rocket League® | genres: Action, Indie, Racing, Sports |
  tags: Multiplayer, Racing, Soccer, Sports, Competitive, Team-Based |
  price: 19.99 | release year: 2015
- E: Grand Theft Auto V | genres: Action, Adventure |
  tags: Open World, Action, Multiplayer, First-Person, Third Person, Crime |
  price: 39.99 | release year: 2015
 
Answer with only the label.

The observed outcome is E. The fitted choice probabilities for this held-out query are:

EstimatorPrediction
Frozen full-label scoring0.5360.0190.4120.0200.013A
Frozen single-token scoring, five demonstrations0.3710.1350.2910.1340.070A
Adapted Qwen, uncalibrated0.0410.0460.0490.2010.662E
Adapted Qwen plus affine calibration0.0390.0240.0230.1340.780E
Conditional logit0.2060.0980.0440.2040.448E

Appendix C: Reproducibility protocol

The public discrete-choice-finetune repository contains the article source, locked software environment, data-construction and estimation code, processed-data metadata, row-level predictions, and result tables. The folded cells below connect the empirical definitions to executable implementations. Rendering from the deposited results requires no model or external request; reconstructing model outputs requires the raw Steam files, model weights, and GPU resources described in the repository README.

The model and software identities are:

ComponentVersion or identifierReproducibility record
Adapter-training baseQwen/Qwen3.5-4B, Hugging Face snapshot 851bf6e806efd8d0a36b00ddf55e13ccb7b8cd0aPyTorch 2.9.1+cu128; Transformers 5.6.0.dev0; PEFT 0.18.1; bitsandbytes 0.48.2
Local inference baseQwen3.5-4B Q4_K_M GGUFSHA-256 13c16f426047e2de38cd075bdade4a7bcbc8c774384876f677740cda65f8a983
Selected adapter200-update F16 LoRA GGUFSHA-256 eebd309aad26c9f305e28a0324588c6948d6e7e60206152c2b7e2a286e37b82c
Local inference runtimellama.cpp version 1458, commit 720d7fa4097f76e5d0eade5a92c1df87c1faf9d9GNU 13.3.0 Linux x86-64 build
External-model interfaceOpenAI Codex CLI 0.145.0, ephemeral read-only structured-output executionModel identifiers gpt-5.3-codex-spark and gpt-5.5; provider snapshots were not exposed by the interface
Article environmentPython 3.12.11; NumPy 2.4.4; pandas 2.3.3; scikit-learn 1.8.0; Quarto 1.5.57Locked by uv.lock

The deterministic demonstration and external-call settings are:

EstimatorDemonstration observation identifiers and outcomesSelection sampleAdditional setting
Local single-token and adapted Qwen9944 (A), 2952 (B), 14726 (C), 12676 (D), 14087 (E)First 256 rows of the permuted estimation split; shortest within classFive demonstrations
GPT-5.3 Codex SparkNoneZero demonstrations; xhigh; batch size 20
GPT-5.3 Codex Spark6728 (choice_1)First 1,000 rows of the permuted estimation split; first class-balanced matchOne demonstration; xhigh; batch size 20
GPT-5.56728, 13617, 6964, 2927, 4388 (choice_1choice_5)First 1,000 rows of the permuted estimation split; first class-balanced matchesFive demonstrations; medium; batch size 5

The three complete API evaluations were finalized on July 26, 2026. Each batch was submitted through codex exec with a JSON schema restricting outputs to an array of observation identifiers and choice_1choice_5 labels. The fixed instruction identified the task as discrete-choice evaluation, prohibited tools and file or web access, required one prediction for every held-out identifier, and required schema-conforming JSON. Temperature and top- controls were not exposed by this interface. The deposited API table contains observation identifiers, gold labels, parsed predictions, validity indicators, and run settings; raw response payloads are not deposited.

The sequential adapter-model search produced the following validation accuracies:

Selection dimensionFixed componentsCandidate accuraciesSelected value
Initial checkpoint, no demonstrations25 updates: 0.385; 100 updates: 0.440100 updates
Adapter scale100 updates, no demonstrations0.5: 0.395; 1: 0.440; 1.25: 0.470; 1.5: 0.445; 2: 0.420
Demonstrations100 updates, zero: 0.470; five: 0.495five
Final checkpointfive demonstrations, 100 updates: 0.495; 200 updates: 0.500200 updates

For the identity-factor grid, validation ties are resolved by NLL, root-mean-squared probability error, Brier score, macro F1, and macro AUC, in that order; an exact tie then follows ascending rank and penalty. For marginal prior-shift calibration, training-fold accuracy ties are resolved by NLL and then larger . Temperature and affine optimization begin at and zero offsets. The affine implementation uses four unrestricted offset parameters, appends a fifth zero, and centers the five-vector to enforce .

Data construction and split validation

The data procedure constructs disjoint candidate sets, excludes candidate outcomes from the covariates, applies the within-user randomization with seed 42, and verifies labels against the common choice table.

splitobservationsusers
train78454078
validation40784078
test40784078

Classical estimation

The classical procedure fits the pooled position classifier, symmetric conditional logit, and identity-based low-rank logit on the 4,000-observation estimation sample. It records feature definitions, validation grids, selected penalties or rank, and row-level validation and test probabilities.

modelaccuracymacro_f1log_loss
pooled position classifier0.4160.4171.450
symmetric conditional logit0.4610.4611.335
identity-based low-rank logit0.2870.2862.942

Frozen full-label scoring

The scoring procedure branches after the common query, sums the autoregressive log likelihood of every complete response suffix, and applies the five-way choice softmax.

estimatortest_accuracytest_macro_f1test_log_losstest_brier
complete finite-label likelihood0.2860.2821.8390.878

In-context conditioning

Five short, class-balanced estimation cases are serialized as alternating user and assistant turns. The response grammar permits only the one-token verbalizers A–E; classification uses the returned token probabilities, not the sampled token.

estimatortest_accuracytest_macro_f1test_log_losstest_brier
five-example one-token likelihood0.2860.2731.8300.884

QLoRA estimation and scoring

The adaptive rank-16 optimization produces checkpoints after 25, 100, and 200 updates. The 200-update adapter is applied at validation-selected scale 1.25 and evaluated with the same five demonstrations and single-token probability rule.

estimatortest_accuracytest_macro_f1test_log_losstest_brier
rank-16 adapter plus five examples0.4620.4601.3810.689

Probability calibration

No network parameter is updated here. For each estimator, validation probabilities and labels fit temperature, prior-shift, and affine transformations. Five-fold out-of-fold validation metrics select the reported transformation; the selected map is then refitted on all validation observations and applied once to test probabilities.

estimatortest_accuracytest_macro_f1test_log_losstest_brier
rank-16 adapter plus five examples and affine calibration0.4800.4801.3450.673

Activation-steering diagnostic

The steering procedure estimates a global contrast direction from 1,000 observations in the permuted estimation split at transformer block 24 and applies it at every token position. The 200-observation validation subsample compares scales , , and ; the test sample is not scored.

estimatorvalidation_accuracyvalidation_log_loss
unsteered complete finite-label likelihood0.3201.937
global layer 24 all-token scale -20.3251.889
global layer 24 all-token scale -40.3251.853
global layer 24 all-token scale -80.3201.812

Numerical verification

The final cell checks the principal numerical claims against the deposited result tables, paired comparisons, quantization summary, and API decision tables. It performs no model fitting or external request.

All numerical consistency checks passed.

Vocabulary Translation Guide

The two vocabularies used in the paper translate as follows.

Language-model termChoice-model meaning in this paper
Serialized query or prompt Covariates represented as text
Token logitsUnnormalized scores for vocabulary items
Vocabulary softmaxLM output layer; not the choice model
Choice softmax over Analyst-imposed finite-set conditioning
Verbalizer AEEconomically meaningless encoding of displayed position
In-context example or shotLabeled conditioning information; no persistent estimate
LoRA or fine-tuningEstimation of a restricted parameter update
Calibration offsetAlternative-specific constant for the label-position interface
TemperatureCommon inverse scale on the logged probability index
Chat templateDeterministic control tokens and role formatting around serialized covariates
CheckpointAdapter parameters after a stated number of optimizer updates
NF4Four-bit representation of frozen weights used during adapter training
Q4_K_MGroupwise four-bit representation of base weights used for local inference
BF16Sixteen-bit floating-point representation used for a quantization check
GGUFFile format used by the local inference runtime for weights and adapters
Grammar constraintDecoding rule restricting the next token to five admissible labels
API reasoning settingProvider-controlled inference-compute setting, not a fitted task parameter
High confidenceA peaked fitted vector, not evidence that the prediction is correct

Data and code availability

Article source, the locked Python environment, data-construction and estimation code, and versioned result tables are available in the public discrete-choice-finetune repository. The deposited results include processed-data metadata; row-level probabilities for the three classical estimators and the calibrated Qwen specification; paired comparisons; the BF16/Q4 summary; and 3,000 parsed API decisions with observation identifiers, gold labels, validity indicators, and run settings.

The raw Steam ownership, review, and product files are not redistributed and must be obtained from their original source (Pathak, Gupta, and McAuley 2017). Base-model weights, the trained adapter, the activation-steering vector, intermediate probability tables, and raw API response payloads are not included because of size, licensing, or provider constraints. The deposited tables permit reconstruction of the reported figures, metrics, and paired comparisons, but end-to-end regeneration of model outputs requires separately acquiring the raw data and base model and re-estimating the adapter. Exact commands, expected paths, hardware requirements, and file inventories are documented in the repository README.

References

  • Bao, Keqin, Jizhi Zhang, Yang Zhang, Wenjie Wang, Fuli Feng, and Xiangnan He. 2023. “TALLRec: An Effective and Efficient Tuning Framework to Align Large Language Model with Recommendation.” arXiv Preprint arXiv:2305.00447. https://doi.org/10.48550/arXiv.2305.00447.
  • Compiani, Giovanni, Ilya Morozov, and Stephan Seiler. 2026. “Demand Estimation with Text and Image Data.” The RAND Journal of Economics. https://doi.org/10.1111/1756-2171.70052.
  • Dettmers, Tim, Artidoro Pagnoni, Ari Holtzman, and Luke Zettlemoyer. 2023. “QLoRA: Efficient Finetuning of Quantized LLMs.” Advances in Neural Information Processing Systems 36. https://doi.org/10.48550/arXiv.2305.14314.
  • Guo, Chuan, Geoff Pleiss, Yu Sun, and Kilian Q. Weinberger. 2017. “On Calibration of Modern Neural Networks.” In Proceedings of the 34th International Conference on Machine Learning, 70:1321–30. Proceedings of Machine Learning Research. PMLR. https://proceedings.mlr.press/v70/guo17a.html.
  • Han, Yafei, Francisco C. Pereira, Moshe Ben-Akiva, and Christopher Zegras. 2022. “A Neural-Embedded Discrete Choice Model: Learning Taste Representation with Strengthened Interpretability.” Transportation Research Part B: Methodological 163: 166–86. https://doi.org/10.1016/j.trb.2022.07.001.
  • Holtzman, Ari, Peter West, Vered Shwartz, Yejin Choi, and Luke Zettlemoyer. 2021. “Surface Form Competition: Why the Highest Probability Answer Isn’t Always Right.” In Proceedings of the 2021 Conference on Empirical Methods in Natural Language Processing, 7038–51. Association for Computational Linguistics. https://doi.org/10.18653/v1/2021.emnlp-main.564.
  • Horton, John J., Apostolos Filippas, and Benjamin S. Manning. 2023. “Large Language Models as Simulated Economic Agents: What Can We Learn from Homo Silicus?” Working Paper 31122. National Bureau of Economic Research. https://doi.org/10.3386/w31122.
  • Hu, Edward J., Yelong Shen, Phillip Wallis, Zeyuan Allen-Zhu, Yuanzhi Li, Shean Wang, Lu Wang, and Weizhu Chen. 2021. “LoRA: Low-Rank Adaptation of Large Language Models.” arXiv Preprint arXiv:2106.09685. https://doi.org/10.48550/arXiv.2106.09685.
  • Kallus, Nathan, and Madeleine Udell. 2016. “Revealed Preference at Scale: Learning Personalized Preferences from Assortment Choices.” In Proceedings of the 2016 ACM Conference on Economics and Computation, 821–37. Association for Computing Machinery. https://doi.org/10.1145/2940716.2940794.
  • McFadden, Daniel. 1974. “Conditional Logit Analysis of Qualitative Choice Behavior.” In Frontiers in Econometrics, edited by Paul Zarembka, 105–42. Academic Press. https://escholarship.org/uc/item/0p99072q.
  • Min, Sewon, Xinxi Lyu, Ari Holtzman, Mikel Artetxe, Mike Lewis, Hannaneh Hajishirzi, and Luke Zettlemoyer. 2022. “Rethinking the Role of Demonstrations: What Makes in-Context Learning Work?” In Proceedings of the 2022 Conference on Empirical Methods in Natural Language Processing, 11048–64. Association for Computational Linguistics. https://doi.org/10.18653/v1/2022.emnlp-main.759.
  • Pathak, Apurva, Kshitiz Gupta, and Julian McAuley. 2017. “Generating and Personalizing Bundle Recommendations on Steam.” In Proceedings of the 40th International ACM SIGIR Conference on Research and Development in Information Retrieval, 1073–76. https://doi.org/10.1145/3077136.3080724.
  • Sifringer, Brian, Virginie Lurkin, and Alexandre Alahi. 2020. “Enhancing Discrete Choice Models with Representation Learning.” Transportation Research Part B: Methodological 140: 236–61. https://doi.org/10.1016/j.trb.2020.08.006.
  • Train, Kenneth E. 2009. Discrete Choice Methods with Simulation. 2nd ed. Cambridge University Press. https://eml.berkeley.edu/books/choice2.html.
  • Turner, Alexander Matt, Lisa Thiergart, Gavin Leech, David Udell, Juan J. Vazquez, Ulisse Mini, and Monte MacDiarmid. 2024. “Steering Language Models with Activation Engineering.” arXiv Preprint arXiv:2308.10248. https://doi.org/10.48550/arXiv.2308.10248.
  • van Cranenburgh, Sander, Shenhao Wang, Akshay Vij, Francisco Pereira, and Joan Walker. 2022. “Choice Modelling in the Age of Machine Learning: Discussion Paper.” Journal of Choice Modelling 42: 100340. https://doi.org/10.1016/j.jocm.2021.100340.
  • Zhao, Zihao, Eric Wallace, Shi Feng, Dan Klein, and Sameer Singh. 2021. “Calibrate Before Use: Improving Few-Shot Performance of Language Models.” In Proceedings of the 38th International Conference on Machine Learning, 139:12697–706. Proceedings of Machine Learning Research. PMLR. https://proceedings.mlr.press/v139/zhao21c.html.