Tweet Megosztás Megosztás

Mutolsó frissítés: 2020. december 10.

Az információnyereség az entrópia vagy a meglepetés csökkenését számítja ki egy adathalmaz valamilyen módon történő átalakításából.

Általában döntési fák építésénél használják egy gyakorló adathalmazból, az egyes változók információnyereségének kiértékelésével, és az információnyereséget maximalizáló változó kiválasztásával, ami viszont minimalizálja az entrópiát, és a legjobban osztja fel az adathalmazt csoportokra a hatékony osztályozáshoz.

Az információnyereség a jellemző kiválasztásához is használható, az egyes változók nyereségének kiértékelésével a célváltozóval összefüggésben. Ebben a kissé eltérő használatban a számítást a két véletlen változó közötti kölcsönös információnak nevezzük.

Ebben a bejegyzésben megismerheti az információnyereséget és a kölcsönös információt a gépi tanulásban.

Az írás elolvasása után tudni fogja:

  • Az információnyereség az entrópia vagy a meglepetés csökkenése egy adathalmaz átalakításával, és gyakran használják döntési fák képzésénél.
  • Az információnyereséget az adathalmaz entrópiájának az átalakítás előtti és utáni összehasonlításával számítják ki.
  • A kölcsönös információ két változó közötti statisztikai függőséget számítja ki, és a változóválasztásnál alkalmazott információnyereség elnevezése.

Kezdje el a projektjét az új könyvemmel Probability for Machine Learning, amely lépésről lépésre bemutató útmutatókat és az összes példa Python forráskódfájlját tartalmazza.

Kezdjük el.

  • Frissítés nov/2019: Javítottam az info/entrópia alapjainak leírását (köszönöm HR).
  • Frissítés aug/2020:

Mi az információnyereség és a kölcsönös információ a gépi tanulásban
Fotó: Giuseppe Milo, egyes jogok fenntartva.

Áttekintés

Ez az oktatóanyag öt részre oszlik; ezek a következők:

  1. Mi az információnyereség?
  2. Munkapélda az információnyereség kiszámítására
  3. Példák az információnyereségre a gépi tanulásban
  4. Mi a kölcsönös információ?
  5. Hogyan kapcsolódik az információnyereség és a kölcsönös információ?

Mi az információnyereség?

Az információnyereség, vagy röviden IG, az entrópia vagy a meglepetés csökkenését méri egy adathalmaznak egy véletlen változó adott értéke szerinti felosztásával.

A nagyobb információnyereség alacsonyabb entrópiájú mintacsoportra vagy mintacsoportokra, és ezáltal kisebb meglepetésre utal.

Emlékezhetünk arra, hogy az információ bitekben számszerűsíti, hogy egy esemény mennyire meglepő. Az alacsonyabb valószínűségű események több információval, a nagyobb valószínűségű események kevesebb információval rendelkeznek. Az entrópia azt számszerűsíti, hogy mennyi információ van egy véletlen változóban, pontosabban annak valószínűségi eloszlásában. Egy ferde eloszlásnak alacsony az entrópiája, míg egy olyan eloszlásnak, ahol az események valószínűsége egyenlő, nagyobb az entrópiája.

Az információelméletben szeretjük leírni egy esemény “meglepetését”. Az alacsony valószínűségű események meglepőbbek, ezért nagyobb az információtartalmuk. Míg azok a valószínűségi eloszlások, ahol az események egyenlő valószínűségűek, meglepőbbek és nagyobb entrópiával rendelkeznek.

  • Ferde valószínűségi eloszlás (nem meglepő): Alacsony entrópia.
  • Kiegyenlített valószínűségi eloszlás (meglepő): Nagy entrópia.

Az információ és az entrópia alapjairól bővebben lásd a bemutatót:

  • A Gentle Introduction to Information Entropy

Most nézzük meg egy adathalmaz entrópiáját.

Egy adathalmaz entrópiájáról gondolkodhatunk úgy, hogy az adathalmazban lévő megfigyelések egyik vagy másik osztályba, pl. két osztályba való tartozásának valószínűségi eloszlását tekintjük egy bináris osztályozási adathalmaz esetében.

Az entrópia egyik információelméleti értelmezése az, hogy megadja az S egy tetszőleges tagjának osztályozásához szükséges információ bitek minimális számát (azaz, az S egy egyenletes valószínűséggel véletlenszerűen kihúzott tagja).

– Page 58, Machine Learning, 1997.

Egy bináris osztályozási probléma (két osztály) esetén például az adatminta entrópiáját a következőképpen számíthatjuk ki:

  • Entrópia = -(p(0) * log(P(0)) + p(1) * log(P(1)))

A két osztályra 50/50 arányban osztott mintákkal rendelkező adathalmaz maximális entrópiája (maximális meglepetés) 1 bit lenne, míg egy 10/90 arányban osztott, kiegyensúlyozatlan adathalmaz kisebb entrópiával rendelkezne, mivel az adathalmazból véletlenszerűen kiválasztott példa esetében kisebb lenne a meglepetés.

Ezt egy példával mutathatjuk be, amikor Pythonban kiszámítjuk az entrópiát erre a kiegyensúlyozatlan adathalmazra. A teljes példa az alábbiakban található.

A példa futtatásával láthatjuk, hogy az adathalmaz entrópiája bináris osztályozás esetén kevesebb, mint 1 bit. Ez azt jelenti, hogy kevesebb mint egy bitnyi információ szükséges az adathalmazból származó tetszőleges példa osztálycímkéjének kódolásához.

1
entrópia: 0.469 bit

Az entrópia ily módon egy adathalmaz tisztaságának kiszámítására használható, e.pl. mennyire kiegyensúlyozott az osztályok eloszlása.

A 0 bit entrópia egy olyan adathalmazt jelez, amely egy osztályt tartalmaz; az 1 vagy több bit entrópia egy kiegyensúlyozott adathalmaz maximális entrópiáját jelenti (az osztályok számától függően), a kettő közötti értékek pedig e szélsőségek közötti szinteket jeleznek.

Az információnyereség lehetőséget nyújt arra, hogy az entrópia segítségével kiszámítsuk, hogy az adathalmazban bekövetkező változás hogyan befolyásolja az adathalmaz tisztaságát, pl. az osztályok eloszlását. Egy kisebb entrópia nagyobb tisztaságra vagy kevesebb meglepetésre utal.

… az információnyereség, egyszerűen az entrópia várható csökkenése, amit a példáknak az adott attribútum szerinti felosztása okoz.

– Page 57, Machine Learning, 1997.

Elképzelhető például, hogy ki akarjuk értékelni, milyen hatással van a tisztaságra, ha egy S adathalmazt egy értéktartományt tartalmazó véletlen változóval osztunk fel.

Ez a következőképpen számítható ki:

  • IG(S, a) = H(S) – H(S | a)

ahol IG(S, a) az S adathalmazra vonatkozó információ az a változóra vonatkozóan egy véletlen változóra, H(S) az adathalmaz entrópiája bármilyen változás előtt (a fent leírtak szerint) és H(S | a) az adathalmaz feltételes entrópiája az a változóra vonatkozóan.

Ez a számítás az adathalmaz S nyereségét írja le az a változóra vonatkozóan. Ez az adathalmaz átalakításakor megtakarított bitek száma.

A feltételes entrópia kiszámítható úgy, hogy az adathalmazt csoportokra osztjuk az a minden megfigyelt értékére, és kiszámítjuk az egyes csoportokba tartozó példák arányának összegét a teljes adathalmazból, megszorozva az egyes csoportok entrópiájával.

  • H(S | a) = v összege a Sa(v)/S * H(Sa(v))

Hol Sa(v)/S az adathalmazban lévő olyan példák számának aránya, amelyekben az a változónak v értéke van, és H(Sa(v)) a minták azon csoportjának entrópiája, ahol az a változónak v értéke van.

Ez kissé zavarosan hangozhat.

Az információnyereség kiszámítását egy kidolgozott példával konkretizálhatjuk.

Meg akarja tanulni a valószínűséget a gépi tanuláshoz

Vegye fel most a 7 napos ingyenes e-mailes gyorstalpaló tanfolyamomat (mintakóddal).

Kattints a feliratkozáshoz, és a tanfolyam ingyenes PDF Ebook változatát is megkapod.

Töltsd le az INGYENES minitanfolyamodat

Munkapélda az információnyereség kiszámítására

Ebben a részben egy munkapéldával konkretizáljuk az információnyereség kiszámítását.

Meghatározhatunk egy függvényt, amellyel kiszámíthatjuk egy mintacsoport entrópiáját a 0. és az 1. osztályba tartozó minták aránya alapján.

Most tekintsünk egy 20 példát tartalmazó adathalmazt, amelyből 13 a 0. és 7 az 1. osztályba tartozik. Kiszámíthatjuk ennek az adathalmaznak az entrópiáját, amely kevesebb, mint 1 bit lesz.

Most tekintsük úgy, hogy az adathalmaz egyik változójának két egyedi értéke van, mondjuk “érték1” és “érték2”. Ennek a változónak az információnyereségét szeretnénk kiszámítani.

Tegyük fel, hogy ha az adathalmazt az érték1 szerint osztjuk fel, akkor nyolc mintából álló csoportot kapunk, hét mintát a 0. osztályhoz és egyet az 1. osztályhoz. Ezután kiszámíthatjuk ennek a mintacsoportnak az entrópiáját.

Tegyük fel, hogy az adathalmazt érték2 szerint osztjuk fel; 12 mintából álló csoportunk van, mindegyik csoportban hat minta. Azt várnánk, hogy ennek a csoportnak az entrópiája 1 lesz.

Végül kiszámíthatjuk ennek a változónak az információnyereségét a változó egyes értékeihez létrehozott csoportok és a kiszámított entrópia alapján.

Az első változó eredményeként az adathalmazból egy nyolc példából álló csoportot kaptunk, a második csoportba pedig az adathalmaz fennmaradó 12 mintája került. Így tehát minden megvan, amire szükségünk van az információnyereség kiszámításához.

Ez esetben az információnyereség a következőképpen számítható ki:

  • Entrópia(Adathalmaz) – (Szám(Csoport1) / Szám(Adathalmaz) * Szám(Csoport1) * Entrópia(Csoport1) + Szám(Csoport2) / Szám(Adathalmaz) * Entrópia(Csoport2))

Vagy:

  • Entrópia(13/20, 7/20) – (8/20 * Entrópia(7/8, 1/8) + 12/20 * Entrópia(6/12, 6/12))

Vagy kódban:

1
2
3
4

# az információnyereség kiszámítása
nyereség = s_entrópia – (8/20 * s1_entrópia + 12/20 * s2_entrópia)
print(‘Információnyereség: %.3f bits’ % gain)

A teljes példa az alábbiakban található.

Először is, az adathalmaz entrópiáját éppen 1 bit alatt számoljuk ki. Ezután az első és a második csoport entrópiáját körülbelül 0,5, illetve 1 bitre számoljuk.

Végül a változó információnyereségét 0,117 bitre számoljuk. Ez azt jelenti, hogy az adathalmaznak a választott változóval történő felosztásával elért nyereség 0,117 bit.

1
2
3
4

Dataset entrópia: 0.934 bit
Group1 entrópia: 0.544 bit
Group2 entrópia: 1.000 bit
Információnyereség: 0.117 bit

Példák az információnyereségre a gépi tanulásban

A gépi tanulásban az információnyereség talán legnépszerűbb felhasználása a döntési fákban történik.

Egy példa erre az Iterative Dichotomiser 3 algoritmus, vagy röviden ID3, amelyet egy döntési fa felépítésére használnak.

Az információnyereség pontosan az a mérték, amelyet az ID3 arra használ, hogy a fa növekedésének minden egyes lépésénél kiválassza a legjobb attribútumot.

– Page 58, Machine Learning, 1997.

Az információnyereséget az adathalmaz minden egyes változójára kiszámítják. Az adathalmaz felosztásához a legnagyobb információnyereséggel rendelkező változót választjuk ki. Általában a nagyobb nyereség kisebb entrópiát vagy kevesebb meglepetést jelez.

Megjegyezzük, hogy az entrópia minimalizálása egyenértékű az információs nyereség maximalizálásával …

– Page 547, Machine Learning: A Probabilistic Perspective, 2012.

A folyamatot ezután minden egyes létrehozott csoporton megismételjük, kizárva a már kiválasztott változót. Ez abbamarad, amint a döntési fa elérte a kívánt mélységet, vagy nem lehetséges több felosztás.

Az új attribútum kiválasztásának és a képzési példák felosztásának folyamata most minden egyes nem terminális leszálló csomópont esetében megismétlődik, ezúttal csak az adott csomóponthoz tartozó képzési példák felhasználásával. A fába feljebb beépített attribútumok kizárásra kerülnek, így bármely attribútum legfeljebb egyszer jelenhet meg a fán keresztül vezető bármely út mentén.

– 60. oldal, Machine Learning, 1997.

A döntési fák legtöbb modern implementációjában, például a scikit-learn Python gépi tanulási könyvtárban a DecisionTreeClassifier osztályban az osztályozáshoz használt Classification and Regression Tree (CART) algoritmus implementációjában az információnyereség használható felosztási kritériumként.

Ez úgy érhető el, hogy a modell konfigurálásakor a kritérium argumentumot “entrópia” értékre állítjuk; például:

1
2
3
4

# példa egy információnyereséggel
képzett döntési fára a sklearn segítségével.tree import DecisionTreeClassifier
model = sklearn.tree.DecisionTreeClassifier(criterion=’entropy’)

Az információnyereség a modellezés előtti jellemzőkiválasztáshoz is használható.

Ez a célváltozó és az egyes bemeneti változók közötti információnyereség kiszámítását jelenti a képzési adathalmazban. A Weka gépi tanulási munkapad az InfoGainAttributeEval osztályon keresztül biztosítja az információnyereség implementációját a jellemzőkiválasztáshoz.

A jellemzőkiválasztással összefüggésben az információnyereséget “kölcsönös információnak” is nevezhetjük, és a két változó közötti statisztikai függőséget számítja ki. Az információnyereség (kölcsönös információ) jellemzőkiválasztáshoz való használatára példa a mutual_info_classif() scikit-learn függvény.

Mi a kölcsönös információ?

A kölcsönös információ két változó között kerül kiszámításra, és az egyik változó bizonytalanságának csökkenését méri a másik változó ismert értéke mellett.

A kölcsönös információnak nevezett mennyiség azt méri, hogy az egyik véletlen változóból mennyi információt nyerhetünk egy másik változót figyelembe véve.

– 310. oldal, Adatbányászat: Practical Machine Learning Tools and Techniques, 4. kiadás, 2016.

A két véletlen változó, X és Y közötti kölcsönös információ formálisan a következőképpen fogalmazható meg:

  • I(X ; Y) = H(X) – H(X | Y)

ahol I(X ; Y) az X és Y kölcsönös információja, H(X) az X-re vonatkozó entrópia és H(X | Y) az Y-ra adott X feltételes entrópia. Az eredmény mértékegysége bit.

A kölcsönös információ a két véletlen változó közötti függőség vagy “kölcsönös függőség” mértékegysége. Mint ilyen, a mérték szimmetrikus, ami azt jelenti, hogy I(X ; Y) = I(Y ; X).

Az x-re vonatkozó bizonytalanság átlagos csökkenését méri, amely y értékének megismeréséből adódik; vagy fordítva, az x által y-ról közvetített információ átlagos mennyiségét.

– 139. oldal, Information Theory, Inference, and Learning Algorithms, 2003.

A Bullback-Leibler- vagy KL-divergencia egy olyan mérték, amely két valószínűségi eloszlás különbségét számítja ki.

A kölcsönös információ kiszámítható úgy is, mint a közös valószínűségi eloszlás és az egyes változók marginális valószínűségeinek szorzata közötti KL-divergencia.

Ha a változók nem függetlenek, akkor a közös eloszlás és a marginális valószínűségek szorzatának Kullback-Leibler-divergenciáját figyelembe véve, amit a változók közötti kölcsönös információnak nevezünk

– Page 57, Pattern Recognition and Machine Learning, 2006.

Ez formálisan a következőképpen fogalmazható meg:

  • I(X ; Y) = KL(p(X, Y) || p(X) * p(Y))

A kölcsönös információ mindig nagyobb vagy egyenlő nullával, ahol minél nagyobb az érték, annál nagyobb a kapcsolat a két változó között. Ha a számított eredmény nulla, akkor a változók függetlenek.

A kölcsönös információt gyakran használják a korrelációs együttható általános formájaként, pl. a véletlen változók közötti függőség mértékeként.

Azt is használják, mint szempontot egyes gépi tanulási algoritmusokban. Gyakori példa erre az Independent Component Analysis, röviden ICA, amely egy adathalmaz statisztikailag független komponenseinek vetületét adja.

Hogyan kapcsolódik az információnyereség és a kölcsönös információ?

A kölcsönös információ és az információnyereség ugyanaz a dolog, bár a mérték kontextusa vagy használata miatt gyakran eltérő neveket kapnak.

Például:

  • A transzformációk hatása az adathalmazra (döntési fák): Információnyereség.
  • Változók közötti függőség (jellemzőválasztás): Mutual Information (Kölcsönös információ).

Figyeljük meg a kölcsönös információ és az információnyereség számítási módjának hasonlóságát; ezek egyenértékűek:

  • I(X ; Y) = H(X) – H(X | Y)

és

  • IG(S, a) = H(S) – H(S | a)

A kölcsönös információt néha az információnyereség szinonimájaként használják. Technikailag ugyanazt a mennyiséget számítják, ha ugyanazokra az adatokra alkalmazzák őket.

A kettő közötti kapcsolatot úgy értelmezhetjük, hogy minél nagyobb a különbség a közös és a marginális valószínűségi eloszlások között (kölcsönös információ), annál nagyobb az információnyereség (információs nyereség).

További olvasmányok

Ez a rész további forrásokat tartalmaz a témában, ha mélyebben szeretnénk elmélyülni.

Könyvek

  • Information Theory, Inference, and Learning Algorithms, 2003.
  • Machine Learning: A Probabilistic Perspective, 2012.
  • Pattern Recognition and Machine Learning, 2006.
  • Machine Learning, 1997.
  • Data Mining: Practical Machine Learning Tools and Techniques, 4. kiadás, 2016.

API

  • scipy.stats.entropy API

Articles

  • Entropy (információelmélet), Wikipedia.
  • Információnyereség döntési fákban, Wikipedia.
  • ID3 algoritmus, Wikipedia.
  • Információnyereség arány, Wikipedia.
  • Kölcsönös információ, Wikipedia.

Összefoglaló

Ebben a bejegyzésben az információnyereséget és a kölcsönös információt fedezted fel a gépi tanulásban.

Közelebbről megtanultad:

  • Az információnyereség az entrópia vagy meglepetés csökkenése egy adathalmaz átalakításával, és gyakran használják döntési fák képzésében.
  • Az információnyereséget az adathalmaz entrópiájának az átalakítás előtti és utáni összehasonlításával számítjuk.
  • A kölcsönös információ két változó közötti statisztikai függőséget számítja ki, és a változóválasztásnál alkalmazott információnyereség neve.

Kérdése van?
Tegye fel kérdéseit az alábbi megjegyzésekben, és igyekszem a lehető legjobban válaszolni.

Fogja meg a valószínűséget a gépi tanuláshoz!

Develop your understanding of Probability

…mindössze néhány sor python kóddal

Fedezd fel, hogyan az új Ebookomban:
Probability for Machine Learning

Ez önképző tananyagokat és végigvitt projekteket tartalmaz:
Bayes-tétel, Bayes-optimalizálás, eloszlások, maximális valószínűség, kereszt-entrópia, modellek kalibrálása
és még sok másról…

Finally Harness Uncertainty in Your Projects

Spip the Academics. Just Results.See What’s Inside

Tweet Share Share Share

Vélemény, hozzászólás?

Az e-mail-címet nem tesszük közzé.