Вибір функцій у вигляді дерева рішень із фіксованою довжиною, щоб мінімізувати середню ефективність пошуку


9

У мене складний запит Q використовується для пошуку набору даних S знайти Нточний={сSде Q(с) правда}. Кожен запит займає в середньому част тому загальний час у лінійному пошуку становить т|S|. Я можу розбити запит на більш прості підзапити q_i і знайтиНбл={сSqj(с)правда} і де НточнийНбл. Кожен підзапитqi набагато швидше обчислити, тому в цілому його швидше знайти Нбл а потім використовувати Q знайти Нточний.

Кожен Q має багато qi. Перекриття між різнимиQвисока. Я шукаю спосіб визначити набір рішень, що нагадують дерево, з фіксованими питаннямиqj які мінімізують середній час пошуку H_exact на основі великої вибірки пошукових запитів.

Щоб зробити це більш конкретним, припустимо, набір даних містить 7 мільярдів людей у ​​світі, а складні запити - це такі речі, як "жінка, яка живе в червоному будинку на розі 5-го та Лексінгтоні в місті, що починається з B."

Очевидне рішення - перевірити кожну людину в світі та побачити, хто відповідає запиту. Такої людини може бути більше. Цей метод займає тривалий час.

Я міг би заздалегідь обчислити цей запит, і в цьому випадку це було б дуже швидко .. але тільки для цього питання. Однак я знаю, що інші запити стосуються жінки, яка живе в синьому будинку на тому ж куті, чоловіка, який живе в тому ж куті, того ж питання, але в місті, що починається з C, або чогось зовсім іншого, наприклад " король Швеції.

Натомість я можу розбити складне питання на набір простіших, але загальніших наборів. Наприклад, усі перераховані вище питання містять ґендерно-рольовий запит, тому я можу скласти набір усіх людей у ​​світі, які вважають себе "жінкою". Цей суб-запит фактично не займає часу, тому загальний час пошуку зменшується приблизно на 1/2. (Припускаючи, що за іншими знаннями ми знаємо, що шведський "король" не може бути "жінкою". Хатшепсут був єгипетською жінкою, яка була королем.)

Однак іноді виникають запити, які не ґендерні, наприклад, "людина, яка живе на 8-й вулиці в червоному будинку в місті, починаючи з". Я бачу, що підзапит «живе в червоному будинку» є загальним, і попередньо обчислити список усіх тих людей, які живуть у червоному будинку.

Це дає мені дерево рішень. У звичайному випадку кожна гілка дерева рішень містить різні запитання, а методи вибору оптимальних умов для дерева рішень добре відомі. Однак я будую на існуючій системі, яка вимагає, щоб усі відділення задавали однакові запитання.

Ось приклад можливого набору остаточного рішення: питання 1 - це «людина, яка жінка?», Питання 2 - «чи живе людина в червоному будинку?», Питання 3 - «чи живе людина в місті, починаючи з А чи людина живе в місті, починаючи з B? ', А питання 4 - "чи живе людина на нумерованій вулиці?".

Коли запит Q заходить, я бачу, чи є його qi відповідати будь-якому з попередньо обчислених питань qjЯ визначив. Якщо так, то я отримую перетин цих відповідей і задаю питанняQна цьому підмножині перетину. Наприклад, якщо питання "люди, які живуть у червоному будинку на острові", то виявимо, що "людина живе в червоному будинку" вже попередньо обчислено, тож лише питання пошуку підмножини тих, хто також живе на острові.

Я можу отримати модель витрат, переглянувши набір багатьох Q і перевірте, щоб побачити розмір відповідного Нбл. Я хочу мінімізувати середній розмірНбл.

Питання в тому, як я оптимізую підбір можливих qjприйняти це фіксоване дерево рішень? Я спробував GA, але це було повільно сходитися. Можливо, тому, що в моєму просторі можливостей є кілька мільйонівqj. Я придумав жадібний метод, але результатом я не задоволений. Це теж дуже повільно, і я думаю, що я оптимізую неправильну річ.

На які існуючі дослідження я повинен шукати ідеї?


Чи ваші дані виправлені - збираєтеся додати більше прикладів? Якщо не - краще спробуйте створити дерево вирішення, починаючи з підзапиту з найвищою інформаційною ентропією. Ви також можете вибрати деяку мінімальну ентропію, де зупинити рішення на основі дерева та здійснити пошук з | S | .t часу, коли S досить малий.
Антон

Відповіді:


1

Я знайшов рішення (я поставив запитання) - використовувати накладене кодування, а точніше, варіант Zatocoding, який має кращу підтримку ієрархічних дескрипторів.

Метод, який я застосував, походить від «Ефективний дизайн пошуку хімічної структури. I. Екрани, Альфред Фельдман та Луї Ходес, Дж. Хем. Інф. Обчислення. Sci., 1975, 15 (3), стор 147–152.

Неієрархічне рішення - дивитися на щільність інформації. Кожен дескриптор буде призначенийсi=-лог2(fi) біт куди fi - частота в наборі даних (0<f_i <= 1,0). Обчисліть загальну кількість бітD (розмір дерева рішень) з використанням D=(сifi)/Мc де Мc - коефіцієнт стиснення Мурса 0,69 (від логе2). Визначивши загальну кількість бітів для використання, виберітьсi біти випадковим чином для кожного дескриптора для призначення бітів.

Ієрархічне рішення від Фельдмана та Ходеса ​​замінює сi=-лог2(fi)для дескрипторів, які є підмножиною інших дескрипторів. У такому випадку використовуйтесi=-лог2(fi/гi) де гi- частота найменш частого батьків. Крім того, виконуючи призначення бітів, не вибирайте біти, які також використовуються батьківським розрядом.

Існує проблема, як підібрати правильні дескриптори, але це буде залежно від домену.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.