В vowpal пространства имен wabbit используются для удобного создания функций взаимодействия «на лету» во время выполнения без необходимости их предварительного объявления.
Простой пример формата без пространства имен:
1 | a:2 b:3
где 1
— метка, а a
, b
— обычные входные объекты.
Обратите внимание, что после |
есть пробел.
Сравните приведенное выше с использованием двух пространств имен x
и y
(обратите внимание на отсутствие пробела между разделителем |
и пространствами имен):
1 |x a:2 |y b:3
Этот пример по сути эквивалентен (за исключением расположения хэшей функций) первому примеру. В нем по-прежнему есть две функции с теми же значениями, что и в исходном примере. Разница в том, что теперь с этими пространствами имен мы можем пересекать функции, передавая параметры в vw
. Например:
vw -q xy
будет генерировать дополнительные функции на лету, пересекая все функции в пространстве имен x
со всеми функциями в пространстве имен y
. Имена автоматически сгенерированных функций будут конкатенацией имен из двух пространств имен, а значения будут произведениями их соответствующих значений. В этом конкретном случае наш набор данных будет иметь одну дополнительную функцию: ab:6
(*)
Очевидно, это очень простой пример, представьте, что у вас есть пример с 3 функциями в пространстве имен:
1 |x a:2 b:3 c:5
Добавив -q xx
к vw
, вы можете автоматически создать 6 дополнительных функций взаимодействия: aa, ab, ac, bb, bc, cc
на лету. И если бы у вас было 3 пространства имен, скажем: x, y, z
, вы могли бы пересечь любое из них (или любое желаемое подмножество): -q xx -q xy -q xz -q yz -q yy -q zz
в командной строке, чтобы получить все возможные взаимодействия между отдельными наборами функций. .
Вот и все. Это мощная функция, позволяющая экспериментировать и добавлять функции взаимодействия на лету.
Есть несколько опций, которые принимают (первые буквы) пространств имен в качестве аргументов, среди них:
-q
--cubic
--ignore
--keep
--redefine (very new)
--lrq
Дополнительные сведения см. в вики аргументов командной строки vw.
(*) На практике имена объектов будут иметь пространства имен с разделителем ^
между ними, поэтому фактическая хешированная строка будет x^a^y^b:6
, а не ab:6
(вы можете проверить это, используя параметр --audit
), но это всего лишь деталь.
person
arielf - Reinstate Monica
schedule
19.02.2015