You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
154 lines
7.4 KiB
154 lines
7.4 KiB
---
|
|
title: "SVD Axis Overtone Shift Analysis: Deep Dive"
|
|
date: 2026-04-05
|
|
module: analysis
|
|
problem_type: research
|
|
component: motion-analysis
|
|
tags: [svd, overtone-shift, semantic-drift, time-series, parliamentary-analysis]
|
|
---
|
|
|
|
# SVD Axis Overtone Shift: Deep Dive Analysis
|
|
|
|
## Executive Summary
|
|
|
|
This analysis explores the relationship between **axis stability** (structural consistency of SVD components over time) and **overtone shift** (semantic drift of motion content within those stable axes). The key finding is that these are **independent phenomena**: axes can be structurally stable (same parties voting similarly) while their semantic content drifts dramatically.
|
|
|
|
## Key Finding: Stability vs. Semantic Content are Independent
|
|
|
|
| Phenomenon | What it Measures | Typical Value | Interpretation |
|
|
|------------|-----------------|---------------|----------------|
|
|
| **Axis Stability** | Consistency of which motions load on an axis | 0.70-0.83 | Structural alignment of semantic signatures |
|
|
| **Overtone Shift** | How motion content evolves over time | 1.30-1.97 | Semantic drift within stable structure |
|
|
|
|
### Why This Matters
|
|
|
|
A stable axis (e.g., "Rechts kabinetsbeleid versus links oppositiebeleid") means:
|
|
- The same coalition/opposition voting pattern persists across years
|
|
- Parties maintain consistent relative positions
|
|
|
|
But high overtone shift means:
|
|
- The specific topics that define "coalition" vs "opposition" change substantially
|
|
- Motions discussed in 2026 are semantically different from 2016 even though they occupy the same axis position
|
|
|
|
## Detailed Findings
|
|
|
|
### Axis Stability Results (Lasso Regression, alpha=0.1)
|
|
|
|
| Axis | Avg Stability | Classification | Interpretation |
|
|
|------|---------------|---------------|----------------|
|
|
| 1 | 0.83 | Stable | Coalition vs opposition voting pattern is consistent |
|
|
| 2 | 0.75 | Stable | PVV/FVD populist positioning vs mainstream |
|
|
| 3 | 0.78 | Stable | Welfare state vs market liberalisation |
|
|
| 4 | 0.72 | Stable | NSC/BBB vs D66/CDA/JA21 |
|
|
| 5 | 0.70 | Stable | Christian-social vs progressive-individual |
|
|
| 6 | 0.35 | **Reordered** | Migration/culture axis most volatile |
|
|
| 7 | 0.77 | Stable | Administrative pragmatism |
|
|
| 8 | 0.79 | Stable | Healthcare/education/regional housing |
|
|
| 9 | 0.76 | Stable | System reform vs practical governance |
|
|
| 10 | 0.74 | Stable | Regulation vs deregulation |
|
|
|
|
### Overtone Shift Results
|
|
|
|
| Axis | Avg Shift | Max Shift | Inflection Points |
|
|
|------|-----------|-----------|-------------------|
|
|
| 1 | 1.47 | 1.97 | 0 |
|
|
| 2 | 1.42 | 1.79 | 0 |
|
|
| 3 | 1.38 | 1.83 | 0 |
|
|
| 4 | 1.39 | 1.89 | 0 |
|
|
| 5 | 1.43 | 1.93 | 0 |
|
|
| 7 | 1.31 | 1.84 | 0 |
|
|
| 8 | 1.30 | 1.89 | 0 |
|
|
| 9 | 1.38 | 1.93 | 0 |
|
|
| 10 | 1.30 | 1.72 | 0 |
|
|
|
|
**Critical observation**: ALL stable axes show high overtone shift (1.3-1.97), with no inflection points detected. This indicates **gradual, continuous semantic drift** rather than sudden shifts.
|
|
|
|
## Interpretation Framework
|
|
|
|
### The "Axis Stability" Metric
|
|
|
|
Axis stability uses **Lasso regression** to learn the semantic signature of each axis:
|
|
```
|
|
SVD_score ~ fused_embedding
|
|
```
|
|
|
|
The learned weight vector (2610 dimensions) represents which embedding dimensions are most predictive of an axis score. Stability is measured by comparing these weight vectors across windows using:
|
|
- **Cosine similarity** of full weight vectors
|
|
- **Jaccard similarity** of top-100 weighted dimensions
|
|
|
|
Why Lasso (alpha=0.1)? The L1 regularization produces sparse weight vectors, concentrating on the most important semantic dimensions. This makes cross-window comparison more robust than dense Ridge regression.
|
|
|
|
### The "Overtone Shift" Metric
|
|
|
|
Overtone shift computes **semantic gravity** — the weighted mean fused embedding of all motions on an axis:
|
|
|
|
```
|
|
gravity = weighted_mean(fused_embeddings, weights=abs(SVD_scores))
|
|
```
|
|
|
|
The cosine distance between gravity vectors of consecutive windows measures how the "center of mass" of motion content moves. High shift values (1.3-1.9) indicate the motion topics that define each axis change substantially over time.
|
|
|
|
## Implications for Interpretation
|
|
|
|
### For Users of the Stemwijzer
|
|
|
|
1. **Axis labels are temporally bounded** — The label "Rechts kabinetsbeleid versus links oppositiebeleid" accurately describes the 2016-2026 period, but the specific motions that exemplify this axis have changed.
|
|
|
|
2. **Cross-temporal comparison is valid structurally but not semantically** — Party positions along Axis 1 are comparable across years (stable structure), but the meaning of extreme positions has shifted (high overtone).
|
|
|
|
3. **Axis 6 (Migration/Culture)** is an exception — Low stability (0.35) suggests this axis may have fundamentally changed meaning or composition over the period.
|
|
|
|
### For Analysts Studying Parliamentary Evolution
|
|
|
|
1. **Coalition/opposition as a dimension is remarkably stable** — Despite changes in coalition composition (Rutte III, Rutte IV, Schoof), the first axis consistently captures this dynamic.
|
|
|
|
2. **Policy content evolves within stable voting patterns** — What constitutes "coalition policy" in 2026 differs semantically from 2016, even if the voting alignment remains.
|
|
|
|
3. **The 2022-2023 period may be significant** — Gap in windows (2020-2021) coincides with COVID and government crises, potentially affecting overtone patterns.
|
|
|
|
## Methodological Notes
|
|
|
|
### Why Lasso (alpha=0.1)?
|
|
|
|
Three alternatives were evaluated and rejected:
|
|
|
|
| Approach | Problem |
|
|
|----------|---------|
|
|
| Jaccard similarity of top-N motion IDs | Motions are unique per window — 0% overlap |
|
|
| Cosine similarity of embedding centroids | Near-zero similarity due to varying embedding dimensions |
|
|
| Ridge regression weights | Dense weights less interpretable; Lasso concentrates signal |
|
|
|
|
Lasso (alpha=0.1) was chosen for:
|
|
- **Interpretability**: Sparse weights identify key semantic dimensions
|
|
- **Robustness**: Top-K dimension matching captures structural similarity
|
|
- **Stability**: Results are less sensitive to embedding dimension changes
|
|
|
|
### Dimension Alignment Challenge
|
|
|
|
Fused embeddings have varying dimensions across windows (typically 768-2610). All comparisons use **minimum common dimension** alignment to ensure valid cosine similarity computation.
|
|
|
|
### Inflection Point Detection
|
|
|
|
Inflection points are defined as shift/drift rates exceeding 2× median rate. The absence of detected inflection points suggests **gradual, continuous drift** rather than sudden semantic shifts — consistent with how policy debates evolve incrementally.
|
|
|
|
## Recommendations
|
|
|
|
### For Stemwijzer Maintenance
|
|
|
|
1. **Re-run overtone analysis after SVD recomputation** — Current themes may drift further from the underlying data
|
|
2. **Monitor Axis 6 specifically** — Low stability warrants closer attention during axis updates
|
|
3. **Consider temporal weighting in visualizations** — Recent windows may better represent current semantics
|
|
|
|
### For Future Research
|
|
|
|
1. **Correlate overtone shift with political events** — External factors (elections, crises) may explain inflection patterns
|
|
2. **Analyze dimension-level drift patterns** — Which specific embedding dimensions drive the shift?
|
|
3. **Extend to party-level analysis** — Do individual parties show consistent voting semantics over time?
|
|
|
|
## Related Files
|
|
|
|
- `scripts/motion_drift.py` — Analysis script
|
|
- `reports/drift/report.md` — Generated report
|
|
- `reports/drift/axis_stability.png` — Stability heatmaps
|
|
- `reports/drift/semantic_drift.png` — Drift timelines
|
|
- `reports/drift/party_trajectories.png` — Party position plots
|
|
|