Tak, masz rację.
Ta reprezentacja na pewno pracować z vowpal Wabbit, ale pod pewnymi warunkami, może nie być optymalne (to zależy).
Do reprezentowania niż uporządkowane, zmiennych jakościowych (z dyskretnych wartości), przy czym średnia vowpal Wabbit trik jest zastosowanie logicznych/wartości logiczne dla każdego możliwego (nazwa, wartość) kombinacji (np person_is_good, color_blue, color_red
). Powodem tego jest to, że vw
domyślnie przyjmuje wartość 1
wszędzie tam, gdzie brakuje wartości. Nie ma praktycznej różnicy między wartościami color_red, color=red
, , a nawet (color,red)
i color_red:1
z wyjątkiem lokalizacji skrótów w pamięci. Jedynymi znakami, których nie można użyć w nazwie zmiennej, są specjalne separatory (:
i |
) oraz białe znaki.
Uwaga dotycząca terminologii: ta sztuczka polegająca na zamianie każdej pary (funkcja + wartość) na osobną funkcję jest czasami nazywana "Jednym z gorących kodowań".
Ale w tym przypadku wartości zmiennych mogą nie być "ściśle kategoryczne". Mogą to być:
- ściśle uporządkowane, np (
low < basic < high < v_high
)
- Przypuszczalnie mają monotoniczny zależność z etykietą starasz się przewidzieć
więc przez czyniąc je "ścisłymi kategorycznymi" (moje określenie zmiennej o dyskretnym zakresie, który nie ma dwóch powyższych właściwości), możesz tracić pewne informacje kapelusz może pomóc w nauce.
W danym przypadku można uzyskać lepszy wynik, konwertując wartości na wartości liczbowe, np. (1, 2, 3, 4
) dla edukacji. ja.e można użyć coś takiego:
1 |person education:2 income:1 social_standing:2
0 |person education:1 income:2 social_standing:3
1 |person education:3 income:1 social_standing:1
0 |person education:4 income:2 social_standing:2
Zestaw szkolenie w pytaniu powinny działać prawidłowo, ponieważ nawet podczas konwersji wszystkich zmiennych dyskretnych do zmiennych logicznych jak ty, vw
powinien własny odkryć zarówno kolejności, a monotoniczności z etykietą z samych danych, o ile te dwie właściwości są prawdziwe i istnieje wystarczająca ilość danych do ich dedukcji.
Oto krótki oszustwo arkuszy dla zmiennych kodujących w vowpal Wabbit:
Variable type How to encode readable example
------------- ------------- ----------------
boolean only encode the true case is_alive
categorical append value to name color=green
ordinal+monotonic :approx_value education:2
numeric :actual_value height:1.85
Uwagi końcowe:
- W
vw
wszystkie zmienne są numeryczne. Kodowanie trików jest po prostu praktycznymi sposobami, aby pojawiać się w postaci jako categorical
lub . Zmienne Boolean są po prostu numeryczne 0 lub 1; Zmienne kategorialne mogą być zakodowane jako boolean: name + value: 1.
- Każda zmienna, której wartość nie jest monotoniczna z etykietą, może być mniej przydatna przy kodowaniu liczbowym.
- Każda zmienna, która nie jest liniowo powiązana z etykietą, może korzystać z nieliniowej transformacji przed treningiem.
- Każda zmienna o wartości zerowej nie będzie różnicy do modelu (wyjątek: gdy opcja
--initial_weight <value>
jest używany), więc może być usunięty z treningu ustawiony
- Podczas analizowania funkcji, tylko
:
jest uważany za szczególny separator (między nazwą zmiennej a jej wartością numeryczną) wszystko inne jest uważane za część nazwy, a cały ciąg nazwy jest mieszany do miejsca w pamięci. Brakująca część :<value>
implikuje :1
Edycja: Co imieniny obowiązuje?
Przestrzenie nazw są poprzedzone nazwami funkcji z separatorem znaków specjalnych, dzięki czemu mapują one identyczne funkcje do różnych pozycji skrótu. Przykład:
|E low |I low
jest zasadniczo równoważna (bez spacji nazwa płaskiej przykład):
| E^low:1 I^low:1
Głównym zastosowaniem imienin przestrzeni jest łatwo przedefiniować wszystkich członków nazwy miejsca na coś innego , zignoruj pełną nazwę obszaru funkcji, krzyżuj cechy przestrzeni nazw z innymi itd. (zobacz opcje: -q
, --cubic
, --redefine
, , --keep
).
Dzięki. Bardzo wyraźnie. Z wyjątkiem tego, że boolean (pierwszy wiersz arkusza oszukiwania) czy rozumiem logiczny lub binarny? Oznacza to, że jeśli jest to plik binarny (z dowolnymi dwiema wartościami i niekoniecznie w znaczeniu Prawda/Fałsz), nie będę musiał poprzedzać kolumny nazwą kolumny, ale wystarczy wpisać wartość taką, jaka jest, ale w pozostałych trzech przypadkach nazwy kolumn będą musiały poprzedza wartości w jakiejś formie. – user3282777
Pierwszy wiersz "boolean" oznacza logiczny: albo true lub false (0 lub 1). Druga linia: kategoryczne może przyjmować dowolną liczbę dyskretnych wartości, w tym 2. – arielf
Dzięki. Wszystkie te wyjaśnienia znacznie ułatwiają korzystanie z Vowpal Wabbit. – user3282777