Scikit-learn: Assoziative Lernalgorithmen

Erstellt am 13. Dez. 2013  ·  32Kommentare  ·  Quelle: scikit-learn/scikit-learn

Mir ist aufgefallen, dass es keine assoziativen Lernalgorithmen gibt wie:

Apiori-Algorithmus
Äquivalenzklassifikationsalgorithmus (Eclat)
PräfixSpan
FP-Wachstum

Alle von ihnen werden verwendet, um Kombinationen von Mustern in einem Datensatz zu erkennen.

Einige von ihnen sind etwas schwierig zu implementieren, ich würde sagen, etwa 200 Zeilen Code?

New Feature

Hilfreichster Kommentar

Hallo,

Ich habe einige Kenntnisse über den Apriori- und FP-Wachstumsalgorithmus. An diesem Thema möchte ich arbeiten. Gibt es noch jemanden, der daran arbeitet, und wenn ja, würde ich auch gerne dabei helfen.

Alle 32 Kommentare

Ich bin mir nicht sicher, ob das Schürfen von Gegenstandssets im Rahmen von sklearn liegt. Ich kenne nur den Apriori-Algorithmus, aber ich weiß, dass es fortgeschrittenere gibt. Ich schätze, man könnte sie mit spärlichen Indikatormatrizen in die API einfügen, aber irgendwie scheinen sie vom Rest von sklearn sehr unzusammenhängend zu sein.

Sie können als Vorläufer für den CBA-Algorithmus, einen Entscheidungsbaumalgorithmus für kategoriale Daten, verwendet werden

Es gibt keine Entscheidungsbäume (oder andere Algorithmen) für kategoriale Daten ohne One-Hot-Transformation in sklearn.

Ich denke, häufiges Item-Mining sollte als OT betrachtet werden. Keiner der Kernentwickler arbeitet in diesem Bereich, sodass jeder eingereichte Code wahrscheinlich verwaist ist. Genau aus diesem Grund haben wir versucht, den Umfang der Bibliothek zu reduzieren.

Ich denke, häufiges Item-Mining sollte als OT betrachtet werden. Nichts vom Kern
Entwickler arbeiten in diesem Bereich, so dass jeder eingereichte Code wahrscheinlich wird
verwaist.

Außerdem glaube ich, dass die Art der Codemuster sehr unterschiedlich sein wird
dann, was wir derzeit haben.

Ich sage nicht, dass es nicht interessant ist, ich sage nur, dass das Tool eins sein sollte
ein anderes.

Hallo,

Ich habe einige Kenntnisse über den Apriori- und FP-Wachstumsalgorithmus. An diesem Thema möchte ich arbeiten. Gibt es noch jemanden, der daran arbeitet, und wenn ja, würde ich auch gerne dabei helfen.

Schließe dieses Problem. Ich denke, Assoziationslernen sollte in einem separaten Paket prototypisiert werden; Wenn sich herausstellt, dass der Code und die Schnittstellen unseren ähnlich genug sind, können wir den Code für die Zusammenführung mit scikit-learn in Betracht ziehen.

Traurige Entscheidung!

Schließe dieses Problem. Ich denke, Assoziationslernen sollte in einem separaten Paket prototypisiert werden; Wenn sich herausstellt, dass der Code und die Schnittstellen unseren ähnlich genug sind, können wir den Code für die Zusammenführung mit scikit-learn in Betracht ziehen.

Sehr vernünftige Entscheidung :)

:+1: für Fokus
:-1: zum Ausschließen einer ganzen Klasse bekannter Algorithmen für unüberwachtes Lernen

@joernhees könnten Sie erklären, wie diese Formulierung des unüberwachten Lernens überhaupt in die scikit-learn-API passt? Wenn nicht einfach, dann gehört es wahrscheinlich in den Umfang eines anderen Projekts, das seine eigene API einrichten kann. Ich denke, @larsmans hat das oben ziemlich deutlich gemacht, und es verdient keine abfällige Antwort.

tut mir leid, wenn das abfällig rüberkam, das war nicht meine Absicht.

Ich bin ursprünglich hierher gekommen, um nach Algorithmen zum Lernen von Assoziationsregeln zu suchen, und hatte nur erwartet, sie in sklearn zu finden (da es sich um eine ziemlich großartige Sammlung von Algorithmen für maschinelles Lernen handelt und ich normalerweise die meisten Dinge darin finde, die ich brauche (großes Dankeschön dafür)).

Nachdem ich diesen Thread gelesen hatte, war ich sowohl erfreut als auch enttäuscht und wollte beides äußern:

  • Erfreut zu sehen, dass Sie die gute Software-Engineering-Entscheidung treffen, sich zu konzentrieren (was schwierig ist).
  • Enttäuscht, dass Assoziationsregel-Mining nicht Teil davon ist und es eine andere Person da draußen gibt, die es vermisst. Wie gesagt, es kann als eine eigene Klasse von Algorithmen für unüberwachtes Lernen angesehen werden und ist ziemlich erfolgreich (Amazon). Vielleicht ist es ein bisschen zu viel Data Mining und ein bisschen zu wenig maschinelles Lernen für sklearn, aber drehen Sie es einfach ein bisschen und Sie erhalten Regellernen, was zum Beispiel für die erklärbare Vorhersage der nächsten Aktion, die ein Akteur ausführen könnte, sehr nützlich ist.

Sie haben Recht, dass das Assoziationsregel-Mining nicht vollständig in die aktuelle API passt. Konzeptionell sehe ich es irgendwo zwischen Dimensionalitätsreduktionstechniken und hierarchischem Clustering. In Bezug auf die API ist es wahrscheinlich dem hierarchischen Clustering am nächsten.

Da zwei Zeilen wahrscheinlich zu kurz waren, um das freundlich auszudrücken, bitte ich um Entschuldigung.

Kein Problem. Es gibt definitiv Python-Implementierungen von apriori.
Aufbau einer guten Bibliothek, die Alternativen sammelt und sie bereitstellt
Eine konsistente (scikit-learn-ähnliche) API scheint ein nettes Projekt zu sein ... denke ich
Klassifikatoren, die auf Assoziationsregel-Mining basieren, könnten durchaus in den Anwendungsbereich fallen
scikit-learn, aber es sei denn, sie sind ausreichend populär und standardisiert
schon jetzt läuft es Gefahr, ohne Betreuer zum Code zu werden.

Am 24. September 2014 07:52 schrieb Jörn Hees [email protected] :

tut mir leid, wenn das abfällig rüberkam, das war nicht meine Absicht.

Ich bin ursprünglich hierher gekommen, um nach Assoziationsregeln zu lernen
Algorithmen und erwartete nur, sie in sklearn zu finden (da es eine hübsche
Tolle Sammlung von Algorithmen für maschinelles Lernen und normalerweise finde ich die meisten
Dinge, die ich darin brauche (vielen Dank dafür)).

Nachdem ich diesen Thread gelesen hatte, war ich sowohl erfreut als auch enttäuscht und wollte
beide aussprechen:

  • Freut mich zu sehen, dass Sie die gute Software-Engineering-Entscheidung treffen
    zu fokussieren (was schwierig ist).
  • Enttäuscht, dass Assoziationsregel-Mining nicht Teil davon ist und
    da draußen ist noch jemand, der es vermisst. Wie gesagt, so kann man es sehen
    eine eigene Klasse von Algorithmen für unüberwachtes Lernen und es ist ziemlich erfolgreich
    (Amazonas). Vielleicht ist es ein bisschen zu viel Data Mining und ein bisschen zu wenig
    maschinelles Lernen für sklearn, aber drehen Sie es einfach ein wenig und Sie bekommen die Regel
    Lernen, das für die erklärbare Vorhersage des Nächsten sehr nützlich ist
    Aktion, die ein Schauspieler zum Beispiel ausführen könnte.

Sie haben Recht, dass Assoziationsregel-Mining nicht vollständig in die passt
aktuelle API. Konzeptionell sehe ich es irgendwo zwischen der Dimensionalität
Reduktionsverfahren und hierarchisches Clustering. API-weise ist es wahrscheinlich
dem hierarchischen Clustering am nächsten.

Da zwei Zeilen wohl zu kurz waren, um das freundlich auszudrücken,
bitte akzeptiere meine Entschuldigung.


Antworten Sie direkt auf diese E-Mail oder zeigen Sie sie auf GitHub an
https://github.com/scikit-learn/scikit-learn/issues/2662#issuecomment -56595906
.

Ich denke, das würde sich lohnen, dieser Artikel: Vergleich von Assoziationsregeln und Entscheidungsbäumenfor Disease Prediction zeigt deutliche Vorteile gegenüber Entscheidungsbäumen.

Dieser Blogbeitrag enthält Python-Code für A-Priori, es könnte interessant sein, diese Algorithmen irgendwann einmal zu implementieren. Gibt es Arbeiten an einem separaten Prototyping-Paket?

Keine bis jetzt. Vielleicht können Sie versuchen, auf der Mailingliste Unterstützung dafür zu sammeln?

Ich bin zum einen enttäuscht, dass diese Algorithmen nicht in sklearn implementiert sind. Mein Berater ist Jiawei Han, der Autor von FP-Growth und PrefixSpan, und die Anzahl der Zitierungen für diese beiden Artikel („Mining Frequent Patterns Without Candidate Generation“ und „Mining Sequential Patterns by Pattern-Growth“) ist ein Beweis dafür, dass beides der Fall ist Diese Algorithmen haben einen Platz in sklearn.

Nur weil scikit-learn ein Beliebtheitskriterium für enthalten hat
Algorithmen, das bedeutet nicht, dass jeder beliebte Algorithmus enthalten sein sollte.
Scikit-learn muss einen begrenzten Umfang haben, und das ist einfach zu weit davon entfernt
Klassifizierungs- und regressionsähnliche Probleme (obwohl ich daran interessiert wäre
siehe einen erfolgreich implementierten assoziationsbasierten Klassifikator).

Fühlen Sie sich frei, enttäuscht zu sein, aber ich bezweifle stark, dass ARL-Techniken dies tun werden
in absehbarer Zeit direkt in scikit-learn eingebunden werden (obwohl
ein anderes Projekt stellt ihnen möglicherweise eine scikit-learn-ähnliche API zur Verfügung). Es gibt
andere Projekte, bei denen diese Algorithmen besser geeignet sind, aber wenn Sie es sind
Auch von ihnen enttäuscht, machen Sie Ihre eigenen.

Am 25. März 2015 um 09:11 schrieb Henry [email protected] :

Ich bin zum einen enttäuscht, dass diese Algorithmen nicht in implementiert sind
sklearn. Mein Berater ist Jiawei Han, der Autor von FP-Growth und PrefixSpan,
und die Anzahl der Zitate für diese beiden Artikel (
„Mining häufige Muster ohne Kandidatengenerierung“ und „Mining
sequentielle Muster durch Musterwachstum") ist ein Beweis dafür, dass beides der Fall ist
Algorithmen haben einen Platz in sklearn.


Antworten Sie direkt auf diese E-Mail oder zeigen Sie sie auf GitHub an
https://github.com/scikit-learn/scikit-learn/issues/2662#issuecomment -85713120
.

Assoziationslernalgorithmen sind einfach zu weit von Klassifikations- und Regressionsproblemen entfernt. Obwohl wir den Frequent Itemset/Pattern Mining-Algorithmus stattdessen als Feature-Generierungsalgorithmus wie countvectorizer und tfidfvectorizer betrachten können. Diese häufigen Muster können in jedem Klassifikatoralgorithmus als Eingabemerkmale verwendet werden und sind viel intuitiver und etwas anders als die Anwendung des auf Informationsgewinn basierenden Entscheidungsbaumlernens

Das ist eine Option. Kudo und Matsumoto zeigen, wie man mit PrefixSpan eine Teilmenge des Polykernels abtastet.

Ich kann die scikit-learn-Dokumentation nachschlagen und überprüfen, aber ich werde Sie direkt fragen: Ist diese Option (Kudo und Matsumoto) in scikit-learn verfügbar.

Nein. Ich sage nur, es könnte sein.

+1 für Apiori-Algorithmus

Beachten Sie, dass es ML-Algorithmen gibt, die Listen mit häufigen Elementen als Eingabe verwenden. Siehe zum Beispiel Cynthia Rudins Bayesian Rule Lists (vgl. http://www.stat.washington.edu/research/reports/2012/tr609%20-%20old.pdf).

Stellen Sie sich einen Datensatz mit einer vorherzusagenden Antwortvariablen vor, bei der alle Merkmale binäre Indikatoren sind (vielleicht als Ergebnis einer One-Hot-Codierung). Wir können eine Trainingssatzreihe als einen „Korb“ betrachten und das Vorhandensein eines Merkmals für diese Trainingssatzreihe als einen „Gegenstand“ innerhalb des Korbs. Somit könnten ziemlich generische Datensätze durch Apriori-, FP-Wachstums- und andere häufige Itemset-Mining-Techniken bearbeitet werden.

Beim Bayes'schen Regellistenalgorithmus werden die häufigen Itemsets ausgewertet und daraus schließlich eine If-Then-Else-Struktur erstellt. Weitere Einzelheiten finden Sie im zitierten Dokument.

Der Punkt ist, dass die Verfügbarkeit häufiger Itemset-Mining-Ansätze Klassifikatoren und Regressoren unterstützen könnte – bereits im Rahmen von sklearn – und nicht nur die Warenkorbanalyse.

Das ist vielleicht die Motivation dafür, dass solche Algorithmen in Scipy verfügbar sind. Von
Natürlich, wenn ein Klassifikator oder ähnliches die Aufnahme von scikit-learn erfüllt
Richtlinien wurden mit Itemset Mining umgesetzt, es hat eine gute Chance
Inklusion, a priori und alles.

Am 19. April 2016 um 01:14 schrieb rmenich [email protected] :

Beachten Sie, dass es ML-Algorithmen gibt, die Listen mit häufigen Artikeln als abhängen
Eingang. Siehe zum Beispiel Cynthia Rudins Bayesian Rule Lists (vgl.
http://www.stat.washington.edu/research/reports/2012/tr609%20-%20old.pdf).

Stellen Sie sich einen Datensatz mit einer Antwortvariablen vor, für die alle vorhergesagt werden sollen
die Merkmale sind binäre Indikatoren (vielleicht als Ergebnis von
One-Hot-Codierung). Wir können eine Reihe von Trainingssätzen als "Korb" und betrachten
das Vorhandensein eines Merkmals für diese Trainingssatzzeile, um ein 'Element' darin zu sein
der Korb. Somit könnten ziemlich generische Datensätze bearbeitet werden
Apriori, FP-Wachstum und andere häufige Itemset-Mining-Techniken.

Beim Bayes'schen Regellistenalgorithmus werden die häufigen Itemsets ausgewertet
und schließlich wird daraus eine if-then-else-Struktur erstellt. Siehe die
Referenzpapier für weitere Einzelheiten.

Der Punkt ist, dass häufig Itemset-Mining-Ansätze zur Verfügung stehen
Klassifikatoren und Regressoren unterstützen könnte --- bereits im Rahmen von
sklearn --- nicht nur Warenkorbanalyse.


Sie erhalten dies, weil Sie kommentiert haben.
Antworten Sie direkt auf diese E-Mail oder zeigen Sie sie auf GitHub an
https://github.com/scikit-learn/scikit-learn/issues/2662#issuecomment -211424583

Ich weiß nicht, wie viel sich an sklearn geändert hat, seit dieses Gespräch begonnen hat, aber es gibt ein ganzes „Cluster“-Paket, das auch keine Regression/Klassifizierung ist. Ich denke, eine gute Implementierung der neuesten Algorithmen für Assoziationsregeln und häufige Itemsets würde von vielen in sklearn begrüßt werden.

Clustering ähnelt der Klassifizierung, ist jedoch unbeaufsichtigt und seit langem Teil von scikit-learn. Assoziationsregel-Mining bleibt außerhalb der primären Aufgaben, auf die sich scikit-learn konzentriert, und passt nicht genau zu seiner API, könnte aber im Kontext eines assoziationsbasierten Klassifikators relevant sein.

„neueste Algorithmen“ ist nicht das, worum es bei scikit-learn geht. Siehe unsere häufig gestellten Fragen .

Es wäre schön, wenn ich mich nicht wiederholen müsste.

@actsasgeek Wenn Sie Assoziationsregel-Mining auf eine scikit-learn-kompatible Weise implementieren möchten, nehmen wir es gerne in scikit-learn-contrib auf: https://github.com/scikit-learn-contrib/scikit-learn -contrib/blob/master/README.md

Ich hoffe, meine sich wiederholende Frage stört Sie nicht, da ich ein Gefühl des Gegenteils gegenüber dem Hinzufügen von Assoziationsregel-Mining in einer so großartigen Bibliothek wie Scikit Learn sehe. Ich möchte nur auf den neuesten Stand gebracht werden. Gibt es nach drei Jahren nach der Erstellung dieses Threads einen häufigen Gegenstandssatz, der in Scikit Learn implementiert wurde?.

Assoziationsregel-Mining liegt außerhalb des Bereichs des maschinellen Lernens und
sicherlich außerhalb des Umfangs von scikit-learn.

Die Klassifizierung nach Assoziationsregeln ist der einzige Kontext, in dem wir
würde es in Betracht ziehen, und dann müsste es immer noch ein harter Verkauf sein.

Am 17. August 2017 um 15:59 schrieb saria85 [email protected] :

Ich hoffe, meine sich wiederholende Frage stört Sie nicht, da sehe ich ein Gefühl von
Gegenteil zum Hinzufügen von Assoziationsregel-Mining in einer so großartigen Bibliothek wie
scikit lernen. Ich möchte nur auf den neuesten Stand gebracht werden, ob es ein häufiges Item-Set gibt
drei Jahre nach der Erstellung in scikit learn implementiert
gefesselt?.


Sie erhalten dies, weil Sie kommentiert haben.
Antworten Sie direkt auf diese E-Mail und zeigen Sie sie auf GitHub an
https://github.com/scikit-learn/scikit-learn/issues/2662#issuecomment-322976532 ,
oder den Thread stumm schalten
https://github.com/notifications/unsubscribe-auth/AAEz67fCICLgV-3OpYiV3ErpJSW0mobgks5sY9a4gaJpZM4BT5PS
.

Für Interessierte,

Eine Bibliothek namens mlxtend implementiert den A-priori-Algorithmus:
http://rasbt.github.io/mlxtend/api_subpackages/mlxtend.frequent_patterns/

Ja, jeder braucht es, also wird es großartig sein, es in scikit-learn zu haben.
ein weiterer Link zur Verwendung in ML
http://www2.cs.uh.edu/~ordonez/pdfwww/w-2006-HIKM-ardtmed.pdf
Vergleich von Assoziationsregeln und Entscheidungsbäumen
für die Krankheitsvorhersage

Das ist Pattern Mining, nicht ML

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen