Otázka:
Proč převzorkování?
Jessica
2014-11-03 01:25:07 UTC
view on stackexchange narkive permalink

Předpokládám, že se chci naučit klasifikátor, který předpovídá, zda je e-mail spam. A předpokládejme, že pouze 1% e-mailů je spam.

Nejjednodušší věcí by bylo naučit se triviální klasifikátor, který říká, že žádný z e-mailů není spam. Tento klasifikátor by nám poskytl 99% přesnost, ale nenaučil by se nic zajímavého a měl by 100% míru falešných negativů.

Abych tento problém vyřešil, lidé mi řekli „převzorkovat“, nebo se učit na podmnožině dat, kde 50% příkladů je spam a 50% není spam.

Ale mám strach z tohoto přístupu, protože jakmile tento klasifikátor postavíme a začneme ho používat na skutečný soubor e-mailů (na rozdíl od testovací sady 50/50), může předvídat, že mnoho e-mailů je spam, i když ve skutečnosti nejsou. Jen proto, že se v datové sadě zvyklo vidět mnohem více spamu, než ve skutečnosti je.

Jak tedy tento problém vyřešíme?

(„Převzorkování“ nebo opakování pozitivních příkladů tréninku vícekrát, takže 50% dat jsou pozitivní příklady školení, zdá se, že trpí podobnými problémy.)

šest odpovědi:
Marc Claesen
2014-11-03 02:38:13 UTC
view on stackexchange narkive permalink

Většina klasifikačních modelů ve skutečnosti nepřináší binární rozhodnutí, ale spíše hodnotu kontinuálního rozhodování (například modely logistické regrese vydávají pravděpodobnost, SVM vydávají podepsanou vzdálenost k nadrovině, ...). Pomocí rozhodovacích hodnot můžeme hodnotit testované vzorky, od „téměř jistě pozitivních“ po „téměř jistě negativní“.

Na základě rozhodovací hodnoty můžete vždy přiřadit určitý limit, který konfiguruje klasifikátor takovým způsobem, že určitá část dat je označena jako pozitivní. Určení vhodné prahové hodnoty lze provést pomocí křivek modelu ROC nebo PR. Můžete hrát s rozhodovacím prahem bez ohledu na vyvážení použité v tréninkové sadě. Jinými slovy, techniky jako vzestup nebo převzorkování jsou k tomu ortogonální.

Za předpokladu, že je model lepší než náhodný, můžete intuitivně vidět, že zvýšení prahové hodnoty pro pozitivní klasifikaci (což vede k less positive predictions) zvyšuje přesnost modelu za cenu nižšího odvolání a naopak.

Považujte SVM za intuitivní příklad: hlavní výzvou je naučit se orientaci oddělovací nadroviny. Up-nebo převzorkování může s tím pomoci (doporučuji upřednostňovat převzorkování před převzorkováním). Když je orientace nadroviny dobrá, můžeme hrát s rozhodovacím prahem (např. Podepsaná vzdálenost k nadrovině) a získat požadovaný zlomek kladných předpovědí.

Díky, to bylo velmi užitečné.Jak víte, jaká by měla být hranice?Chcete nastavit prahovou hodnotu tak, aby se podíl pozitivních předpovědí rovnal podílu pozitivních příkladů v populaci?
@Jessica Jak jsem již zmínil, pohodlný způsob výběru prahové hodnoty je pomocí křivek provozní charakteristiky přijímače (ROC).Každá prahová hodnota odpovídá bodu v prostoru ROC.Když zakreslíte křivku, můžete zvolit prahovou hodnotu podle toho, co vyhovuje vašim konkrétním potřebám.(jako alternativu můžete použít také křivky pro přesné vyvolání)
Nesouhlasím s tím, že vzdálenost zkušebního bodu od hyperplánu naučeného SVM je jakýmkoli měřítkem spolehlivosti předpovědi.Bylo vyvinuto úsilí k zajištění důvěryhodnosti predikce výstupu SVM.Vyhledejte například Plattovo měřítko.Ale nedělá to tak dobře jako klasifikace gaussovských procesů (spolehlivost predikce wrt).
@Seeda Platt škálování je o hodnotách rozhodování o botách do pravděpodobností.Plattovo škálování je stejně jednoduché jako spouštění (škálovaných) rozhodovacích hodnot prostřednictvím logistické funkce, která se monotónně zvyšuje, a proto vůbec neovlivňuje hodnocení (= spolehlivost).Vše, co dělá, je mapování výstupu z $ \ mathbb {R} $ na $ [0,1] $.
@MarcClaesen Nenavrhuji použít měřítko Platt;je to „pokus“ generovat důvěryhodnost predikce, ale existují lepší alternativy.Říkám jen to, že použití vzdálenosti k hyperplánu není smysluplné a přezkoumávání literatury, nikdy jsem se s tím nesetkal, i když je to první věc, která člověka napadne při pokusu generovat důvěry ze SVM.
Uveďte 1 příklad míry spolehlivosti, která zahrnuje nemonotonickou transformaci hodnot rozhodnutí (všimněte si, že důvěra není synonymem pro pravděpodobnost).Zjistíte, že téměř všechna běžná mapování jsou jednoduché monotónní transformace rozhodovacích hodnot (alespoň vše, o čem vím).To nepřidává žádné další informace, tj. Rozhodovací hodnoty * jsou * mírou spolehlivosti.To znamená, že použití diskrétního modelu, jako je SVM, když ve skutečnosti chcete spojitý, je přinejmenším diskutabilní;i když je to v praxi velmi běžné.
Měl by to být nápad nad / snížit vzorek, když je pozitivní třída opravdu vzácná (myslím něco jako 0,2%)?Myslím si, že v takových případech klasifikátor nemá dostatek pozitivních případů, aby se naučil vzorce
charles
2014-11-03 02:49:53 UTC
view on stackexchange narkive permalink

Jako vždy @Marc Claesen jako skvělá odpověď.

Jen bych dodal, že klíčovým konceptem, který zřejmě chybí, je koncept nákladové funkce . V každém modelu máte implicitní nebo explicitní cenu falešných negativů až falešných poplachů (FN / FP). Pro popsaná nevyvážená data je často ochoten mít poměr 5: 1 nebo 10: 1. Existuje mnoho způsobů zavedení nákladových funkcí do modelů. Tradiční metodou je uvalení meze pravděpodobnosti na pravděpodobnosti produkované modelem - to funguje dobře pro logistickou regresi.

Metoda používaná pro přísné klasifikátory, které přirozeně nevykazují odhady pravděpodobnosti výstupu, je podvzorkování většinové třídy v poměru, který vyvolá nákladovou funkci, o kterou se zajímáte. Pamatujte, že pokud vzorkujete v poměru 50/50, vyvolávají libovolnou nákladovou funkci. Funkce nákladů je odlišná, ale stejně libovolná, jako byste vzorkovali při míře prevalence. Často můžete předpovědět vhodný vzorkovací poměr, který odpovídá vaší nákladové funkci (obvykle to není 50/50), ale většina odborníků, se kterými jsem mluvil, zkusí pár vzorkovacích poměrů a vybere ten, který je jejich nákladové funkci nejblíže.

Díky, že jste to vznesli, to je zajímavý nápad, o kterém jsem neuvažoval.Jak zjistíte, který vzorkovací poměr odpovídá vaší nákladové funkci?
Zach
2014-12-05 00:45:42 UTC
view on stackexchange narkive permalink

Skutečným problémem zde je vaše volba metriky:% přesnost je špatná míra úspěchu modelu na nevyváženém datovém souboru (z přesně toho důvodu, který zmiňujete: v tomto případě je triviální dosáhnout přesnosti 99%).

Vyrovnávání datové sady před přizpůsobením modelu je špatným řešením, protože ovlivňuje váš model a (ještě horší) vyhodí potenciálně užitečná data.

Vyvažování metriky přesnosti je mnohem lepší , spíše než vyvažování dat. Například při hodnocení modelu můžete použít vyváženou přesnost: (chyba pro kladnou třídu + chyba pro zápornou třídu) / 2 . Pokud předpovídáte všechny kladné nebo záporné hodnoty, bude tato metrika 50% , což je pěkná vlastnost.

Podle mého názoru je jediným důvodem pro down-sample, když máte příliš mnoho dat a nevejde se do vašeho modelu. Mnoho klasifikátorů (například logistická regrese) si poradí s nevyváženými daty.

Mohu se zeptat, jak si klasifikátoři vedou dobře s nevyváženými daty?Možná jsou to jen moje data, ale zkusil jsem na svých tréninkových datech trénovat logistickou regresi, náhodné lesy a modely C5.0, nevyvážené a vyvážené pomocí smíšeného over / undersampling.Modely trénované na nevyvážených datech fungují na mé testovací sadě mnohem horší než modely trénované na vyvážených datech.
je něco jako práh, když říkáte, že jediným důvodem pro down-sample je, když máte příliš mnoho dat a nemůžete se vešly do vašeho modelu ._?
RobertF
2014-12-04 23:33:09 UTC
view on stackexchange narkive permalink

Odpovědi na Jessičinu otázku přímo - jedním z důvodů převzorkování je, když pracujete s velkou datovou sadou a čelíte limitům paměti v počítači nebo prostě chcete zkrátit dobu zpracování. Převzorkování (tj. Odebrání náhodného vzorku bez náhrady) z negativních případů sníží datovou sadu na zvládnutelnější velikost.

Zmínili jste ve své otázce použití „klasifikátoru“, ale neuvedli jste, který z nich. Jedním klasifikátorem, kterému se možná budete chtít vyhnout, jsou rozhodovací stromy. Při spuštění jednoduchého rozhodovacího stromu na datech vzácných událostí často zjistím, že strom vytváří pouze jeden kořen, protože má potíže s rozdělením tak málo pozitivních případů do kategorií. Mohou existovat sofistikovanější metody ke zlepšení výkonu stromů pro vzácné události - o žádném z mých hlav nevím.

Proto je lepší použít logistickou regresi, která vrací souvislou predikovanou hodnotu pravděpodobnosti, jak navrhuje Marc Claesen. Pokud provádíte logistickou regresi na datech, koeficienty zůstávají nestranné, i když je méně záznamů. Budete muset upravit intercept, $ \ beta_0 $, z vaší převzorkované regrese podle vzorce od Hosmera a Lemeshow, 2000:

$$ \ beta_c = \ beta_0 - \ log \ left (\ frac {p _ +} {1-p _ +} \ right) $$

kde $ p _ + $ je zlomek pozitivních případů v populaci předběžného převzorkování.

Vyhledání preferovaného Práh ID spamu s ROC lze provést tak, že nejprve vyhodnotíte kompletní datovou sadu s modelovými koeficienty vyladěnými na převzorkovanou datovou sadu a poté seřadíte záznamy od nejvyšší po nejnižší předpokládanou pravděpodobnost spamu. Dále vezměte nejvyšší zaznamenané záznamy $ n $, kde $ n $ je jakákoli prahová hodnota, kterou chcete nastavit (100, 500, 1000 atd.), A poté vypočítejte procento falešně pozitivních případů v horních případech $ n $ a procento falešně negativních případů ve zbývající nižší úrovni případů $ N $ - $ n $ za účelem nalezení správné rovnováhy citlivosti / specificity, která odpovídá vašim potřebám.

giuseppe
2014-11-03 20:18:02 UTC
view on stackexchange narkive permalink

Samozřejmě klasifikace všeho jako „ne spamu“ vám umožňuje říci, že vzhledem k 100 e-mailům klasifikuje správně 99 z nich, ale také klasifikuje jako „ne spam“ jediný označený jako spam (100% False Positive) Ukazuje se, že metrika, kterou jste vybrali k vyhodnocení algoritmu, se nepřizpůsobuje. Toto video ilustruje tento koncept.

Zhruba řečeno, vyvážení datové sady umožňuje vážit chyby při nesprávné klasifikaci. Algoritmus, který pravděpodobně využívá nevyváženou tréninkovou sadu, se pravděpodobně nenaučí rozlišovat od funkcí, protože by nepřikládal velký význam skutečnosti, že nesprávně klasifikuje data třídy sporý.

Ahmad Hassanat
2018-12-11 04:55:34 UTC
view on stackexchange narkive permalink

Nechtěl bych přejít na převzorkování ani převzorkování, protože oba triky učí algoritmus učení, avšak pokud byla data nevyvážená, míra přesnosti se stává neplatnou nebo neinformativní, proto je lepší použít opatření přesnosti a odvolání, obojí závisí hlavně naTP (ve vašem případě správně klasifikované spamy), to dává dobrou představu o skutečném výkonu vašeho systému z hlediska detekce spamů bez ohledu na počet negativních příkladů.



Tyto otázky a odpovědi byly automaticky přeloženy z anglického jazyka.Původní obsah je k dispozici na webu stackexchange, za který děkujeme za licenci cc by-sa 3.0, pod kterou je distribuován.
Loading...