Koneellista oppimista sisältävä tehtävä ei välttämättä ole lineaarinen, mutta siinä on useita hyvin tunnettuja vaiheita:
- Obgelman määrittely.
- Datan esivalmistelu.
- Oppi taustalla oleva malli.
- Parannetaan taustalla olevaa mallia kvantitatiivisilla ja kvalitatiivisilla arvioinneilla.
- Mallin esittely.
Yksi hyvä tapa tulla toimeen uuden ongelman kanssa on työstää ongelman tunnistaminen ja määritteleminen parhaalla mahdollisella tavalla ja opetella malli, joka kaappaa datasta mielekästä tietoa. Vaikka hahmontunnistuksen ja koneoppimisen ongelmat voivat olla erityyppisiä, ne voidaan karkeasti luokitella kolmeen luokkaan:
- Valvottu oppiminen:
Systeemille esitetään ”opettajan” antamat esimerkkisyötteet ja niiden halutut ulostulot, ja tavoitteena on oppia yleinen sääntö, joka liittää syötteet ulostuloihin. - Valvomattomalla oppimisella:
Oppivalle algoritmille ei anneta mitään merkintöjä, vaan se jää yksin löytämään syötteistä rakennetta. Valvomaton oppiminen voi olla päämäärä itsessään (piilotettujen kuvioiden löytäminen datasta) tai keino kohti päämäärää (ominaisuuksien oppiminen). - Vahvistusoppiminen:
Järjestelmä on vuorovaikutuksessa dynaamisen ympäristön kanssa, jossa sen on suoritettava tietty päämäärä (kuten ajoneuvon ajaminen tai pelin pelaaminen vastustajaa vastaan). Järjestelmä saa palautetta palkkioiden ja rangaistusten muodossa, kun se liikkuu ongelma-alueellaan.
Valvotun ja valvomattoman oppimisen välissä on puolivalvottu oppiminen, jossa opettaja antaa epätäydellisen koulutussignaalin: harjoitusjoukon, josta puuttuu osa (usein monet) tavoitetuotoksista. Keskitymme tässä blogikirjoituksessa valvomattomaan oppimiseen ja datan klusterointiin.
Valvomaton oppiminen
Joissain hahmontunnistusongelmissa harjoitusaineisto koostuu joukosta tulovektoreita x ilman vastaavia tavoitearvoja. Tavoitteena tällaisissa valvomattoman oppimisen ongelmissa voi olla löytää samankaltaisten esimerkkien ryhmiä datan sisältä, jolloin puhutaan klusteroinnista, tai määrittää, miten data jakautuu avaruudessa, jolloin puhutaan tiheyden estimoinnista. Yksinkertaisemmin sanottuna n-näytteiselle avaruudelle x1 – xn ei anneta todellisia luokkatunnisteita jokaiselle näytteelle, joten sitä kutsutaan oppimiseksi ilman opettajaa.
Issues with Unsupervised Learning:
- Unsupervised Learning on vaikeampaa verrattuna valvottuun oppimistehtävään…
- Miten tiedämme, ovatko tulokset mielekkäitä, kun vastaustunnisteita ei ole saatavilla?
- Anna asiantuntijan katsoa tuloksia (ulkoinen arviointi)
- Määritä tavoitefunktio klusterointiin (sisäinen arviointi)
Miksi valvomatonta oppimista tarvitaan näistä ongelmista huolimatta?
- Suurten tietokokonaisuuksien merkitseminen on hyvin kallista ja siksi voimme merkitä vain muutamia esimerkkejä manuaalisesti. Esimerkki: Esimerkki: Puheentunnistus
- Voi olla tapauksia, joissa emme tiedä, kuinka moneen/mihin luokkaan data on jaettu. Esim: Data Mining
- Saatamme haluta käyttää klusterointia saadaksemme jonkinlaisen käsityksen datan rakenteesta ennen luokittelijan suunnittelua.
Ylivalvomaton oppiminen voidaan edelleen jakaa kahteen luokkaan:
- Parametrinen valvomaton oppiminen
Tässä tapauksessa oletamme datan parametrisen jakauman. Siinä oletetaan, että otosdata on peräisin populaatiosta, joka noudattaa kiinteään parametrijoukkoon perustuvaa todennäköisyysjakaumaa. Teoreettisesti normaalijakaumien perheessä kaikilla jäsenillä on sama muoto ja ne on parametrisoitu keskiarvolla ja keskihajonnalla. Tämä tarkoittaa, että jos tiedät keskiarvon ja keskihajonnan ja että jakauma on normaalijakauma, tiedät minkä tahansa tulevan havainnon todennäköisyyden. Parametriseen valvomattomaan oppimiseen kuuluu Gaussin sekoitusmallien rakentaminen ja Expectation-Maximization-algoritmin käyttäminen kyseisen näytteen luokan ennustamiseen. Tämä tapaus on paljon vaikeampi kuin tavallinen valvottu oppiminen, koska vastausmerkintöjä ei ole saatavilla, eikä näin ollen ole käytettävissä oikeaa tarkkuuden mittaria tuloksen tarkistamiseksi. - Epäparametrinen valvomaton oppiminen
Epäparametrisessa epävalvotun oppimisen versiossa data ryhmitellään klustereihin, joissa kukin klusteri (toivottavasti) kertoo jotakin datassa esiintyvistä luokista ja luokista. Tätä menetelmää käytetään yleisesti mallintamaan ja analysoimaan dataa, jonka otoskoko on pieni. Toisin kuin parametriset mallit, ei-parametriset mallit eivät vaadi mallintajalta mitään oletuksia populaation jakaumasta, joten niitä kutsutaan joskus jakaumavapaaksi menetelmäksi.
Mitä on klusterointi?
Klusterointia voidaan pitää tärkeimpänä ei-ohjatun oppimisen ongelmana; niinpä siinä, kuten kaikissa muissakin tämänkaltaisissa ongelmissa, on kyse rakenteen etsimisestä kokoelmasta, joka koostuu merkitsemättömästä datasta. Klusteroinnin löyhä määritelmä voisi olla ”prosessi, jossa kohteet järjestetään ryhmiin, joiden jäsenet ovat jollakin tavalla samankaltaisia”. Klusteri on siis kokoelma objekteja, jotka ovat keskenään ”samankaltaisia” ja jotka ovat ”erilaisia” muihin klustereihin kuuluviin objekteihin nähden.
Yllä olevasta kuvasta tiedämme, mikä on paras klusterointiratkaisu?
Voidaksemme löytää tietyn klusterointiratkaisun , meidän on määriteltävä klustereiden samankaltaisuusmitat.
Läheisyysmitat
Klusterointia varten meidän on määriteltävä kahdelle datapisteelle läheisyysmitta. Läheisyys tarkoittaa tässä sitä, kuinka samankaltaisia/erilaisia näytteet ovat toisiinsa nähden.
- Similariteettimitta S(xi,xk): suuri, jos xi,xk ovat samankaltaisia
- Dissimilariteetti-(tai etäisyys)mitta D(xi,xk): pieni, jos xi,xk ovat samankaltaisia
Voidaan käyttää erilaisia samankaltaisuusmittoja.
- Vektorit: Kosinusetäisyys
- joukot: Jaccard Distance
- Pisteet: Euklidinen etäisyys
q=2
”Hyvä” läheisyysmitta on erittäin sovellusriippuvainen. Klustereiden tulisi olla invariantteja ongelmalle ”luonnollisissa” muunnoksissa. Klusteroinnin yhteydessä ei myöskään kannata normalisoida dataa, joka on poimittu useista jakaumista.
Klusterointialgoritmit
Klusterointialgoritmit voidaan luokitella seuraavasti:
- Exclusive Clustering
- Overlapping Clustering
- Hierarchical Clustering
- Probabilistic Clustering
Ensimmäisessä tapauksessa data ryhmitellään eksklusiivisesti siten, että jos jokin tietty datapiste kuuluu johonkin tiettyyn klusteriin, niin silloin sitä ei voisi sisällyttää johonkin toiseen klusteriin. Yksinkertainen esimerkki tästä on esitetty alla olevassa kuvassa, jossa pisteiden erottelu tapahtuu suoralla viivalla kaksiulotteisella tasolla.
Toisessa tyypissä, päällekkäisessä klusteroinnissa, datan klusteroinnissa käytetään sen sijaan epäselviä sarjoja (fuzzy-joukkoja) siten, että kukin piste voi kuulua kahteen tai useampaan klusteriin, joilla on erilainen jäsenyysaste. Tällöin data liitetään sopivaan jäsenyysarvoon.
Hierarkkinen klusterointialgoritmi perustuu kahden lähimmän klusterin yhdistämiseen. Alkuehto toteutetaan asettamalla jokainen datapiste klusteriksi. Muutaman iteraation jälkeen päästään haluttuihin lopullisiin klustereihin.
Viimeisessä klusterointityypissä käytetään täysin probabilistista lähestymistapaa.
Tässä blogissa puhutaan neljästä käytetyimmästä klusterointialgoritmista:
- K-means
- Sumea K-means
- Hierarkkinen klusterointi
- Gaussin sekoitus
Jokainen näistä algoritmeista kuuluu johonkin edellä luetelluista klusterointityypeistä. K-means on eksklusiivinen klusterointialgoritmi, Fuzzy K-means on päällekkäinen klusterointialgoritmi, hierarkkinen klusterointi on ilmeinen ja lopuksi Mixture of Gaussians on probabilistinen klusterointialgoritmi. Keskustelemme jokaisesta klusterointimenetelmästä seuraavissa kappaleissa.
K-Means Clustering
K-means on yksi yksinkertaisimmista valvomattomista oppimisalgoritmeista, joka ratkaisee hyvin tunnetun klusterointiongelman. Menetelmässä noudatetaan yksinkertaista ja helppoa tapaa luokitella tietty data-aineisto tietyn, etukäteen määritellyn klusterimäärän (oletetaan k klusteria) kautta. Pääajatuksena on määritellä k keskusta, yksi kutakin klusteria varten. Nämä keskipisteet olisi sijoitettava järkevällä tavalla, koska eri sijainti aiheuttaa erilaisen tuloksen. Parempi valinta on siis sijoittaa ne mahdollisimman kauas toisistaan. Seuraavassa vaiheessa jokainen tiettyyn tietokokonaisuuteen kuuluva piste liitetään lähimpään keskipisteeseen. Kun yhtään pistettä ei ole vireillä, ensimmäinen vaihe on suoritettu loppuun ja tehdään varhainen ryhmittely. Tässä vaiheessa on laskettava uudelleen k uutta keskipistettä edellisen vaiheen tuloksena syntyneiden klustereiden peruskeskipisteiksi. Kun meillä on nämä k uutta keskipistettä, on tehtävä uusi sidonta saman tietokokonaisuuden pisteiden ja lähimmän uuden keskipisteen välillä. On luotu silmukka. Tämän silmukan tuloksena voimme huomata, että k keskipisteen sijainti muuttuu askel askeleelta, kunnes muutoksia ei enää tehdä. Toisin sanoen keskipisteet eivät enää liiku.
Loppujen lopuksi tämän algoritmin tavoitteena on minimoida tavoitefunktio, tässä tapauksessa neliövirhefunktio. Tavoitefunktio
jossa
on valittu etäisyysmitta datapisteen xi:n ja klusterin keskipisteen cj välillä, on mittari, joka kuvaa n datapisteen etäisyyttä niiden klusterikeskuksista.
Algoritmi koostuu seuraavista vaiheista:
- Olkoon X = {x1,x2,x3,……..,xn} datapisteiden joukko ja V = {v1,v2,…….,vc} keskusten joukko.
- Valitaan sattumanvaraisesti ’c’ klusterikeskuksia.
- Lasketaan etäisyys kunkin datapisteen ja klusterikeskusten välillä.
- Määritä datapiste siihen klusterikeskukseen, jonka etäisyys klusterikeskuksesta on pienin kaikista klusterikeskuksista.
- Lasketaan uusi klusterikeskus uudelleen käyttämällä:
jossa ’ci’ edustaa datapisteiden lukumäärää i:ssä klusterissa.
- Lasketaan uudelleen etäisyys kunkin datapisteen ja uusien saatujen klusterikeskusten välillä.
- Jos yhtään datapistettä ei ole siirretty uudelleen, lopetetaan, muutoin toistetaan vaiheesta 3).
Vaikka voidaan todistaa, että menettely päättyy aina, k-means-algoritmi ei välttämättä löydä optimaalisinta konfiguraatiota, joka vastaa globaalin kohdefunktion minimiä. Algoritmi on myös huomattavan herkkä alkuperäisille satunnaisesti valituille klusterikeskuksille. Tämän vaikutuksen vähentämiseksi k-means-algoritmi voidaan ajaa useita kertoja.
K-means on yksinkertainen algoritmi, joka on sovitettu monille ongelma-alueille. Kuten tulemme näkemään, se on hyvä ehdokas laajennettavaksi toimimaan sumeiden ominaisuusvektoreiden kanssa.
K-means-proseduuria voidaan pitää ahnehtivana algoritmina, jonka tarkoituksena on jakaa n näytettä k:een klusteriin siten, että klustereiden keskipisteiden neliöetäisyyksien summa saadaan minimoitua. Sillä on joitakin heikkouksia:
- Keskiarvojen alustamistapaa ei ollut määritelty. Yksi suosittu tapa aloittaa on valita satunnaisesti k näytteistä.
- Voi käydä niin, että mi:tä lähimpänä olevien näytteiden joukko on tyhjä, jolloin mi:tä ei voida päivittää. Tämä on ongelma, joka on käsiteltävä toteutuksen aikana, mutta se jätetään yleensä huomiotta.
- Tulokset riippuvat k:n arvosta, eikä ole olemassa optimaalista tapaa kuvata parasta ”k:ta”.
Tämä jälkimmäinen ongelma on erityisen hankala, koska meillä ei useinkaan ole mitään keinoa tietää, kuinka monta klusteria on olemassa. Yllä esitetyssä esimerkissä sama algoritmi sovellettuna samoihin tietoihin tuottaa seuraavan 3-välin klusteroinnin. Onko se parempi vai huonompi kuin 2-välin klusterointi?
Ei valitettavasti ole olemassa mitään yleistä teoreettista ratkaisua, jolla voitaisiin löytää optimaalinen klusterien määrä mille tahansa tietueelle. Yksinkertainen lähestymistapa on verrata useiden eri k-luokkia sisältävien ajojen tuloksia ja valita paras tietyn kriteerin mukaan, mutta on oltava varovainen, koska k:n kasvattaminen johtaa määritelmän mukaan pienempiin virhefunktion arvoihin, mutta lisää myös ylisovittamisen riskiä.
Sumea K-Means-klusteroinnissa
Sumeassa klusteroinnissa kullakin pisteellä on jonkinlainen todennäköisyys, että se kuuluu kuhunkin klusteriin, eikä se kuuluisi täydellisesti yhteen ainoaan klusteriin, kuten perinteisessä k-keskiarvoklusteroinnissa. Fuzzy k-means pyrkii erityisesti käsittelemään ongelmaa, jossa pisteet ovat jonkin verran keskipisteiden välissä tai muuten epäselviä, korvaamalla etäisyys todennäköisyydellä, joka voi tietysti olla jokin etäisyyden funktio, kuten todennäköisyys suhteessa etäisyyden käänteislukuun. Fuzzy k-means käyttää näiden todennäköisyyksien perusteella painotettua keskipistettä. Initialisointi-, iterointi- ja lopetusprosessit ovat samat kuin k-meansissa käytetyt prosessit. Tuloksena syntyviä klustereita voidaan parhaiten analysoida todennäköisyysjakaumina eikä niinkään kovana leimojen määrityksenä. On ymmärrettävä, että k-means on sumean k-meansin erikoistapaus, kun käytetty todennäköisyysfunktio on yksinkertaisesti 1, jos datapiste on lähimpänä keskipistettä ja 0 muutoin.
Sumea k-means-algoritmi on seuraava:
- Oletetaan, että klustereiden määrä on kiinteä K.
- Alustus: Alustetaan satunnaisesti k-keskiarvot μk, jotka liittyvät klustereihin, ja lasketaan todennäköisyys sille, että jokainen datapiste Xi kuuluu tiettyyn klusteriin K,
P(PointXiHasLabelK|Xi,K). - Iteraatio: Lasketaan uudelleen klusterin keskipiste painotettuna keskipisteenä ottaen huomioon kaikkien datapisteiden Xi jäsenyyden todennäköisyydet :
- Lopetus:
Paremman ymmärryksen saamiseksi voidaan tarkastella tätä yksinkertaista yksiulotteista esimerkkiä. Oletetaan, että annetaan tietty datajoukko ja esitetään se jakaantuneena akselille. Alla oleva kuva osoittaa tämän:
Kuvaa tarkastelemalla voimme tunnistaa kaksi klusteria kahden datakeskittymän läheisyydessä. Viittaamme niihin nimillä ”A” ja ”B”. Tässä opetusohjelmassa esitellyssä ensimmäisessä lähestymistavassa – k-means-algoritmissa – liitimme jokaisen datapisteen tiettyyn keskipisteeseen; siksi tämä jäsenyysfunktio näytti seuraavalta:
Sumeassa k-means-lähestymistavassa sama annettu datapiste ei sen sijaan kuulu yksinomaan tiettyyn tarkoin määriteltävään ryppääseen, vaan se voi sijoittua keskitietä. Tällöin jäsenyysfunktio noudattaa tasaisempaa viivaa osoittaakseen, että jokainen datapiste voi kuulua useampaan klusteriin eri laajuisella jäsenyydellä.
Yllä olevassa kuviossa punaisella merkityn pisteen osoittama datapiste kuuluu pikemminkin klusteriin B kuin klusteriin A. ’m’n arvo 0.2 ilmaisee kyseisen datapisteen kuulumisen asteen A:han.
Hierarkkiset klusterointialgoritmit
Jos on olemassa joukko N klusteroitavaa kohdetta ja N*N etäisyys- (tai samankaltaisuus-) matriisi, hierarkkisen klusteroinnin perusprosessi on seuraava:
- Aloitetaan määrittelemällä jokaiselle kohteelle yksi klusteri niin, että jos kohteita on N kappaletta, niin nyt on käytössäsi N klusteria, joista jokaisessa on vain yksi kohde. Anna klustereiden välisten etäisyyksien (samankaltaisuuksien) olla samat kuin niiden sisältämien kohteiden välisten etäisyyksien (samankaltaisuuksien).
- Etsitään lähin (samankaltaisin) klusteripari ja yhdistetään ne yhdeksi klusteriksi, jolloin sinulla on nyt yksi klusteri vähemmän.
- Lasketaan etäisyydet (samankaltaisuudet) uuden klusterin ja kaikkien vanhojen klustereiden välille.
- Kerrataan vaiheet 2. ja 3. vaiheita niin kauan, kunnes kaikki kohteet on klusteroitu yhteen ainoaan klusteriin, joka on kokoluokkaa N.
Clustering as a Mixture of Gaussians
On olemassa toinenkin tapa käsitellä klusterointiongelmia: mallipohjainen lähestymistapa, jossa klustereille käytetään tiettyjä malleja ja yritetään optimoida datan ja mallin välinen sovitus.
Käytännössä jokainen klusteri voidaan matemaattisesti esittää parametrisella jakaumalla, kuten Gaussin jakaumalla. Koko aineistoa mallinnetaan siis näiden jakaumien seoksella.
Korkean todennäköisyyden omaavalla seosmallilla on yleensä seuraavat piirteet:
- komponenttijakaumilla on korkeat ”huiput” (yhteen klusteriin kuuluvat aineistot ovat tiukkoja);
- seosmalli ”peittää” aineiston hyvin (aineiston dominoivat kuviot on kuvattu komponenttijakaumilla).
Mallipohjaisen klusteroinnin tärkeimmät edut:
- hyvin tutkittuja tilastollisia päättelytekniikoita käytettävissä;
- joustavuutta komponenttijakauman valinnassa;
- saadaan tiheysestimaatti kullekin klusterille;
- saadaan ”pehmeä” luokittelu.
Gaussien seos
Tällainen laajimmin käytetty klusterointimenetelmä perustuu Gaussien seoksen oppimiseen:
Sekoitusmalli on sekoitus k:sta komponenttijakaumasta, jotka yhdessä muodostavat sekoitusjakauman f(x):
αk edustaa k:nnen komponentin osuutta f(x):n muodostamisessa. Käytännössä käytetään usein parametrisia jakaumia (esim. gaussit), koska niiden käyttäytymisen ymmärtämiseksi on tehty paljon työtä. Jos korvataan jokainen fk(x) gaussilla, saadaan niin sanottu gaussinen sekoitusmalli (GMM).
EM-algoritmi
Expectation-Maximization olettaa, että aineistosi koostuu useista monimuuttujaisista normaalijakaumista (huomaa, että tämä on hyvin vahva oletus, erityisesti kun klustereiden määrä vahvistetaan!). Vaihtoehtoisesti ilmaistuna EM on algoritmi, jolla maksimoidaan todennäköisyysfunktio, kun osa mallisi muuttujista on havaitsemattomia (eli kun sinulla on latentteja muuttujia).
Voidaan oikeutetusti kysyä, että jos yritämme vain maksimoida funktiota, miksi emme vain käytä olemassa olevaa koneistoa funktion maksimointiin. No, jos yrität maksimoida tätä ottamalla derivaatat ja asettamalla ne nollaan, huomaat, että monissa tapauksissa ensimmäisen kertaluvun ehdoilla ei ole ratkaisua. On olemassa kanan ja munan ongelma siinä mielessä, että ratkaistaksesi malliparametrit sinun on tiedettävä havaitsemattoman datan jakauma; mutta havaitsemattoman datan jakauma on malliparametrien funktio.
Odotus-maksimointi yrittää kiertää tämän iteratiivisesti arvaamalla jakauman havaitsemattomille tiedoille, sitten estimoimalla malliparametrit maksimoimalla jotain, joka on alaraja todelliselle todennäköisyysfunktiolle, ja toistamalla kunnes konvergenssi on saavutettu:
Odotus-maksimointi-algoritmi
- Aloita arvaamalla malliparametreidesi arvot E-vaihe: Jokaisen datapisteen osalta, jossa on puuttuvia arvoja, käytä malliyhtälöäsi ratkaistaksesi puuttuvien tietojen jakauman, kun otetaan huomioon nykyinen arvauksesi malliparametreista ja havaitut tiedot (huomaa, että ratkaiset jakauman jokaiselle puuttuvalle arvolle, et odotusarvolle). Nyt kun meillä on jakauma kullekin puuttuvalle arvolle, voimme laskea todennäköisyysfunktion odotusarvon havaitsemattomien muuttujien suhteen. Jos arvauksemme mallin parametreista oli oikea, tämä odotettu todennäköisyys on havaittujen tietojemme todellinen todennäköisyys; jos parametrit eivät olleet oikeita, se on vain alaraja.
- M-askel: Nyt kun meillä on odotetun todennäköisyyden funktio, jossa ei ole havaitsemattomia muuttujia, maksimoi funktio kuten täysin havaittavassa tapauksessa, saadaksesi uuden estimaatin malliparametreille.
- Toista, kunnes konvergenssi on saavutettu.
Ryhmittelyyn liittyvät ongelmat
Ryhmittelyyn liittyy useita ongelmia. Niistä:
- suurten dimensioiden ja suuren tietomäärän käsittely voi olla ongelmallista ajallisen monimutkaisuuden vuoksi;
- menetelmän tehokkuus riippuu ”etäisyyden” määritelmästä (etäisyyteen perustuvassa klusteroinnissa). Jos ilmeistä etäisyysmittaa ei ole olemassa, meidän on ”määriteltävä” se, mikä ei aina ole helppoa, varsinkaan moniulotteisissa tiloissa;
- klusterointialgoritmin tulos (joka monissa tapauksissa voi itsessään olla mielivaltainen) voidaan tulkita eri tavoin.
Mahdolliset sovellukset
Klusterointialgoritmeja voidaan soveltaa monilla aloilla, esimerkiksi:
- Markkinointi: löydetään samankaltaisesti käyttäytyvien asiakkaiden ryhmiä, kun otetaan huomioon suuri tietokanta asiakastietoja, jotka sisältävät heidän ominaisuuksiaan ja aiempia ostotietojaan;
- Biologia: kasvien ja eläinten luokittelu niiden ominaisuuksien perusteella;
- Vakuutusala:
- Maanjäristystutkimukset: havaittujen maanjäristysten epikeskusten klusterointi vaarallisten vyöhykkeiden tunnistamiseksi;
- World Wide Web: asiakirjojen luokittelu; verkkopäiväkirjatietojen klusterointi sellaisten ryhmien löytämiseksi, joilla on samankaltaiset käyttötavat.