Open Source im professionellen Einsatz
Linux-Magazin 08/2017
568

Von unsicher nach sicher

Das von »scikit-learn« genutzte Verfahren [4] ist mathematisch belegt und baut den Baum auf, indem es die Gesamtmenge aller möglichen Eingabetupel und ihrer vorab vorliegenden Ergebnisse immer weiter in Teilmengen aufspaltet. Jede Unterteilung hat zum Ziel, die Unsicherheit im System – seine Entropie – weiter zu minimieren. Am Kopfknoten ist die Entropie noch hoch, dort ist noch nichts über das Ergebnis bekannt, also müsste der Algorithmus als Ergebnis zufällig entweder 0 oder 1 auswählen. Da die Ausgabe in 75 Prozent aller Fälle 0 und zu 25 Prozent gleich 1 ist (Tabelle 1), beträgt die Entropie im System anfangs:

- (1/4)*ln(1/4) - (3/4)*ln(3/4) = 0,56

Unterteilt der erste Knoten die möglichen Eingabewerte mit dem Vergleich »X<=0,5?« in zwei Teilmengen »[[0,0],[0,1]]« und »[[1,0],[1,1]]« , dann ist die Entropie der ersten Teilmenge gleich 0 (das Ergebnis ist in jedem Fall 0, also sicher) und die der zweiten weiterhin 0,56, also ist die Gesamtentropie:

- 1/2*8 + 1/2*0,56 = 0,28

Mit nur einem Knoten im Baum hat die Entropie des Systems von 0,56 auf 0,28 abgenommen. Ein weiterer Knoten, der die zwei verbleibenden Ergebnistupel im Fall »X>0,5« mit »Y<=0,5« in zwei Einzelergebnisse aufspaltet, lässt die Entropie des Gesamtsystems auf »« sinken. Es kann folglich mit zwei Knoten das Ergebnis für jeden beliebigen Eingabetupel mit 100-prozentiger Wahrscheinlichkeit fehlerfrei voraussagen.

Das ist in unserem Fall höchstens von akademischem Interesse, denn ein Und-Gatter lässt sich trivial in Hardware oder Software aufbauen. Aber dass ein Algorithmus, der nichts vom internen Aufbau ahnt und nur aus Kombinationen von Eingabe- und Ausgabewerten lernt, das Verhalten des ihm unbekannten Systems imitiert, hat Potenzial. Als Bonus unterstützt er sogar nicht erlaubte Eingabewerte wie »[0.9,0.8]« , die er in sinnvolle Ergebnisse (in dem Fall »1« ) umgießt.

Wer ist gefahren?

Als praktische KI-Anwendung soll ein Entscheidungsbaum anhand von Fahrdaten aus dem Auto ermitteln, wer am Steuer saß. Wie im vorigen Snapshot [5] habe ich Daten aus den Automatic-Adaptern [6] meiner beiden Autos aufbereitet, die festhalten, wann, wo und wie schnell die Fahrzeuge gefahren sind.

Nur weiß der Adapter nicht, wer gefahren ist, und da meine Frau und ich abwechselnd mit zwei Autos fahren, soll die lernfähige Maschine mittels einiger von Hand mit dem Fahrerkürzel (»M« oder »A« ) ergänzten Trip-Daten in Listing 2 eventuell vorhandene Kriterien lernen, um bei neuen Trip-Daten automatisch den Fahrer zu ergänzen.

Listing 2

trips-learn.csv

01 dow,miles,brakes,accels,speed,vehicle,driver
02 3,5894.2,0,0,0,1,A
03 3,471.4,0,0,0,1,A
04 2,1279.4,0,0,0,1,A
05 4,21876.9,5,2,0,1,A
06 4,1510,1,1,0,1,A
07 4,20586.9,3,0,0,1,A
08 3,22381.9,1,1,0,1,A
09 2,39883.3,2,2,18,1,A
10 1,2005.6,2,4,0,1,A
11 3,16131.6,4,2,6,2,M
12 7,11788.7,1,0,14,1,M
13 6,19103.8,0,2,20,1,M
14 5,21384.3,1,0,15,2,M

Jede Zeile in der CSV-Datei in Listing 2 repräsentiert eine aufgezeichnete Autofahrt, die vorletzte Spalte »vehicle« gibt an, ob der "Brummi" genannte Honda Fit »1« fuhr oder meine "Rakete" genannte Rennsemmel, ein 1998er Acura Integra »2« . Letzteren lenkt meine Frau eher selten, sie fährt aber häufig unter der Woche mit "Brummi" zur Arbeit (»dow= 1-5« ), während ich eher am Wochenende (»dow=6-7« ) spazieren fahre.

Egal ob mit "Brummi" oder "Rakete", die Spalte »speed« scheint mir als Fahrer aus unverständlichen Gründen mehr Punkte zu geben als meiner Frau. Bremsen oder Gas geben (»brakes« und »accels« ) scheinen gleich verteilt. Reichen diese Kriterien mit den von Hand ergänzten Fahrern aus, um dem System beizubringen, bei neuen Trips den Fahrer richtig zu erraten?

Diesen Artikel als PDF kaufen

Express-Kauf als PDF

Umfang: 3 Heftseiten

Preis € 0,99
(inkl. 19% MwSt.)

Linux-Magazin kaufen

Einzelne Ausgabe
 
Abonnements
 
TABLET & SMARTPHONE APPS
Bald erhältlich
Get it on Google Play

Deutschland

Ähnliche Artikel

  • Video zum Snapshot 08/2017

    Mit künstlicher Intelligenz bauen Programme Entscheidungsbäume selbstständig auf, indem sie aus vorliegenden Messwerten lernen. So ermittelt Mike Schilli, welches seiner Autos welchen Fahrer hatte.

  • Perl-Snapshot

    Ein in den Diagnose-Port von Michael Schillis Auto(s) gestöpselter Stecker sendet an das mitreisende Mobiltelefon per Bluetooth aktuelle Informationen wie Geschwindigkeit, Beschleunigung, Benzinverbrauch. Eine App und ein programmierbares API lesen die Daten aus und stellen sie ansprechend dar.

  • Snapshot

    Anhand von Trainingsdaten in Form von täglich im Auto erfassten Kilometerständen versucht Michael Schillis KI-Programm Muster im Fahrverhalten zu erkennen und Prognosen abzugeben.

  • Perl-Snapshot

    Der Projekthoster Github beherbergt nicht nur die Code-Repositories vieler bekannter Open-Source-Projekte, sondern bietet auch ein durchdachtes API an, mit dem sich in ihnen herrlich herumschnüffeln lässt.

comments powered by Disqus

Ausgabe 10/2017

Digitale Ausgabe: Preis € 6,40
(inkl. 19% MwSt.)

Artikelserien und interessante Workshops aus dem Magazin können Sie hier als Bundle erwerben.