# Multi-Armed Bandit

URL: https://docs.ablyft.com/de/guides/audiences-and-delivery/multi-armed-bandit/

> Lass ABlyft den Traffic automatisch zu den Variations verschieben, die beim Primary Goal am besten abschneiden.



Standardmäßig legst du den Traffic-Anteil jeder Variation selbst fest, und der Split bleibt gleich, bis du ihn änderst.
Mit dem **Multi-Armed Bandit** passt ABlyft den Split automatisch an: Variations, die beim
[Primary Goal](https://docs.ablyft.com/de/guides/goals-and-measurement/configure-goals/#primary-and-secondary-goals) des Experiments besser
abschneiden, erhalten mehr Traffic, und jede Variation bekommt trotzdem genug Traffic, um weiter dazuzulernen.

Nutze ihn, wenn du **schon während des Experiments möglichst viele Conversions oder möglichst viel Revenue erzielen**
möchtest. Geht es dir vor allem um einen sauberen Vergleich mit gleich großen Gruppen, bleib beim manuellen Split.

* Er optimiert das vorhandene Primary Goal des Experiments. Du musst nichts weiter einrichten.
* Er arbeitet mit einer bayesschen Methode (Thompson Sampling). Eine Variation, deren Ergebnis noch unsicher ist,
  bekommt weiterhin genug Traffic, um bewertet zu werden.
* **Visitors behalten die Variation, der sie zugeteilt wurden.** Ein neuer Split betrifft nur Visitors, die zum ersten
  Mal per Bucketing zugeteilt werden.
* Er ändert nicht, wie die Results berechnet werden. Deine [Statistical Methods](https://docs.ablyft.com/de/guides/results/statistics-methods/)
  (Frequentist oder Bayesian) bleiben, wie du sie eingestellt hast.

## Distribution Modes

| Mode                   | Beschreibung                                                                                                                                             |
| ---------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Manual** (Standard)  | Du legst den Traffic-Anteil jeder Variation fest, siehe [Traffic Allocation](https://docs.ablyft.com/de/guides/audiences-and-delivery/traffic-allocation/#split-per-variation). |
| **Multi-Armed Bandit** | ABlyft berechnet den Traffic-Anteil jeder Variation automatisch.                                                                                         |

Jedes Experiment nutzt **Manual**, bis du den Multi-Armed Bandit aktivierst.

## Den Multi-Armed Bandit aktivieren

1. Öffne das Experiment.
2. Klicke oben auf das Zahnrad-Symbol (**Edit settings**).
3. Klicke im Bereich **Traffic Split & Distribution** auf **Enable Multi-Armed Bandit**.
4. Bestätige das Fenster **Enable Multi-Armed Bandit?** („Traffic allocation will be automatically optimized based on
   your Primary Metric. Variations with 0% traffic will not take part. Existing visitors will remain assigned to their
   current variations. Only new visitors will be affected by allocation changes.“).

Voraussetzungen:

* Mindestens **zwei Variations mit mehr als 0 % Traffic**. Sonst ist der Button deaktiviert, mit dem Tooltip „At least
  two variations with traffic are required.“
* Ein **Primary Goal**, also das erste Goal des Experiments. Ohne es lässt ABlyft den Split unverändert.

Was beim Aktivieren passiert:

* Alle Variations mit **mehr als 0 % Traffic** nehmen teil.
* **Variations mit 0 % Traffic bleiben außen vor** und behalten 0 %. Um sie später einzubeziehen, wechsle zurück zu
  Manual, gib ihnen Traffic und aktiviere den Bandit erneut.
* Der Traffic wird sofort **gleichmäßig** auf die teilnehmenden Variations verteilt, zum Beispiel 34 / 33 / 33 % bei
  drei Variations. Den Rest erhält die Baseline.
* Die [Lernphase](#learning) beginnt.

Du kannst den Bandit in jedem Status aktivieren, auch während das Experiment läuft. Optimiert wird der Split nur,
solange das Experiment **Running** ist.

## Lernphase

Bevor ABlyft etwas optimiert, sammelt es mit dem gleichmäßigen Split erste Daten. Die Lernphase endet, wenn **beide**
Voraussetzungen erfüllt sind:

| Voraussetzung                                                                   | Wert                  |
| ------------------------------------------------------------------------------- | --------------------- |
| Laufzeit seit dem Aktivieren des Bandits (oder seit dem Neustart der Lernphase) | Mindestens 24 Stunden |
| Visitors pro teilnehmender Variation in dieser Zeit                             | Mindestens 100        |

Visitors werden in ganzen Tagen gezählt, also zählen alle Visitors ab dem Tag, an dem die Lernphase begonnen hat. Diese
Schwellen sind fest und unabhängig von den Decision Rules deines Projects oder Experiments. Du musst nichts tun: Die
Optimierung startet automatisch, sobald beide Voraussetzungen erfüllt sind.

## Optimierung

Nach der Lernphase berechnet ABlyft den Split **alle 15 Minuten** neu, solange das Experiment läuft.

* Variations, die beim Primary Goal mit höherer Wahrscheinlichkeit die beste sind, erhalten mehr Traffic. Ein hohes, aber
  noch unsicheres Ergebnis bekommt nicht automatisch den Großteil des Traffics.
* **Jede teilnehmende Variation behält mindestens 5 %** des Traffics, damit der Bandit weiter erkundet.
* Die Anteile sind ganze Zahlen und ergeben immer genau **100 %**.
* Der Split wird nur geändert, wenn sich ein Anteil um mindestens **2 Prozentpunkte** verschiebt. So entstehen keine
  ständigen kleinen Änderungen.
* Jede Änderung wird automatisch veröffentlicht.
* Ist keine Berechnung möglich, zum Beispiel weil das Experiment kein Primary Goal hat, bleibt der letzte Split
  bestehen. Der nächste Durchlauf versucht es erneut.

Das Primary Goal kann eines davon sein:

| Primary Goal                                                                                     | Was der Bandit vergleicht                                                                                                         |
| ------------------------------------------------------------------------------------------------ | --------------------------------------------------------------------------------------------------------------------------------- |
| Goal mit [Counting Method](https://docs.ablyft.com/de/guides/goals-and-measurement/goal-types/#counting-method) **One** | Conversion Rate pro Visitor                                                                                                       |
| Goal mit Counting Method **Every**                                                               | Conversions pro Visitor (kann über 1 liegen)                                                                                      |
| Revenue-Goal                                                                                     | Durchschnittlicher Wert pro Visitor, mit dem [Value Filter](https://docs.ablyft.com/de/guides/goals-and-measurement/goal-types/#value-filters) des Goals |

Die [Winning Direction](https://docs.ablyft.com/de/guides/goals-and-measurement/goal-types/#winning-direction) des Goals wird berücksichtigt:
Bei **Decrease** wird die Variation mit dem niedrigsten Wert bevorzugt.

## Status

Solange der Bandit aktiv ist, zeigt ABlyft seinen Status an zwei Stellen:

* In den Experiment-Einstellungen, Bereich **Traffic Split & Distribution**: ein Badge **Multi-Armed Bandit — Learning**
  mit dem Hinweis „The system is collecting initial observations before optimizing traffic allocation.“ oder
  **Multi-Armed Bandit — Optimizing** mit dem Zeitpunkt der letzten Änderung, zum Beispiel „Last optimized: 12 minutes
  ago“.
* In der **Status**-Karte der Experiment-Übersicht: ein Badge **Multi-Armed Bandit · Learning** oder
  **Multi-Armed Bandit · Optimizing**. Fahre mit der Maus darüber, um den Zeitpunkt der letzten Optimierung zu sehen.

| Status         | Bedeutung                                                         |
| -------------- | ----------------------------------------------------------------- |
| **Learning**   | ABlyft sammelt erste Daten. Der Traffic ist gleichmäßig verteilt. |
| **Optimizing** | ABlyft passt den Split alle 15 Minuten an.                        |

Die **Traffic**-Felder der Variations sind schreibgeschützt, solange der Bandit aktiv ist. Der Slider **Overall traffic
allocation (%)** bleibt bearbeitbar: Er entscheidet weiterhin, wie viele berechtigte Visitors am Experiment teilnehmen.

## Änderungen bei aktivem Bandit

Manche Änderungen machen die bisherigen Daten unvergleichbar. ABlyft setzt den Traffic dann auf einen gleichmäßigen Split
über die teilnehmenden Variations zurück und **startet die Lernphase neu**. Die Optimierung läuft automatisch weiter,
sobald die [Voraussetzungen der Lernphase](#learning) wieder erfüllt sind.

| Änderung                                                               | Auswirkung                                                             |
| ---------------------------------------------------------------------- | ---------------------------------------------------------------------- |
| Du **fügst** eine Variation **hinzu**                                  | Die neue Variation nimmt teil. Die Lernphase startet neu.              |
| Du **löschst** eine Variation                                          | Die Variation wird aus dem Bandit entfernt. Die Lernphase startet neu. |
| Du **änderst das Primary Goal** (ein anderes Goal an die erste Stelle) | Die Lernphase startet neu.                                             |

Setzt du die Results des Experiments zurück, nutzt der Bandit nur Daten, die nach dem Zurücksetzen gesammelt wurden. In
allen Fällen behalten Visitors die Variation, der sie zugeteilt wurden.

## Den Multi-Armed Bandit deaktivieren

1. Öffne die Experiment-Einstellungen (Zahnrad-Symbol, **Edit settings**).
2. Klicke in **Traffic Split & Distribution** auf **Disable Multi-Armed Bandit**.
3. Bestätige das Fenster **Disable Multi-Armed Bandit?** („Automatic traffic optimization will stop. The current traffic
   allocation will be preserved and can be adjusted manually.“).

Der letzte Split **bleibt erhalten**; er wird nicht auf gleiche Anteile zurückgesetzt. Die **Traffic**-Felder sind
wieder bearbeitbar. Aktivierst du den Bandit später erneut, beginnt eine neue Lernphase.

## Gut zu wissen

### Wechseln Visitors die Variation, wenn sich der Split ändert?

Nein. Die Variation eines Visitors wird einmal zugeteilt und im Browser gespeichert. Ein neuer Split betrifft nur
Visitors, die neu ins Experiment kommen.

### Ändert der Bandit die Statistics?

Nein. Die Statistical Method und die Decision Rules bleiben, wie sie eingestellt sind. Bedenke, dass Variations mit
kleinerem Anteil langsamer Daten sammeln und daher länger für ein klares Ergebnis brauchen können.

### Warum gibt es keine SRM-Warnung?

Der [SRM check](https://docs.ablyft.com/de/guides/results/interpret-results/#check-the-traffic-split-srm) vergleicht die Participants mit dem
geplanten Split. Sobald der Bandit den Split geändert hat, ist dieser Vergleich nicht mehr aussagekräftig. ABlyft zeigt
den SRM check deshalb für Experiments nicht an, deren Traffic vom Bandit optimiert wurde, auch nachdem du zurück zu
Manual gewechselt hast.

### Kann ich den Traffic einer Variation über die API ändern?

Nicht, solange der Bandit aktiv ist. Eine Änderung von `traffic_allocation` einer Variation über die
[REST API](https://docs.ablyft.com/de/developers/reference/rest-api/) schlägt mit einem `422`-Validierungsfehler fehl, und der
[MCP-Server](https://docs.ablyft.com/de/developers/reference/mcp-server/) gibt einen Fehler zurück. Deaktiviere zuerst den Bandit.

### Was passiert, wenn ich das Experiment klone?

Der [Klon](https://docs.ablyft.com/de/guides/experiments/clone-and-archive/) startet immer mit dem Distribution Mode **Manual**.

### Warum hat sich der Split länger nicht geändert?

* Das Experiment ist noch in der [Lernphase](#learning).
* Das Experiment ist nicht **Running**.
* Kein Anteil würde sich um mindestens 2 Prozentpunkte ändern.
* Das Experiment hat kein Primary Goal.

### Kann ich die Schwellen ändern?

Nein. Die 24 Stunden, 100 Visitors pro Variation und das Minimum von 5 % pro Variation sind fest.

## Nächste Schritte

- [Traffic Allocation](https://docs.ablyft.com/de/guides/audiences-and-delivery/traffic-allocation/): Overall Allocation und manuellen Split festlegen.
- [Goals konfigurieren](https://docs.ablyft.com/de/guides/goals-and-measurement/configure-goals/): Das Primary Goal wählen, das der Bandit optimiert.
- [Results interpretieren](https://docs.ablyft.com/de/guides/results/interpret-results/): Results richtig lesen.

