Softwareentwicklung

Was steckt in unserem Essen? Machine Learning schafft Transparenz

: Studentin Lea Wodarzek hat sich in ihrem Praktikum bei Micromata mit Machine Learning und Open Food Facts befasst. Hier ihr Erfahrungsbericht.

Machine Learning bei Lebensmitteln

Im Rahmen meines Studiums habe ich ein Praktikum bei Micromata im Bereich Data Science absolviert. Dabei haben wir mit Hilfe von Machine-Learning-Modellen untersucht, wie man Lebensmittel anhand ihrer Eigenschaften in Gruppen, so genannte Cluster, sortieren kann. Dafür haben wir an realitätsnahen und teilweise auch fehlerhaften Daten gearbeitet, und zwar an den Daten von „Open Food Facts“.

Cluster Nährwerte Machine Learning
Machine Learning: Cluster von Nährwerten

Was ist das Open-Food-Facts-Projekt?

Die App Open Food Facts ist eine Open-Source-App, mit der die Möglichkeit besteht, die wichtigsten Informationen über im Supermarkt erhältliche Lebensmittel auf einen Blick zu erfassen. So können Nutzer den Barcode eines Lebensmittels scannen und direkt die Angaben auf der Zutatenliste, der Nährwerttabelle und sonstige Informationen einsehen; zum Beispiel kann man anhand eines Nutri-Scores erkennen, wie gesund ein Produkt im Sinne der Verbraucherampel ist. Ist der App ein Produkt noch nicht bekannt, kann dieses durch einen Nutzer eingetragen werden.

Das Verfahren, mit dem die Produkte in die Datenbank aufgenommen werden, ist eine große Fehlerquelle. Da alle Daten per Hand eingetragen werden müssen (also auch jede einzelne Nährwertangabe), kommt es schnell zu Eingabefehlern – egal ob durch Tippfehler oder durch die nachlassende Motivation der Nutzer. Somit enthalten die Daten viele fehlende Einträge oder auch falsche Angaben, wodurch der Nutzen und der Spaß an der App schnell verlorengehen kann.

Wie können wir Open Food Facts mit Machine Learning helfen?

Es ist also wichtig, solche Fehler zu verhindern, damit die App den Nutzern genaue Nutri-Scores und Empfehlungen vorhalten kann – z. B. Hinweise auf Allergene. Das Entstehen von Fehlern könnte man beispielsweise durch Feedbackfragen an den Nutzer verhindern – z. B. diese: „Handelt es sich bei diesem Produkt um Nudeln?“. So könnte man auch schon bestehende Fehler beheben. Voraussetzung dafür ist eine Gruppierung der Lebensmittel anhand ihrer Nährwerte in so genannte Cluster.

Um fehlerhafte Einträge in den Daten zu finden und Produkte anhand natürlich auftretender Muster zu gruppieren, haben wir uns entschieden, mit dem Gaussian Mixture Model zu arbeiten. Dieser lernende Algorithmus ist in der Lage, Cluster zu bilden und Anomalien in Daten aufzuspüren. Für das Einlernen des Modells nutzten wir die häufigsten und aussagekräftigsten Merkmale der Nährwerttabelle: Fett, Kohlenhydrate, Zucker, Salz, Proteine und Energie.

Wie können wir natürliche Muster in den Daten finden?

Das Gaussian Mixture Model sucht nach verborgenen Strukturen in den Daten. In unserem Fall sind das die gesuchten Produktkategorien, wie unter anderem Nudeln, Süßwaren oder Getränke. Um diese Strukturen zu finden, benötigt das Modell eine Angabe, wie viele verborgene Kategorien zu erwarten sind. Auf diese Weise wird die Anzahl der Gruppierungen vorab festgelegt. Wir haben uns für 20 Gruppen entschieden, da wir dort viele grobe Produktkategorien, aber nur wenige Überlappungen und Korrelationen zwischen den einzelnen Gruppen erwarten durften.

Der Vorteil des Gaussian Mixture Model im Vergleich zu einigen anderen Modellen ist das so genannte „Soft Clustering“: Der Algorithmus ordnet einem Produkt keine absolute Gruppe zu, sondern berechnet die Verantwortlichkeit jedes Clusters für dieses Punkt und ordnet es zum Schluss dem Cluster mit der höchsten Verantwortlichkeit zu.

In unseren Clustern konnten wir schöne Gruppierungen finden. So zum Beispiel auch einen Cluster aus Nüssen & Samen sowie einen aus Joghurt & Milch, wie man in den Word Clouds sehen kann.

 

Word Cloud Machine Learning
Machine Learning: Word Cloud

 

Wie können wir besondere Einträge in den Daten finden?

Nachdem wir offensichtliche Eingabefehler manuell ausschließen konnten – z. B. negative Werte oder Einträge größer als 100g auf 100g – suchten wir nach Einträgen, die sehr stark von den meisten Werten in der Datenbank abwichen. Diese Ausreißer konnten seltene, besondere Produkte oder auch Fehler sein, weshalb sie besser überprüft werden sollten. Anhand des Gaussian Mixture Models konnten wir berechnen, wie dicht bzw. häufig die Daten im Raum der Nährwerte auftreten und somit auch, wo sich seltene Daten oder Fehler befinden konnten. Auf diese Weise konnten wir abnormale Dateneinträge finden, etwa seltene Produkte wie Proteinriegel oder auch Fehler wie Butter-Geschmacksstoffe ohne Kalorien mit einem zu hohen Energieeintrag.

Die App Open Food Facts lässt sich also durch das Auffinden der abnormalen Produkte erheblich verbessern. Und auch durch Feedbackfragen an die Nutzer ließen sich seltene oder fehlerhafte Produkte überprüfen. Auf diese Weise ließen sich Fehler korrigieren oder bereits bei der Eingabe verhindern.

Was habe ich während meines Praktikums gelernt?

Durch mein Praktikum habe ich einen tiefen und spannenden Einblick in die Funktionsweise und den praktischen Nutzen von Machine Learning erhalten können. Dabei konnte ich außerdem sehen, wie man Daten visuell und statistisch untersucht, und gleichzeitig meine Programmierkenntnisse ausbauen. Zudem hat es viel Spaß gemacht, an einem Open-Source-Projekt teilzunehmen und so einen gemeinnützigen Beitrag für alle Nutzer der Open-Food-Facts-App zu leisten. Wer einen tieferen Blick in das Projekt erhalten möchte, der kann die Analyse auf der Data-Science-Plattform Kaggle verfolgen.

Lea Wodarzek

 

Laura Fink