Funkcia straty pre binárny klasifikátor nevyváženej triedy v toku Tensor
Snažím sa aplikovať hlboké učenie na problém binárnej klasifikácie s vysokou nerovnováhou tried medzi cieľovými triedami (500k, 31K). Chcem napísať vlastnú funkciu straty, ktorá by mala byť: minimalizácia (100 - ((predikovaný_smallerclass)/(total_smallerclass)) * 100)

Oceňujem akékoľvek rady, ako môžem vytvoriť túto logiku.
6 odpovedí
Kód, ktorý ste navrhli, sa mi zdá nesprávny. Chudnutie by sa malo vynásobiť váhou, súhlasím.
Ale ak vynásobíte guľatinu váhou triedy, skončite s:
druhé volebné obdobie sa nerovná:
Aby sme to ukázali, môžeme poslednú prepísať ako:
Takže tu je kód, ktorý navrhujem:
Do funkcie straty môžete pridať váhy triedy vynásobením protokolov. Pravidelná strata krížovej entropie je nasledovná:
Vynásobením protokolov teda predefinujte predpovede každej triedy podľa ich hmotnosti.
K dispozícii je štandardná funkcia straty, ktorá podporuje váhy dávok:
Ak sa majú váhy prevádzať napríklad z hmotnosti triedy na hmotnosť (vo formáte [lot_size]). Tu nájdete dokumentáciu .
Aj keď špecifikácia skalárnej straty zníži stratu v celej dávke, niekedy chceme zmeniť veľkosť vzorky straty na dávku. Napríklad, ak máme určité príklady, na ktorých záleží viac, aby sme sa dostali správne, možno by sme chceli mať vyššiu stratu ako iné vzorky, na ktorých chybách záleží menej. V tomto prípade môžeme poskytnúť váhový vektor dĺžky Lot_size, ktorý vedie k strate pre každú vzorku v dávke, ktorá je zmenšená zodpovedajúcim váhovým prvkom. Zvážte napríklad prípad problému s klasifikáciou, v ktorom chceme maximalizovať presnosť, ale zaujíma nás predovšetkým získanie vysokej presnosti pre konkrétnu triedu:
Musel som pracovať s podobným nevyváženým súborom údajov s niekoľkými triedami, a tak som sa s tým prepracoval, dúfam, že to niekomu, kto hľadá podobné riešenie, pomôže:
Vo vašom tréningovom module to platí:
To zodpovedá vašej definícii modelovej triedy: