Entscheidungsbaumähnliche Funktionsauswahl mit fester Länge, um die durchschnittliche Suchleistung zu minimieren


9

Ich habe eine komplexe Abfrage verwendet wird, um einen Datensatz S zu durchsuchen , um H genau = { s S ∣ zu finden, wobei  Q ( s )  wahr ist } . Jede Abfrage benötigt die durchschnittliche Zeit t, sodass die Gesamtzeit bei der linearen Suche t | beträgt S | . Ich kann eine Abfrage in einfachere Unterabfragen q_i aufteilen und finde, dass H ungefähr = { s S q j ( s ) wahr ist }QSHexact={sSwhere Q(s) is True}tt|S|Happrox={sSqj(s)is True} und wo . Jede Unterabfrage q i ist viel schneller zu berechnen, so dass es insgesamt schneller ist, H ungefähr zu finden und dann Q zu verwenden, um H genau zu finden .HexactHapproxqiHapproxQHexact

Jedes hat viele q i . Die Überlappung zwischen verschiedenen Q ist hoch. Ich suche nach einer Möglichkeit, einen entscheidungsbaumähnlichen Satz fester Fragen q j zu bestimmen , die die durchschnittliche Zeit zum Auffinden eines H_exact auf der Grundlage einer großen Stichprobe von Suchanfragen minimieren.QqiQqj

Um dies konkreter zu machen, nehmen wir an, der Datensatz enthält die 7 Milliarden Menschen auf der Welt, und die komplexen Abfragen sind Dinge wie "die Frau, die im roten Haus an der Ecke 5th lebt und Lexington in einer Stadt, die mit B beginnt".

Die naheliegende Lösung besteht darin, jede Person auf der Welt zu überprüfen und festzustellen, wer der Abfrage entspricht. Es kann mehr als eine solche Person geben. Diese Methode dauert lange.

Ich könnte diese Abfrage genau vorberechnen. In diesem Fall wäre sie sehr schnell. Aber nur für diese Frage. Ich weiß jedoch, dass andere Fragen sich an die Frau richten, die im blauen Haus an derselben Ecke wohnt, an den Mann, der an derselben Ecke wohnt, an dieselbe Frage, aber in einer Stadt, die mit C beginnt, oder an etwas völlig anderes, wie das König von Schweden. '

Stattdessen kann ich die komplexe Frage in eine Reihe einfacher, aber allgemeinerer Gruppen aufteilen. Zum Beispiel haben alle oben genannten Fragen eine geschlechtsrollenbasierte Abfrage, sodass ich die Menge aller Menschen auf der Welt vorberechnen kann, die sich selbst als "Frau" betrachten. Diese Unterabfrage benötigt im Wesentlichen keine Zeit, sodass sich die Gesamtsuchzeit um ungefähr die Hälfte verringert. (Unter der Annahme, dass wir durch anderes Wissen wissen, dass ein schwedischer "König" keine "Frau" sein kann. Hatschepsut war eine ägyptische Frau, die König war.)

Es gibt jedoch manchmal Fragen, die nicht geschlechtsspezifisch sind, wie "die Person, die in der 8. Straße in einem roten Haus in einer Stadt lebt, die mit A beginnt". Ich kann sehen, dass die Unterabfrage "lebt in einem roten Haus" häufig vorkommt, und eine Liste aller Personen vorberechnen, die in einem roten Haus leben.

Dies gibt mir einen Entscheidungsbaum. Im Normalfall enthält jeder Zweig des Entscheidungsbaums unterschiedliche Fragen, und die Methoden zur Auswahl der optimalen Begriffe für den Entscheidungsbaum sind bekannt. Ich baue jedoch auf einem vorhandenen System auf, bei dem alle Niederlassungen dieselben Fragen stellen müssen.

Hier ist ein Beispiel für einen möglichen endgültigen Entscheidungssatz: Frage 1 lautet „Ist die Person eine Frau?“, Frage 2 lautet „Lebt die Person in einem roten Haus?“, Frage 3 lautet „Lebt die Person in einer Stadt, beginnend mit A oder lebt die Person in einer Stadt, die mit B beginnt? “, Und Frage 4 lautet:„ Lebt die Person in einer nummerierten Straße? “.

QqiqjQ

QHapproxHapprox

qjqj

Welche vorhandenen Forschungsergebnisse sollte ich nach Ideen durchsuchen?


Sind Ihre Daten festgelegt? Werden Sie weitere Beispiele hinzufügen? Wenn nicht, versuchen Sie besser, einen Entscheidungsbaum zu erstellen, indem Sie mit der Unterabfrage mit der höchsten Informationsentropie beginnen. Sie können auch eine minimale Entropie auswählen, um die baumbasierten Entscheidungen zu stoppen und mit | S | .t Zeit zu suchen, wenn S klein genug ist.
Anton

Antworten:


1

Die Lösung, die ich gefunden habe (ich habe die Frage gestellt), besteht darin, eine überlagerte Codierung zu verwenden, insbesondere eine Variante der Zatocodierung, die hierarchische Deskriptoren besser unterstützt.

Die Methode, die ich verwendet habe, stammt aus 'Ein effizientes Design für die Suche nach chemischen Strukturen. I. The Screens ', Alfred Feldman und Louis Hodes, J. Chem. Inf. Comput. Sci., 1975, 15 (3), S. 147–152.

si=log2(fi)fi0<DD=(sifi)/McMcloge2si

si=log2(fi)si=log2(fi/gi)gi

Es gibt immer noch ein Problem, wie man die richtigen Deskriptoren findet, aber das wird domänenspezifisch sein.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.