<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="de">
	<id>https://wiki-de.moshellshocker.dns64.de/index.php?action=history&amp;feed=atom&amp;title=CART_%28Algorithmus%29</id>
	<title>CART (Algorithmus) - Versionsgeschichte</title>
	<link rel="self" type="application/atom+xml" href="https://wiki-de.moshellshocker.dns64.de/index.php?action=history&amp;feed=atom&amp;title=CART_%28Algorithmus%29"/>
	<link rel="alternate" type="text/html" href="https://wiki-de.moshellshocker.dns64.de/index.php?title=CART_(Algorithmus)&amp;action=history"/>
	<updated>2026-05-27T18:51:53Z</updated>
	<subtitle>Versionsgeschichte dieser Seite in Wikipedia (Deutsch) – Lokale Kopie</subtitle>
	<generator>MediaWiki 1.43.8</generator>
	<entry>
		<id>https://wiki-de.moshellshocker.dns64.de/index.php?title=CART_(Algorithmus)&amp;diff=67903&amp;oldid=prev</id>
		<title>imported&gt;Lukania31: /* growthexperiments-addlink-summary-summary:2|0|0 */</title>
		<link rel="alternate" type="text/html" href="https://wiki-de.moshellshocker.dns64.de/index.php?title=CART_(Algorithmus)&amp;diff=67903&amp;oldid=prev"/>
		<updated>2025-05-17T18:42:54Z</updated>

		<summary type="html">&lt;p&gt;&lt;span class=&quot;autocomment&quot;&gt;growthexperiments-addlink-summary-summary:2|0|0&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Neue Seite&lt;/b&gt;&lt;/p&gt;&lt;div&gt;&amp;#039;&amp;#039;&amp;#039;CART&amp;#039;&amp;#039;&amp;#039; (&amp;#039;&amp;#039;&amp;#039;&amp;#039;&amp;#039;C&amp;#039;&amp;#039;&amp;#039;lassification &amp;#039;&amp;#039;&amp;#039;a&amp;#039;&amp;#039;&amp;#039;nd &amp;#039;&amp;#039;&amp;#039;R&amp;#039;&amp;#039;&amp;#039;egression &amp;#039;&amp;#039;&amp;#039;T&amp;#039;&amp;#039;&amp;#039;rees&amp;#039;&amp;#039;) ist ein [[Algorithmus]], der zur [[Entscheidung]]sfindung dient. Er wird bei [[Entscheidungsbaum|Entscheidungsbäumen]] eingesetzt.&lt;br /&gt;
&lt;br /&gt;
Der CART-Algorithmus wurde erstmals 1984 von [[Leo Breiman]] et al. publiziert.&amp;lt;ref&amp;gt;L. Breiman, J. H. Friedman, R. A. Olshen, C. J. Stone: &amp;#039;&amp;#039;CART: Classification and Regression Trees&amp;#039;&amp;#039;. Wadsworth: Belmont, CA, 1984.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Allgemeines ==&lt;br /&gt;
Ein bedeutendes Merkmal des CART-Algorithmus ist, dass nur [[Binärbaum|Binärbäume]] erzeugt werden können, das heißt, dass an jeder Verzweigung immer genau zwei Äste vorhanden sind. Das zentrale Element dieses Algorithmus ist also das Finden einer optimalen binären Trennung.&lt;br /&gt;
&lt;br /&gt;
Beim CART-Algorithmus wird die Attributsauswahl durch die Maximierung des Informationsgehalts gesteuert. CARTs zeichnen sich dadurch aus, dass sie die Daten in Bezug auf die [[Klassifikation]] optimal trennen. Dies wird mit einem Schwellwert erreicht, der zu jedem Attribut gesucht wird. Der Informationsgehalt eines Attributes wird als hoch erachtet, wenn durch die Auswertung der sich aus der Teilung über die Schwellwerte ergebenden Attributausprägungen mit einer hohen Trefferquote eine Klassifikation vorgenommen werden kann.&lt;br /&gt;
Bei den Entscheidungsbäumen, welche durch den CART-Algorithmus berechnet werden, gilt: Je höher der Informationsgehalt eines Attributs in Bezug auf die Zielgröße, desto weiter oben im Baum findet sich dieses Attribut.&lt;br /&gt;
&lt;br /&gt;
Die Entscheidungsschwellwerte ergeben sich jeweils durch die Optimierung der [[Entropie (Informationstheorie)|Spaltenentropie]]. Die Gesamtentropien der Attribute ergeben sich durch ein gewichtetes Mittel aus den Spaltenentropien.&lt;br /&gt;
&lt;br /&gt;
== Mathematische Beschreibung ==&lt;br /&gt;
Sei &amp;lt;math&amp;gt; \mathcal{D} = \{(x^{(i)}, y_i )\}_{i=1}^m&amp;lt;/math&amp;gt; die Menge der Trainingsdaten mit Eingabevariablen &amp;lt;math&amp;gt;x^{(i)} = (x_1^{(i)}, \dots, x_n^{(i)}) \in \mathcal{X}&amp;lt;/math&amp;gt; und Ausgabewerten &amp;lt;math&amp;gt; y \in \mathcal{Y} &amp;lt;/math&amp;gt;. Ein Entscheidungsbaum &amp;lt;math&amp;gt;T&amp;lt;/math&amp;gt; ist formal darstellbar mittels einer Funktion &amp;lt;math&amp;gt;f_T:\mathcal{X} \rightarrow \mathcal{Y}&amp;lt;/math&amp;gt;, die jeder Eingabe eine Vorhersage des Ausgabewertes zuordnet. Der CART Algorithmus zur Erzeugung eines solchen Baumes findet selbständig die Verzweigungen ([[Knoten (Graphentheorie)|Knoten]]) und assoziierten Regeln zur Trennung der Daten (enS &amp;#039;&amp;#039;split rule&amp;#039;&amp;#039;), mit denen diese Zuordnung möglichst optimal wird.&lt;br /&gt;
&lt;br /&gt;
=== Regression ===&lt;br /&gt;
Sei zunächst &amp;lt;math&amp;gt; \mathcal{Y} \subseteq \mathbb{R} &amp;lt;/math&amp;gt;, d.&amp;amp;nbsp;h. die Ausgabe ist ein [[Quantität|quantitatives]] Merkmal und der zu konstruierende Baum soll ein [[Regressionsanalyse|Regressionsproblem]] lösen. Um einen optimalen Baum zu finden, muss erst einmal ein Trainingskriterium ([[Fehlerfunktion]]) definiert werden. Typischerweise wird dafür die [[Mittlere quadratische Abweichung]] genutzt:&lt;br /&gt;
&lt;br /&gt;
: &amp;lt;math&amp;gt;E(T, \mathcal{D})=\frac{1}{m} \sum_{i=1}^m (f_T(x^{(i)}) - y_i)^2&amp;lt;/math&amp;gt;,&lt;br /&gt;
&lt;br /&gt;
welche dann minimiert wird. Die Fehlerfunktion ist allerdings generell frei wählbar.&lt;br /&gt;
&lt;br /&gt;
Jedem [[Blätter und innere Knoten in der Graphentheorie|Blatt]] &amp;lt;math&amp;gt;l&amp;lt;/math&amp;gt; wird eine Menge &amp;lt;math&amp;gt;R_l&amp;lt;/math&amp;gt; zugeordnet, sodass für alle &amp;lt;math&amp;gt;L&amp;lt;/math&amp;gt; Blätter die zugeordneten [[disjunkt]]en Mengen eine [[Partition (Mengenlehre)|Partition]] von &amp;lt;math&amp;gt;D&amp;lt;/math&amp;gt; bilden. Man sucht nun einen Schätzwert, der für alle &amp;lt;math&amp;gt;x^{(i)} \in R_l&amp;lt;/math&amp;gt; möglichst nahe an den wahren Werten &amp;lt;math&amp;gt;\{ y_i \;|\; x^{(i)} \in R_l \}&amp;lt;/math&amp;gt; liegt. Der Schätzer&lt;br /&gt;
&lt;br /&gt;
: &amp;lt;math&amp;gt;f_T(x^{(i)} \in R_l) = \textrm{mean}(y_i \;|\;x^{(i)} \in R_l) =: \hat c_l&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
liefert dafür eine Lösung. Da die Berechnung aller möglichen Bäume nicht auf effiziente Weise umsetzbar ist, eignet sich für diesen Ansatz ein [[Greedy-Algorithmus]] am besten. D.h. konkret: Man beginnt mit einem Baum, der nur aus einem Knoten besteht und findet dann sukzessive lokal optimale Verzweigen. An jedem Knoten bestimmt man das Merkmal &amp;lt;math&amp;gt;j&amp;lt;/math&amp;gt;, das alle Einträge des Elternknoten am besten in zwei Regionen unterteilen kann, wobei immer auch eine optimale Teilungsvorschrift gefunden werden muss. Für [[Ordinalskala|ordinale]] Merkmale erfolgt dies mittels Schranke &amp;lt;math&amp;gt;s&amp;lt;/math&amp;gt;, welche die beiden Regionen &amp;lt;math&amp;gt;R_1(j,s)=\{x^{(i)}\;|\;x^{(i)}_j\leq s\}&amp;lt;/math&amp;gt; und &amp;lt;math&amp;gt;R_2(j,s)=\{x^{(i)}\;|\;x^{(i)}_j &amp;gt; s\}&amp;lt;/math&amp;gt; für alle &amp;lt;math&amp;gt;x^{(i)}&amp;lt;/math&amp;gt; in der ursprünglichen Partition des Elternknotens so erzeugt, dass die Fehlerfunktion minimiert wird. Sind die Merkmale nicht ordinal, ergeben sich die Verzweigungsvorschriften anhand der Zuordnung zu den verschiedenen Merkmalsausprägungen. Formal lässt sich das schreiben als&lt;br /&gt;
&lt;br /&gt;
: &amp;lt;math&amp;gt;\min_{j,s} \big( \min_{c_1} \sum_{x^{(i)} \in R_1(j,s)} (y_i - c_1)^2 + \min_{c_2} \sum_{x^{(i)} \in R_2(j,s)} (y_i - c_2)^2 \big)&amp;lt;/math&amp;gt;,&lt;br /&gt;
&lt;br /&gt;
wobei &amp;lt;math&amp;gt;\hat c_k = \textrm{mean}(y_i \;|\; x^{(i)} \in R_k(j,s))_{k=1,2}&amp;lt;/math&amp;gt; jeweils die beiden Summen minimiert.&lt;br /&gt;
&lt;br /&gt;
Ausgehend von dem einzelnen Knoten, fügt man also in jedem Schritt zwei neue Knoten hinzu, die wiederum solange weiter verzweigt werden, bis eine Abbruchbedingung (z.&amp;amp;nbsp;B. die maximale Pfadlänge von der Wurzel bis zu den Blättern) erfüllt ist.&lt;br /&gt;
&lt;br /&gt;
==== Pruning ====&lt;br /&gt;
Da der Baum so in den meisten Fällen zu komplex, also anfällig für [[Überanpassung]] ({{enS|overfitting}}) ist, kann (sollte) er gestutzt werden ({{enS|[[Pruning]]}}). Überanpassung lässt sich verhindern, indem in der Fehlerfunktion ein Regulationsterm (vgl. {{enS|Regularization}}) eingeführt wird, der nicht von den Daten abhängt und die Komplexität des Entscheidungsbaumes bestraft. Dadurch wird unterbunden, dass der Baum spezifische Eigenschaften der Trainingsdaten lernt, die im Allgemeinen (also bei anderen Daten aus der gleichen [[Grundgesamtheit]]) nicht zu den wahren Vorhersagen beitragen&amp;lt;ref&amp;gt;T. Grubinger, A. Zeileis, K.-P. Pfeiffer: [https://www.jstatsoft.org/article/view/v061i01 &amp;#039;&amp;#039;evtree: Evolutionary Learning of Globally Optimal Classification and Regression Trees in R&amp;#039;&amp;#039;]. Journal of Statistical Software. 2014, Volume 61, Issue 1&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Die zweite Möglichkeit, die im Folgenden beschrieben wird, ist es zunächst einen relativ großen Baum &amp;lt;math&amp;gt;T_0&amp;lt;/math&amp;gt; zu konstruieren, der dann im Nachhinein beschnitten wird. Sei &amp;lt;math&amp;gt;T \subset T_0&amp;lt;/math&amp;gt; ein echter [[Teilgraph]], der durch Entfernung inneren Knoten erzeugt werden kann (d.&amp;amp;nbsp;h. die Partitionen der Kinder dieses Knotens werden zusammengelegt). Sei &amp;lt;math&amp;gt;|T|&amp;lt;/math&amp;gt; die Anzahl der Blätter eines solchen Teilgraphs, wobei jedem Blatt &amp;lt;math&amp;gt;l&amp;lt;/math&amp;gt; die Partition &amp;lt;math&amp;gt;R_l&amp;lt;/math&amp;gt; mit &amp;lt;math&amp;gt;|R_l|&amp;lt;/math&amp;gt; Elementen zugeordnet ist. Sei &amp;lt;math&amp;gt;\hat c_l&amp;lt;/math&amp;gt; wie oben und&lt;br /&gt;
&lt;br /&gt;
: &amp;lt;math&amp;gt;Q_l(T, \mathcal{D_t}) = \frac{1}{|R_l|} \sum_{x^{(i)} \in R_l} (y_i - \hat c_l)^2&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Die Idee ist es einen Baum zu finden, der die Funktion&lt;br /&gt;
&lt;br /&gt;
: &amp;lt;math&amp;gt;C_\alpha(T, \mathcal{D_t}) = \sum_{l=1}^{|T|} |R_l| Q_l(T, \mathcal{D_t}) + \alpha |T|&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
für gegebenes &amp;lt;math&amp;gt;\alpha&amp;lt;/math&amp;gt; minimiert. Hierzu wird eine von &amp;lt;math&amp;gt;\mathcal{D}&amp;lt;/math&amp;gt; verschiedene Datenmenge &amp;lt;math&amp;gt;\mathcal{D_t}&amp;lt;/math&amp;gt; ({{enS|test set}}) benutzt, um einer Überanpassung vorzubeugen (vgl. [[Kreuzvalidierungsverfahren]]).&lt;br /&gt;
&lt;br /&gt;
Der frei wählbare Parameter &amp;lt;math&amp;gt;\alpha&amp;lt;/math&amp;gt; beschreibt die Gewichtung zwischen Güte der Voraussage des Entscheidungsbaums und seiner Komplexität. Für gegebenes &amp;lt;math&amp;gt;\alpha&amp;lt;/math&amp;gt; wird eine absteigende Sequenz von Teilbäumen erzeugt, indem bei jedem Schritt der innere Knoten entfernt wird, der den geringsten pro-Knoten Anstieg von &amp;lt;math&amp;gt;\sum\nolimits_l |R_l| Q_l(T, \mathcal{D_t})&amp;lt;/math&amp;gt; erzeugt, bis nur noch ein einziger Knoten übrig ist. Es gibt dann einen eindeutig bestimmbaren kleinsten Teilbaum, der &amp;lt;math&amp;gt;C_\alpha(T, \mathcal{D_t})&amp;lt;/math&amp;gt; minimiert.&lt;br /&gt;
&lt;br /&gt;
=== Klassifizierung ===&lt;br /&gt;
Seien nun die Ausgabewerte kategorisch, d.&amp;amp;nbsp;h. &amp;lt;math&amp;gt;\mathcal{Y}&amp;lt;/math&amp;gt; ist eine endliche Menge und [[Ohne Beschränkung der Allgemeinheit|o.&amp;amp;nbsp;B.&amp;amp;nbsp;d.&amp;amp;nbsp;A.]] &amp;lt;math&amp;gt;y_i \in \{1,2,\dots, K\}&amp;lt;/math&amp;gt;. Die einzigen Änderungen des Algorithmus im Vergleich zur Regression betreffen die Fehlerfunktionen für die Konstruktion des Baums und das Pruning.&lt;br /&gt;
&lt;br /&gt;
Wir definieren&lt;br /&gt;
&lt;br /&gt;
: &amp;lt;math&amp;gt;\hat p_{lk} := \frac{1}{|R_l|} \sum_{x_i \in R_l} I(y_i=k)&amp;lt;/math&amp;gt;,&lt;br /&gt;
&lt;br /&gt;
wobei &amp;lt;math&amp;gt;|R_l|&amp;lt;/math&amp;gt; gleich der Anzahl der Elemente in &amp;lt;math&amp;gt;R_l&amp;lt;/math&amp;gt; sei und &amp;lt;math&amp;gt;I(\cdot)&amp;lt;/math&amp;gt; die [[Indikatorfunktion]].&lt;br /&gt;
&lt;br /&gt;
Damit lässt sich nun in jeder Region &amp;lt;math&amp;gt;R_l&amp;lt;/math&amp;gt; die Klassifizierung der Einträge nach Mehrheitsentscheid durchführen:&lt;br /&gt;
&lt;br /&gt;
: &amp;lt;math&amp;gt; f_T(x^{(i)} \in R_l) = \textrm{argmax}_k \, \hat p_{lk}&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Mögliche Fehlerfunktionen geben die sogenannte Unreinheit der Partitionen an und können definiert werden als:&lt;br /&gt;
&lt;br /&gt;
: &amp;lt;math&amp;gt;\frac{1}{|R_l|} \sum_{x_i \in R_l} I(y_i \neq k) = 1 - \hat p_{lk} \quad&amp;lt;/math&amp;gt; (Missklassifizerungsfehler)&lt;br /&gt;
: &amp;lt;math&amp;gt;\sum_{k=1}^K \hat p_{lk}(1-\hat p_{lk}) \quad&amp;lt;/math&amp;gt; ([[Simpson-Index|Gini-Simpson-Index]])&lt;br /&gt;
: &amp;lt;math&amp;gt;-\sum_{k=1}^K \hat p_{lk} \log \hat p_{lk} \quad&amp;lt;/math&amp;gt; ([[Kreuzentropie]], [[Shannon-Index]])&lt;br /&gt;
&lt;br /&gt;
Jede dieser Funktionen kann bei der Konstruktion eines Entscheidungsbaumes anstelle der mittleren quadratischen Abweichung genutzt werden, sodass der wesentliche Teil des Algorithmus unverändert bleibt.&lt;br /&gt;
&lt;br /&gt;
== Siehe auch ==&lt;br /&gt;
* [[Iterative Dichotomiser 3]] (ID3)&lt;br /&gt;
* [[C4.5]]&lt;br /&gt;
* [[CHAID]]&lt;br /&gt;
* [[Klassifikationsbaum-Methode]]&lt;br /&gt;
* Implementierungen&lt;br /&gt;
** In [[R (Programmiersprache)|R]]: [https://www.rdocumentation.org/packages/rpart/versions/4.1-15 rpart]&lt;br /&gt;
** In [[Python (Programmiersprache)|Python]] mit [[Scikit-learn]]: [https://scikit-learn.org/stable/modules/tree.html#tree-algorithms sklearn.tree]&lt;br /&gt;
&lt;br /&gt;
== Literatur ==&lt;br /&gt;
* T. Hastie, R. Tibshirani, J. Friedman: [https://web.stanford.edu/~hastie/ElemStatLearn/printings/ESLII_print12.pdf &amp;#039;&amp;#039;The Elements of Statistical Learning: Data Mining, Inference, and Prediction.&amp;#039;&amp;#039;] Second Edition. Springer-Verlag New York, 2009, ISBN 978-0-387-84857-0&lt;br /&gt;
&lt;br /&gt;
== Einzelnachweise ==&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{SORTIERUNG:Cart}}&lt;br /&gt;
[[Kategorie:Klassifikationsverfahren]]&lt;/div&gt;</summary>
		<author><name>imported&gt;Lukania31</name></author>
	</entry>
</feed>