Download as pdf or txt
Download as pdf or txt
You are on page 1of 7

Vektorizáló algoritmusok

TF-IDF
A TF-IDF (Term Frequency-Inverse Document Frequency) vektorizáló egy fontos eszköz a szövegek
reprezentációjára a természetes nyelvfeldolgozás területén. A TF-IDF vektorizáló feladata, hogy
numerikus vektorokat hozzon létre a szövegekből, amelyeket könnyen lehet felhasználni gépi tanulási
algoritmusokkal.

A TF-IDF vektorizálás két fő összetevőre osztható: a TF (Term Frequency) és az IDF (Inverse Document
Frequency).

A TF (Term Frequency) azt méri, hogy egy adott szó milyen gyakran fordul elő egy dokumentumban.
Az alapötlet az, hogy a fontos szavak nagyobb valószínűséggel jelennek meg többször egy adott
szövegben. Ezért a TF érték a szó előfordulásának gyakoriságát mutatja a dokumentumban.

Az IDF (Inverse Document Frequency) azt méri, hogy egy adott szó mennyire jellemző egy adott
dokumentumra a teljes dokumentumhalmaz alapján. Az IDF érték magas lesz, ha a szó ritkán fordul
elő a dokumentumok többségében, és alacsony lesz, ha a szó gyakori a dokumentumokban. Az IDF
segít azonosítani azokat a szavakat, amelyek jellemzőek egy adott dokumentumra, és
megkülönböztetik azt a többi dokumentumtól.

A TF és IDF értékeket együttesen használva a TF-IDF vektorizáló súlyozott numerikus vektort hoz létre
minden szóhoz a dokumentumban. A vektor elemei a dokumentum szavainak súlyozott jelenlétét
reprezentálják. Az így létrehozott vektorokat gyakran felhasználják a szöveges dokumentumok
osztályozására, klaszterezésére vagy információkinyerésre gépi tanulási algoritmusokkal.

Count Vectorizer
A CountVectorizer egy olyan szövegbányászati eszköz, amelyet a term frekvencia alapú jellemzők
kinyerésére és vektorizálására használnak. A CountVectorizer átalakítja a szöveges adatokat olyan
vektorokká, amelyeket gépi tanulási algoritmusok használhatnak.

A CountVectorizer működése a következő lépésekből áll:

Tokenizáció: Az algoritmus először tokenekre bontja az adott szöveget. A tokenek általában a szavak
vagy a szövegben található más jelentéssel bíró egységek, például a szógyökerek.

Szózsák létrehozása: A CountVectorizer létrehoz egy szózsákot, amely tartalmazza a dokumentum


összes egyedi tokenjét. A szózsák egy olyan halmaz, amelyben minden egyedi token egy indexszel van
hozzárendelve.

Szógyakoriság számítása: Az algoritmus kiszámolja, hogy az egyes dokumentumokban hány


alkalommal fordul elő minden egyedi token a szövegben. Ez meghatározza a tokenek számlálását vagy
gyakoriságát minden dokumentumban.

Vektorizálás: A CountVectorizer létrehoz egy vektort minden dokumentumhoz, ahol minden vektor
eleme a dokumentumhoz tartozó tokenek gyakorisága. Az elemek értékei általában a tokenek
előfordulási gyakoriságát vagy számlálását tartalmazzák.

A CountVectorizer előnye, hogy egyszerű és hatékony módszert kínál a szöveges adatok


számszerűsítésére és vektorizálására. Az így létrejövő vektorokat gépi tanulási algoritmusokkal
kombinálva lehet alkalmazni az osztályozás, csoportosítás vagy más szövegalapú feladatokra.
Azonban a CountVectorizer csak a szöveges adatokban található szógyakoriságot veszi figyelembe, és
figyelmen kívül hagyja a szöveg kontextusát vagy a szavak sorrendjét. Más fejlettebb módszerek, mint
például a TF-IDF (Term Frequency-Inverse Document Frequency) vektorizálás, figyelembe veszik
ezeket a tényezőket is.

Hash Vectorizer
A HashVectorizer egy vektorizáló eszköz, amelyet szövegbányászatban és gépi tanulásban használnak.
A HashVectorizer átalakítja a szöveges adatokat olyan vektorokká, amelyeket a gépi tanulási
algoritmusok használhatnak.

A HashVectorizer működése a következő lépésekből áll:

Tokenizáció: Az algoritmus először tokenekre bontja az adott szöveget. A tokenek lehetnek például
szavak vagy más jelentéssel bíró egységek, mint például szógyökerek.

Hash kódolás: A HashVectorizer használ egy hash függvényt, amely a tokeneket egyedi számértékké
alakítja. A hash függvény véletlenszerűen osztja el a tokeneket különböző indexek között.

Vektorizálás: Az algoritmus létrehoz egy vektort minden dokumentumhoz, ahol minden vektor eleme
az egyedi hash kódok indexeihez tartozik. Az elemek értékei általában a tokenek előfordulási
gyakoriságát vagy számlálását tartalmazzák.

A HashVectorizer előnye, hogy egyszerű és hatékony módszert kínál a szöveges adatok


vektorizálására. A hash függvény segítségével az algoritmus elkerüli a szózsák létrehozásával járó
memóriahasználatot, mivel csak az aktuálisan szükséges számértékeket tárolja.

Azonban fontos megjegyezni, hogy a HashVectorizer együtt járhat az ún. hash ütközésekkel. Mivel a
hash függvény véletlenszerűen osztja el a tokeneket különböző indexek között, néhány token
ugyanarra az indexre kerülhet. Ez potenciálisan csökkentheti a vektorizáció pontosságát és
információveszteséget okozhat.

A HashVectorizer gyakran használatos, amikor nagy méretű vagy ritka szöveges adathalmazokkal
dolgoznak, és a memóriahasználat vagy a számítási erőforrások korlátozottak. Fontos azonban
mérlegelni a hash ütközések lehetőségét és figyelembe venni a vektorizáció pontosságát az adott
feladatban.

Word2Vec
A Word2Vec egy népszerű nyelvi beágyazási (word embedding) algoritmus, amely a szavakat
vektorokká alakítja úgy, hogy a vektorok tartalmazzák a szavak közötti szemantikai és szintaktikai
kapcsolatokat. Az algoritmus célja, hogy a szavakat olyan vektorokkal reprezentálja, amelyek megőrzik
a szemantikai hasonlóságot és a szintaktikai kapcsolatokat a szavak között.

A Word2Vec algoritmus két fő variánsa létezik: a Continuous Bag-of-Words (CBOW) és a Skip-gram.


Mindkét variáns neurális hálózatokat használ a szóbeágyazások tanítására.

A CBOW algoritmusban a környező szavak alapján próbáljuk megjósolni a középső szót. A hálózat
bemenete a környező szavak vektorai, és a kimenete a középső szó vektora.

A Skip-gram algoritmusban a középső szó alapján próbáljuk megjósolni a környező szavakat. A hálózat
bemenete a középső szó vektora, és a kimenete a környező szavak vektorai.

Mindkét esetben a neurális hálózatot tanítják a korpuszon, és a súlyokat úgy állítják be, hogy a
beágyazott vektorok minél jobban reprezentálják a szemantikai és szintaktikai kapcsolatokat.
Az így tanított Word2Vec modelleknek számos felhasználási területe van a természetes
nyelvfeldolgozásban (NLP). Például a Word2Vec vektorok használhatók a szavak közötti hasonlóság
meghatározására, a szavak csoportosítására, a szóhasználat elemzésére és a szövegek osztályozására.
A Word2Vec algoritmus lehetővé teszi, hogy a gépi tanulási modellek kifejezzebbé tegyék a szövegek
tartalmát és a szókincs reprezentációját.

Doc2Vec
A Doc2Vec egy nyelvi beágyazási (word embedding) algoritmus, amely a dokumentumokat
vektorokká alakítja úgy, hogy a vektorok reprezentálják a dokumentumok tartalmi jellemzőit és
kapcsolatait. Míg a Word2Vec a szavakat reprezentálja vektorokkal, a Doc2Vec kiterjeszti ezt a
módszert a teljes dokumentumokra.

A Doc2Vec algoritmus a Word2Vec alapelveit használja, de hozzáadja a dokumentumokhoz tartozó


vektorokat. A két fő variánsa a PV-DM (Paragraph Vector - Distributed Memory) és a PV-DBOW
(Paragraph Vector - Distributed Bag of Words).

A PV-DM algoritmusban a dokumentumokhoz tartozó vektorokat úgy tanítják, hogy a közvetlenül


megelőző és követő szavak alapján próbálják megjósolni a hiányzó szavakat. Az algoritmus a
dokumentumokat és a szavakat is bevonja a vektorok tanításába.

A PV-DBOW algoritmusban a dokumentumokhoz tartozó vektorokat úgy tanítják, hogy a


dokumentumok szavainak sorrendjét figyelmen kívül hagyva próbálják megjósolni a
dokumentumokban található környező szavakat.

A Doc2Vec algoritmusok hasznosak a dokumentumok hasonlóságának és kapcsolatainak


modellezésében, és felhasználhatók számos feladatra a természetes nyelvfeldolgozásban (NLP).
Például a Doc2Vec vektorok segítségével lehet szemantikai keresést végezni, dokumentumok
csoportosítását végezni, vagy akár szövegek osztályozását elvégezni. Az algoritmus lehetővé teszi,
hogy a dokumentumokat kompakt vektorokként reprezentáljuk, amelyek megőrzik a dokumentumok
közötti hasonlóságot és kapcsolatokat.

Osztályozó Modellek
Logistic Regression
A Logisztikus Regresszió (Logistic Regression) egy széles körben használt osztályozási algoritmus a gépi
tanulásban. A logisztikus regresszió célja, hogy egy adott bemeneti minta alapján meghatározza
annak kategóriáját vagy osztályát.

A logisztikus regresszió a bináris osztályozásra (két osztály) és a többosztályos osztályozásra is


alkalmazható. Bár a nevében "regresszió" szerepel, valójában egy osztályozási algoritmus, nem
regresszió.

A logisztikus regresszió működése egyszerű: megtanulja egy logisztikus függvény (S-alakú görbe)
paramétereit, amely a bemeneti változókat (független változókat) kapcsolja össze az
osztályvalószínűséggel.

A logisztikus függvény képlete:

P(y=1|x) = 1 / (1 + exp(-(w*x + b)))

Ahol:

P(y=1|x) a bemeneti minta x esetén az osztály y = 1 valószínűsége.


w a súlyvektor, amely a bemeneti változókat súlyozza.

b a bias (eltolás), amely megadja a függvény kezdeti eltolását.

A logisztikus regresszió tanulási fázisában a súlyvektor (w) és a bias (b) becslése történik a
tanítóadatok alapján. A becslés általában a maximum likelihood módszerrel vagy a gradiens
módszerrel történik, hogy megtaláljuk azt a súlyvektort és bias-t, amelyek a legjobban illeszkednek a
tanítóadatokhoz.

Az osztályozási fázisban a tanult súlyvektor és bias alapján a logisztikus regresszió becsüli meg az új
bemeneti mintákhoz tartozó osztályvalószínűségeket. A minta osztálya általában a legnagyobb
valószínűséggel rendelkező osztály lesz.

Összességében a logisztikus regresszió egy lineáris modell, amely logisztikus függvényt használ a
bemeneti változók és az osztály közötti kapcsolat leírására. Az algoritmus gyors és hatékony, és széles
körben alkalmazzák például bináris osztályozásra, spam-szűrésre, betegség diagnosztizálásra és sok
más területen, ahol az osztályozási feladatok jelentkeznek.

Multinomiális Naive Bayes


A Multinomiális Naive Bayes egy osztályozási algoritmus a gépi tanulásban, amely a Naive Bayes
módszert alkalmazza többosztályos osztályozási feladatokra. A módszer alapja a Bayes-tétel, amely
valószínűségi alapú gondolkodást alkalmaz.

A Multinomiális Naive Bayes modell feltételezése az, hogy a bemeneti változók (szavak, jellemzők
stb.) közötti függetlenség teljesül, miután ismert a kimenet. Ez a "naiv" feltételezés lehetővé teszi az
egyszerű szorzás és valószínőségi számítások alkalmazását.

A Multinomiális Naive Bayes algoritmus működése a következő lépésekből áll:

Tanítási fázis: Az algoritmus megtanulja az osztályok valószínűségeit és a bemeneti változók (szavak,


jellemzők) feltételes valószínűségeit az osztályokra vonatkozóan. Ez azt jelenti, hogy kiszámítja a prior
valószínűséget (az osztály előfordulásának valószínűsége) és a likelihood valószínűséget (az adott
osztályon belül a változók megfigyeléseinek valószínűsége).

Osztályozási fázis: Az algoritmus a tanítási fázisban megtanult valószínűségeket használja egy új


bemeneti minta osztályozásához. Azt a kimenetet adja vissza, amely a legnagyobb valószínűséggel
tartozik az adott mintához.

A Multinomiális Naive Bayes algoritmus jellemzően a következőképpen alkalmazható szöveges


osztályozási feladatokban:

A bemeneti szövegeket előfeldolgozzák, például tokenizálással vagy feature extraction technikákkal


(pl. TF-IDF vektorizáció).

Az osztálycímkéket előkészítik (például kategóriák, témák stb.).

Az algoritmust betanítják a tanítóadatokon a prior osztályvalószínűségek és a feltételes


valószínűségek kiszámításával.

Az osztályozás során az algoritmus először kiszámítja a bemeneti változók feltételes valószínűségeit az


osztályokra vonatkozóan. Ezután a Bayes-tétel segítségével meghatározza a minta
osztályvalószínűségeit és kiválasztja a legvalószínűbb osztályt.
A Multinomiális Naive Bayes algoritmus gyors, egyszerű és hatékony, és jól teljesít számos
többosztályos osztályozási feladatban, különösen a szöveges adatokkal kapcsolatosan. Fontos
azonban megjegyezni, hogy a naiv függetlenség feltételezése miatt nem mindig érzi fel a valódi
változófüggőségeket.

Gradient Boosting
A Gradient Boosting egy olyan gépi tanulási módszer, amelyet főként eldöntési fák (decision tree)
alkalmazásával hajtanak végre. Ez egy erős prediktív modellezési technika, amelyet széles körben
használnak különböző feladatokban, például osztályozásban és regresszióban.

A Gradient Boosting lényege, hogy több gyenge prediktort (általában döntési fát) kombinál, hogy
létrehozzon egy erősebb modellt. Az algoritmus iteratív módon építi fel a modellt, ahol minden
iterációban egy új prediktor hozzáadása történik, amely a korábbi prediktorok hibáját próbálja
minimalizálni.

Az algoritmus fő lépései a következők:

Első lépésben inicializáljuk a modellt egy egyszerű prediktorral, általában egy konstans értékkel,
amelyet a célváltozó átlagával vagy más kezdő értékkel határozunk meg.

Az iteratív lépések során a modellt lépésről lépésre fejlesztjük. Minden iterációban a modell hibáját,
azaz a kívánt eredmény és a jelenlegi predikció közötti különbséget próbáljuk minimalizálni.

Az aktuális prediktor hibájának számítása után kiszámítjuk a hibátöbbletet, amelyet az új prediktorhoz


hozzáadunk. Ez a hibátöbblet a gradientdescent módszerrel van kiszámítva.

A hibátöbblet alapján új prediktort hozzáadunk a modellhez. Ez a prediktor próbálja korrigálni a


korábbi prediktorok hiányosságait, azáltal hogy a hibátöbbletet próbálja minimalizálni.

Az előző lépéseket ismételjük addig, amíg el nem érjük a megfelelő számú prediktorokat, vagy amíg a
modell konvergál.

A Gradient Boosting segítségével a gyenge prediktorok erős modellé kombinálhatók, és


kihasználhatók a kollektív erejük. Az algoritmus nagyon hatékonyan kezeli a nemlineáris
kapcsolatokat, képes kezelni a nagy dimenziószámú adatokat, és ellenálló a zajos adatokkal szemben.
Gyakran alkalmazzák a versenyzői gépi tanulásban, kaggle-versenyeken és más összetett
feladatokban, ahol kiemelkedő teljesítményt nyújt.

SVC
Az SVC (Support Vector Classifier) egy gépi tanulási algoritmus, amely a szupervízióval tanított
osztályozási feladatokra alkalmazható. Az SVC algoritmus egy támogató vektor gépet (Support Vector
Machine, SVM) használ a minták osztályozásához.

Az SVC algoritmus működése a következő lépésekből áll:

Az adatok előkészítése: A bemeneti adatokat elő kell készíteni a tanítási fázis előtt. Ez magában
foglalja az adatok normalizálását vagy standardizálását, a jellemzők kiválasztását vagy kinyerését és a
kategóriák kódolását.

Tanítási fázis: Az SVC algoritmus a tanítóadatokat használja az osztályozási modell betanításához. Az


algoritmus célja egy döntési felület (decision boundary) megtalálása, amely optimálisan választja szét
az osztályokat a bemeneti adatokban. Az optimális döntési felület az, amely maximális távolságot
biztosít a legközelebbi minták között, ezért gyakran nevezik marginális döntési felületnek.
Támogató vektorok meghatározása: Az SVC algoritmus meghatározza a döntési felület mellett
elhelyezkedő támogató vektorokat. Ezek a minták a döntési felülethez legközelebbi minták, és fontos
szerepet játszanak az osztályozási modell működésében.

Osztályozási fázis: Az SVC modell segítségével új, nem látott minták osztályozhatók. Az algoritmus a
tanulási fázisban megtanult döntési felület és támogató vektorok alapján dönti el, hogy az új minta
melyik osztályba tartozik.

Az SVC algoritmus nagyon hatékonyan kezeli a nemlineáris döntési felületeket és a magas dimenziójú
adatokat. Továbbá, a SVC a kernel trükköt használja, amely lehetővé teszi, hogy a minták ne lineárisan
szeparálható problémáit lineáris módon megközelítse a magasabb dimenziós térben.

Az SVC-t gyakran alkalmazzák olyan feladatokban, mint a képfelismerés, az orvosi diagnosztika, a


biometrika és az általános osztályozás, ahol fontos az osztályok hatékony elkülönítése.

Random Forest
A Random Forest (véletlen erdő) egy gépi tanulási algoritmus, amely az erdők (forest) koncepciójára
épül. Ez egy kifejezetten hatékony és sokoldalú osztályozó és regressziós módszer, amelyet széles
körben alkalmaznak a gépi tanulásban.

A Random Forest algoritmus lényege, hogy több döntési fát (decision tree) kombinál egy erősebb
modell létrehozása érdekében. Az erdőben minden fa egyedülálló módon tanul és osztályoz, majd az
eredményeket átlagolják vagy többségi szavazással kombinálják a végső predikcióhoz.

Az algoritmus működése a következő lépésekből áll:

Adatminta készítése: A Random Forest algoritmus véletlenszerű minták kiválasztásával hoz létre
tanítóhalmazokat a bemeneti adatokból. Ez a folyamat úgy zajlik, hogy minden fa egyedi
tanítóhalmazt kap.

Erdő építése: Az algoritmus elindítja a faépítési folyamatot minden tanítóhalmazon. A döntési fák a
tanítóhalmazokra vannak illesztve, és a faépítés során a legjobb osztályozó feltételt keresik a változók
és a célváltozó között.

Végső predikció: Amikor az erdő elkészült, az algoritmus osztályozza vagy regressziózza az új mintákat
az összes fa segítségével. A végső predikciót általában többségi szavazással (osztályozás esetén) vagy
átlagolással (regresszió esetén) határozzák meg az összes fa kimenete alapján.

A Random Forest algoritmusnak számos előnye van, többek között:

Robusztus és kevésbé érzékeny a zajra vagy az adatokban előforduló hibákra.

Képes kezelni nagy dimenziójú adatokat és kategorikus változókat is.

Jól teljesít olyan feladatokban, ahol a változók között összetett és nemlineáris kapcsolatok vannak.

Az erdőben található döntési fák egymástól függetlenül dolgoznak, ami lehetővé teszi a
párhuzamosítást és a skálázhatóságot.

A Random Forest algoritmus széles körben használt a gépi tanulásban, különösen osztályozási és
regressziós feladatokban. Emellett a fontossági értékek kiszámítására is alkalmas, amelyek
információt szolgáltatnak a változók fontosságáról a modellben.
Decision Tree
A Decision Tree Classifier egy gépi tanulási algoritmus, amelyet osztályozási feladatokra alkalmaznak.
Az algoritmus egy döntési fát hoz létre, amelyet használ a bemeneti adatok osztályokba sorolásához.

A Decision Tree Classifier algoritmus működése a következő lépésekből áll:

Adatok előkészítése: Az adatokat elő kell készíteni a tanítás előtt. Ez magában foglalja az adatok
normalizálását vagy standardizálását, a kategóriák kódolását és a jellemzők kiválasztását vagy
kinyerését.

Tanítási fázis: Az algoritmus a tanítóadatokat használja a döntési fa létrehozásához. Az algoritmus


iteratívan kiválasztja a legjobb osztályozó feltételt, amely legjobban elkülöníti az adatokat az osztályok
között. Ez a folyamat általában a Gini-index vagy az entrópia alapján történik, hogy meghatározzák a
változók szétválasztó erejét.

Döntési fa létrehozása: Az algoritmus építi a döntési fát a kiválasztott feltételek alapján. Az algoritmus
minden csomópontban egy osztályozó feltételt hoz létre, amely a bemeneti minták osztályba
sorolásához szükséges. Az ágak a feltételek különböző eredményeire vezetnek.

Osztályozási fázis: Az új minták osztályozása során az algoritmus az adott minta jellemzőit használja a
döntési fa ágainak követésére. A fa levelein található osztálycímkék határozzák meg a minta osztályát.

A Decision Tree Classifier algoritmus nagyon értékes a könnyen értelmezhető döntési fái miatt. Az
algoritmus rugalmas és képes kezelni kategorikus és numerikus változókat egyaránt. Azonban a
döntési fák hajlamosak túltanulni (overfitting), különösen a mélyebb fáknál. Ennek elkerülése
érdekében a fa mélységét vagy más paramétereket korlátozni lehet.

A Decision Tree Classifier hasznos és elterjedt osztályozási algoritmus, amelyet széles körben
alkalmaznak például a gépi tanulásban, az adatbányászatban és a döntéstámogatási rendszerekben.

You might also like