Prosím o nasměrování v neuronových sítích

Prosím o nasměrování v neuronových sítích
« kdy: 16. 04. 2024, 19:28:01 »
Zdravím,

mám takovou úlohu, která bych řekl že je jako dělaná na neuronové sítě, ale už je to pár let, co jsem to naposledy viděl ještě na VŠ, a potřeboval bych nasměrovat.

Potřeboval bych sestrojit neuronovou síť, pro začátek s jedním neuronem, načež tato síť je schopná se učit.

Úloha kterou řeším:

Mám program na ohodnocení zmetkovistosti Produktu. Program musí být schopen sám ohodnotit míru zmetkovitosti produktu.

Produkt si v programu ohodnotím celkem 15ti metrikami, každá metrika vrátí Score od 0.0 do 1.0. Čím vyšší je Score z metriky, tím vyšší podezření na výskyt zmetku.

Na konci se součet všech Score sečtou a pokud překonají práh, Produkt na vstupu je označen jako Zmetek a bude vyřazen z prodeje.

Mám trénovací množinu dat se 100 000 Produkty, z nich 500 jsou Zmetky. Hledám nastavení vah pro jednotlivé Scores takové, že dosáhnu co nejlepší odhalení a vyřazení Zmetků při co nejnižším vyřazení validních Prodktů.

---

Představuju si tedy že sestrojím jednoduchou neuronovou síť s 1 neuronem, tato bude mít celkem 15 vstupů a 1 výstup. Když vložím do Neuronky Scores z metrik, tak neuronka na výstupu vrátí číslo. Pokud je toto číslo vyšší než 1 a Produkt je zmetek, tak neuronku "potrestám". Pokud je číslo vyšší než 1 a Produkt je zmetek, tak neuronku "pochválím".

Tedy domnívám se že se jedná o Neuronovou síť s tzv, Backpropagation. Buďto si ji naimplementuju sám, nebo v případě doporučení knihovny bych to potřeboval mít pro Javu.

Díky za pomoc



Re:Prosím o nasměrování v neuronových sítích
« Odpověď #1 kdy: 16. 04. 2024, 19:55:40 »
S jedním neuronem, žádné skryté uzly... není tohle spíš téma na primitivní korelační/regresní analýzu?
Ale jako seznamovací úloha pro trénování neuronky to taky nezní špatně, ono není od věci začínat s technologií hezky "od píky" :-) Napomáhá to porozumění vnitřnostem...
Sry za nekonstruktivní odpověď.

Re:Prosím o nasměrování v neuronových sítích
« Odpověď #2 kdy: 16. 04. 2024, 20:11:30 »
Máš extrémně nevyvážený dataset (99 500 negativních samplů a 500 pozitivních samplů). Na tohle se ti bude neuronka trénovat špatně, budeš muset laborovat s vhodnou loss funkcí, výběru samplů do batche... Ne že by to něšlo, ale pokud s tím nemáš zkušenost, asi nedostaneš dobrý výsledek.

Použij rozhodovací stromy, na tuto úlohu se hodí a budou fungovat out of the box i pro takto nevyvážený dataset. Zkus např XGBoost: https://xgboost.readthedocs.io/en/stable/

Re:Prosím o nasměrování v neuronových sítích
« Odpověď #3 kdy: 16. 04. 2024, 20:33:29 »
S jedním neuronem, žádné skryté uzly... není tohle spíš téma na primitivní korelační/regresní analýzu?
Ale jako seznamovací úloha pro trénování neuronky to taky nezní špatně, ono není od věci začínat s technologií hezky "od píky" :-) Napomáhá to porozumění vnitřnostem...
Sry za nekonstruktivní odpověď.

Jak tam můžu dát regresní analýzu, když mám 15 vstupních proměnných? Když už tak evoluční algortimus hledání maxima, ale regresení analýzu to nevím.

Re:Prosím o nasměrování v neuronových sítích
« Odpověď #4 kdy: 16. 04. 2024, 20:33:57 »
Máš extrémně nevyvážený dataset (99 500 negativních samplů a 500 pozitivních samplů). Na tohle se ti bude neuronka trénovat špatně, budeš muset laborovat s vhodnou loss funkcí, výběru samplů do batche... Ne že by to něšlo, ale pokud s tím nemáš zkušenost, asi nedostaneš dobrý výsledek.

Použij rozhodovací stromy, na tuto úlohu se hodí a budou fungovat out of the box i pro takto nevyvážený dataset. Zkus např XGBoost: https://xgboost.readthedocs.io/en/stable/

Díky za tip, zkusím.


_Jenda

  • *****
  • 1 606
    • Zobrazit profil
    • https://jenda.hrach.eu/
    • E-mail
Re:Prosím o nasměrování v neuronových sítích
« Odpověď #5 kdy: 16. 04. 2024, 21:40:37 »
Jak tam můžu dát regresní analýzu, když mám 15 vstupních proměnných? Když už tak evoluční algortimus hledání maxima, ale regresení analýzu to nevím.
Lineární regrese více vstupních proměnných, ne? https://en.wikipedia.org/wiki/Linear_regression#Simple_and_multiple_linear_regression

Re:Prosím o nasměrování v neuronových sítích
« Odpověď #6 kdy: 17. 04. 2024, 06:33:38 »
Mě regresní analýza smysl nedává. Dává mi smysl evoluční algoritmus, abych nastavil váhy pro moje metriky.

Re:Prosím o nasměrování v neuronových sítích
« Odpověď #7 kdy: 17. 04. 2024, 21:31:11 »
Mě regresní analýza smysl nedává. Dává mi smysl evoluční algoritmus, abych nastavil váhy pro moje metriky.

Ale jo souhlas. Lineární regrese má primitivní model = dost omezující předpoklady. Pokud součástí té hledané hodnotící funkce má být nějaký práh nebo jiný typ nelinearity, nebo může být třeba prohřešek proti vzájemné kolmosti vstupních proměnných, nevyjde lineární regrese hezky nebo nedá významné výsledky. Koukal jsem i na nějaké nelineární regresní modely, ne že bych jim extra rozuměl, opět patrně spousta omezení... pro dané zadání nakonec genetický algoritmus a neuronka samozřejmě nezní špatně.

Re:Prosím o nasměrování v neuronových sítích
« Odpověď #8 kdy: 18. 04. 2024, 22:00:06 »
To je snad naprosto učebnicový příklad na logistickou regresi, ne? Pokud ty nezávisle proměnné jsou spojité, doporučuji je ještě prohnat nějakým automatickým binningem a zkombinovat s weight of evidence transformací.

Dobrá alternativa jsou ty decision trees/random forests, třeba zmíněný xgboost. Ale výsledek už je trochu blackbox a inference nejde napsat jako formule v Excelu na jeden řádek.