socialgekon.com
  • Tärkein
  • Projektinhallinta
  • Trendit
  • Työkalut Ja Oppaat
  • Web-Käyttöliittymä
Tietojenkäsittely Ja Tietokannat

Upotukset koneoppimiseen: monimutkaisten tietojen yksinkertaistaminen

Työskentely ei-numeeristen tietojen kanssa voi olla vaikeaa, jopa kokeneet tutkijat . Tyypillinen koneoppimismalli odottaa ominaisuuksiensa olevan lukuja, ei sanoja, sähköposteja, verkkosivustosivuja, luetteloita, kaavioita tai todennäköisyysjakaumia. Tietojen on oltava hyödyllisiä ensin, jotta ne ovat hyödyllisiä. Mutta miten?

Yksi suosittu lähestymistapa olisi käsittele ei-numeerista ominaisuutta kategorisena . Tämä voisi toimia hyvin, jos luokkien lukumäärä on pieni (esimerkiksi jos tiedot osoittavat ammattia tai maata). Jos kuitenkin yritämme soveltaa tätä menetelmää sähköposteihin, saamme todennäköisesti niin monta luokkaa kuin näytteitä on. Ei ole kahta täsmälleen samanlaista sähköpostia, joten tästä lähestymistavasta ei olisi hyötyä.

Toinen lähestymistapa olisi määritä etäisyys datanäytteiden välillä , funktio, joka kertoo kuinka lähellä kaksi näytettä ovat. Tai voisimme määritellä a samankaltaisuusmitta , joka antaisi meille samat tiedot paitsi, että kahden läheisen näytteen välinen etäisyys on pieni ja samankaltaisuus on suuri. Kaikkien datanäytteiden välisen etäisyyden (samankaltaisuuden) laskeminen antaisi meille matkan (tai samankaltaisuuden) matriisin. Tämä on numeerista tietoa, jota voimme käyttää.



Tällä tiedolla olisi kuitenkin niin monta ulottuvuutta kuin näytteitä, mikä ei yleensä ole hienoa, jos haluamme käyttää sitä ominaisuutena (katso ulottuvuuden kirous ) tai visualisoida se (kun yksi juoni pystyy käsittelemään jopa 6D: n , En ole vielä nähnyt 100D-juonia). Voisimmeko pienentää ulottuvuuksien määrän kohtuulliseen määrään?

Vastaus on kyllä! Sitä meillä on upotukset varten.

Mikä on upottaminen ja miksi sitä tulee käyttää?

Upottaminen on korkean ulottuvuuden datan matalaulotteinen esitys. Tyypillisesti upottaminen ei tallenna kaikkia alkuperäisten tietojen sisältämiä tietoja. Hyvällä upottamisella saadaan kuitenkin kiinni tarpeeksi ongelman ratkaisemiseksi.

Tiettyyn tietorakenteeseen on räätälöity monia upotuksia. Olet ehkä kuullut word2vec tekstitiedoille tai Fourier-kuvaimet muodon kuvadataa varten. Sen sijaan keskustelemme upotusten soveltamisesta mihin tahansa tietoon, jossa voimme määrittää etäisyyden tai samankaltaisuuden mittarin. Niin kauan kuin voimme laskea etäisyysmatriisin, tietojen luonteella ei ole mitään merkitystä. Se toimii samalla tavalla, olivatpa ne sähköpostit, luettelot, puita tai verkkosivuja .

Tässä artikkelissa esittelemme sinulle erilaisia ​​upotustyyppejä ja keskustelemme siitä, miten jotkut suositut upotukset toimivat ja kuinka voisimme käyttää upotuksia ratkaisemaan tosielämän ongelmia, joihin liittyy monimutkaisia ​​tietoja. Käymme läpi myös tämän menetelmän edut ja haitat sekä joitain vaihtoehtoja. Kyllä, jotkut ongelmat voidaan ratkaista paremmin muilla keinoilla, mutta valitettavasti koneoppimisessa ei ole hopeamallia.

Aloitetaan.

Kuinka upotukset toimivat

Kaikissa upottamisissa yritetään vähentää tietojen ulottuvuutta säilyttäen datassa 'välttämätön' tieto, mutta jokainen upotus tekee sen omalla tavallaan. Tässä käydään läpi muutama suosittu upotus, jota voidaan soveltaa etäisyys- tai samankaltaisuusmatriisiin.

Emme edes yritä kattaa kaikkia upotuksia. On olemassa ainakin tusina tunnettua upotusta, joka voi tehdä sen, ja monia muita vähemmän tunnettuja upotuksia ja niiden muunnelmia. Jokaisella on oma lähestymistapa, edut ja haitat.

Jos haluat nähdä, mitä muita upotuksia siellä on, voit aloittaa täältä:

  • Scikit-learn-käyttöopas
  • Tilastollisen oppimisen elementit (toinen painos) , Luku 14

Etäisyysmatriisi

Koskettakaamme lyhyesti matriiseja. Sopivan etäisyyden löytäminen tiedoille vaatii ongelman hyvän ymmärtämisen, matematiikan tuntemuksen ja joskus pelkkä onni . Tässä artikkelissa kuvatussa lähestymistavassa tämä voi olla tärkein tekijä, joka vaikuttaa projektisi yleiseen menestykseen tai epäonnistumiseen.

Sinun tulisi myös pitää mielessä muutama tekninen yksityiskohta. Monissa upotusalgoritmeissa oletetaan, että etäisyys (tai erilaisuus ) matriisin $ textbf {D} $ diagonaalissa on nollia ja symmetrinen. Jos se ei ole symmetrinen, voimme käyttää sen sijaan $ ( textbf {D} + textbf {D} ^ T) / 2 $. Algoritmit, jotka käyttävät ytimen temppu olettaa myös, että etäisyys on metriikka, mikä tarkoittaa, että kolmion eriarvoisuus pätee:

[ kaikki a, b, c ; ; d (a, c) leq d (a, b) + d (b, c) ]

Lisäksi, jos algoritmi vaatii sen sijaan samankaltaisuusmatriisia, voimme käyttää mitä tahansa yksitoista pienentävää funktiota etäisyysmatriisin muuntamiseksi samankaltaisuusmatriisiksi: esimerkiksi $ exp -x $.

Pääkomponenttianalyysi (PCA)

Pääkomponenttianalyysi , tai PCA, on todennäköisesti tähän mennessä eniten käytetty upotus. Idea on yksinkertainen: Etsi ominaisuuksien lineaarinen muunnos, joka maksimoi kaapatun varianssin tai (vastaavasti) minimoi toisen asteen rekonstruktiovirheen .

Erityisesti olkoon ominaisuudet esimerkkimatriisi $ textbf {X} in mathbb {R} ^ {n kertaa p} $: lla on $ n $ -ominaisuuksia ja $ p $ -mitat. Oletetaan yksinkertaisuuden vuoksi, että datanäytekeskiarvo on nolla. Voimme pienentää ulottuvuuksien määrää arvosta $ p $ arvoon $ q $ kertomalla $ textbf {X} $ ortonormaalimatriisilla $ textbf {V} _q sisään mathbb {R} ^ {p kertaa q} $ :

[ hat {{textbf {X}} = textbf {X} textbf {V} _q ]

Sitten uusi ominaisuusjoukko on $ hat { textbf {X}} in mathbb {R} ^ {n kertaa q} $. Uusien ominaisuuksien kartoittaminen takaisin alkuperäiseen tilaan (tätä toimintoa kutsutaan jälleenrakentaminen ), meidän on yksinkertaisesti kerrottava se uudelleen luvulla $ textbf {V} _q ^ T $.

Nyt on löydettävä matriisi $ textbf {V} _q $, joka minimoi jälleenrakennusvirheen:

[ min _ { textbf {V} _q} || textbf {X} textbf {V} _q textbf {V} _q ^ T - textbf {X} || ^ 2 ]

Matriisin $ textbf {V} _q $ sarakkeita kutsutaan pääkomponenttisuunniksi ja $ hat { textbf {X}} $ -sarakkeita kutsutaan pääkomponenteiksi. Numeerisesti löydämme $ textbf {V} _q $ soveltamalla SVD-hajotusta kohtaan $ textbf {X} $, vaikka siihen on muitakin yhtä kelvollisia tapoja.

PCA: ta voidaan soveltaa suoraan numeerisiin ominaisuuksiin. Tai jos ominaisuutemme eivät ole numeerisia, voimme soveltaa sitä etäisyys- tai samankaltaisuusmatriisiin.

Jos käytät Pythonia, PCA on toteutettu scikit-learn-sovelluksessa .

Hyöty Tämän menetelmän mukaan se on nopea laskea ja melko vankka melussa tiedoissa.

Haitta se voisi kaapata vain lineaarisia rakenteita, joten alkuperäisten tietojen epälineaarinen tieto todennäköisesti menetetään.

Ytimen PCA

Kernel PCA on ei-lineaarinen versio PCA: sta. Ajatuksena on käyttää ytimen temppu , jonka olet todennäköisesti kuullut, jos tunnet sen Tuki Vector Machines SVM: lle .

On olemassa muutama erilainen tapa laskea PCA. Yksi niistä on laskea grammamatriisin $ textbf {X} textbf {X} ^ T in mathbb {R} ^ {n kertaa n} $ kaksoiskeskeisen version eigendakomponentti. Jos nyt lasketaan a ytimen matriisi $ textbf {K} in mathbb {R} ^ {n kertaa n} $ tietojemme kannalta, ytimen PCA käsittelee sitä gramma-matriisina löytääkseen pääkomponentit.

Olkoon $ x_i $, $ i kohdassa {1, .., n} $ ominaisuusnäytteet. Ytimen matriisi määritetään ytintoiminnolla $ K (x_i, x_j) = langle phi (x_i), phi (x_j) rangle $.

Suosittu valinta on radiaalinen ydin:

[K (x_i, x_j) = exp - gamma cdot d (x_i, x_j) ]

missä $ d $ on etäisyysfunktio.

Ytimen PCA vaati meitä määrittämään etäisyyden. Esimerkiksi numeeristen ominaisuuksien osalta voimme käyttää euklidista etäisyyttä: $ d (x_i, x_j) = vert vert x_i-x_j vert vert ^ 2 $.

Ei-numeeristen ominaisuuksien osalta meidän on ehkä luovuttava. Yksi asia on muistaa, että tämä algoritmi olettaa etäisyytemme olevan metriikka.

Jos käytät Pythonia, ytimen PCA on toteutettu scikit-learn-sovelluksessa .

Hyöty Ytimen PCA-menetelmä on, että se voi siepata epälineaarisia tietorakenteita.

Haitta se on, että se on herkkä datan melulle ja että etäisyyden ja ytimen toimintojen valinta vaikuttaa suuresti tuloksiin.

Moniulotteinen skaalaus (MDS)

Moniulotteinen skaalaus (MDS) yrittää säilyttää näytteiden väliset etäisyydet maailmanlaajuisesti. Idea on melko intuitiivinen ja toimii hyvin matriisien kanssa.

Annetut ominaisuusnäytteet $ x_i $, $ i in {1, .., n} $ ja etäisyysfunktio $ d $, laskemme uudet ominaisuusnäytteet $ z_i sisään mathbb {R} ^ {q} $, $ i muodossa {1, .., n} $ pienentämällä a stressitoiminto :

[ min_ {z_1, .., z_n} summa_ {1 leq iJos käytät Pythonia, MDS on toteutettu scikit-learn-sovelluksessa . Kuitenkin, scikit-learn ei tue näytteen ulkopuolisten pisteiden muuntamista , mikä voi olla hankalaa, jos haluamme käyttää upotusta regressio- tai luokitusmallin yhteydessä. Periaatteessa kuitenkin on mahdollista .

Hyöty MDS: n ajatus on, että sen idea on täysin sopusoinnussa puitteidemme kanssa ja että datan melu ei vaikuta siihen paljon.

Haitta on, että sen toteutus scikit-learn-ohjelmassa on melko hidasta eikä tue näytteen ulkopuolista muunnosta.

Käyttötapaus: Lähetyksen seuranta

Muutamat pienen trooppisen saaren asutukset ovat kehittäneet pakettien kuljetuspalveluja paikallisen matkailualan palvelemiseksi. Kauppias yhdessä näistä siirtokunnista päätti ryhtyä toimiin saadakseen edun kilpailusta, joten hän perusti satelliittivalvontajärjestelmän, joka seurasi kaikkia saaren pakettilähetyksiä. Kun tiedot on kerätty, kauppias kutsui datatieteilijän (me olemme!) Auttamaan häntä vastaamaan seuraavaan kysymykseen: Voimmeko ennustaa matkalla olevan paketin määränpään?

Aineisto sisältää tietoa 200 seuratusta lähetyksestä. Jokaista seurattua lähetystä varten on luettelo (x, y) -koordinaateista kaikista paikoista, joissa paketti havaittiin, mikä on tyypillisesti 20-50 havaintoa. Alla oleva juoni näyttää, miten nämä tiedot näyttävät.

Käyttötapaus: Lähetyksen seuranta

Nämä tiedot näyttävät ongelmilta - itse asiassa kahdelta eri makumieleltä.

Ensimmäinen ongelma on, että käsittelemämme tiedot ovat suuria ulottuvuuksia. Esimerkiksi, jos jokainen paketti huomattiin 50 paikassa, tietojemme ulottuvuus olisi 100 - kuulostaa paljon, verrattuna käytettävissänne oleviin 200 näytteeseen.

Toinen ongelma: Eri lähetysreiteillä on tosiasiallisesti erilainen määrä havaintoja, joten emme voi yksinkertaisesti pinota luetteloita koordinaateilla edustamaan tietoja taulukkomuodossa (ja vaikka ne olisivat olleet, sillä ei silti olisi järkevää).

Kauppias rummuttaa kärsimättömästi pöytää sormillaan, ja datatieteilijä yrittää kovasti olla osoittamatta paniikin merkkejä.

Tällöin etäisyysmatriisit ja upotukset ovat käteviä. Meidän on vain löydettävä tapa vertailla kahta lähetysreittiä. Fréchetin etäisyys näyttää olevan järkevä valinta. Etäisyyden avulla voimme laskea etäisyysmatriisin.

Huomautus: Tämä vaihe voi viedä jonkin aikaa. Meidän on laskettava $ O (n ^ 2) $ -etäisyydet siten, että jokaisella etäisyydellä on $ O (k ^ 2) $ -toistoa, missä $ n $ on näytteiden määrä ja $ k $ on havaintojen määrä yhdessä näytteessä. Etäisyystoiminnon tehokas kirjoittaminen on avainasemassa. Esimerkiksi Pythonissa voit käyttää numba kiihdyttää tätä laskentaa moninkertaisesti.

Upotusten visualisointi

Nyt voimme upottamisen avulla vähentää ulottuvuuksien määrää 200: sta vain muutamaan. Voimme selvästi nähdä, että kauppareittejä on vain muutama, joten voimme toivoa löytävänsä tiedon hyvän esityksen jopa kahdessa tai kolmessa ulottuvuudessa. Käytämme upotuksia, joista keskustelimme aiemmin: PCA, Kernel PCA ja MDS.

Alla olevista kaavioista näet merkitty reittitiedot (annettu esittelyn vuoksi) ja sen esitys upottamalla 2D- ja 3D-muotoisesti (vasemmalta oikealle). Leimattu tieto merkitsee neljä kauppapistettä, jotka on yhdistetty kuuteen kauppareittiin. Kaksi kuudesta kauppareitistä on kaksisuuntaisia, mikä tekee yhteensä kahdeksan lähetysryhmää (6 + 2). Kuten näette, saimme melko selkeän eron kaikista kahdeksasta 3D-upotuksella varustetusta lähetysryhmästä.

Upotusten visualisointi

Tämä on hyvä alku.

Upotukset putkilinjan malliin

Nyt olemme valmiita kouluttamaan upottamisen. Vaikka MDS osoitti parhaat tulokset, se on melko hidas; myös scikit-learnin toteutus ei tue näytteen ulkopuolista muunnosta. Se ei ole ongelma tutkimuksessa, mutta se voi olla tuotannossa, joten käytämme sen sijaan Kernel PCA: ta. Ytimen PCA: n osalta ei pidä unohtaa soveltaa etämatriisiin etukäteen radiaalista ydintä.

Kuinka valitset lähtöulottuvuuksien määrän? Analyysi osoitti, että jopa 3D toimii kunnolla. Asettaaksemme upotustulokseksi 10D vain olla turvallisella puolella äläkä jätä pois tärkeitä tietoja. Parhaan suorituskyvyn saavuttamiseksi lähtöulottuvuuksien määrä voidaan asettaa mallihyperparametriksi ja virittää sitten ristivalidoinnilla.

Joten meillä on 10 numeerista ominaisuutta, joita voimme käyttää tulona melkein mihin tahansa luokitusmalliin. Entä yksi lineaarinen ja yksi epälineaarinen malli: esimerkiksi logistinen regressio ja gradienttitehostus? Vertailun vuoksi käytämme myös näitä kahta mallia, joissa on täyden matriisin matriisi. Testataan sen päälle myös SVM (SVM on suunniteltu toimimaan suoraan etäisyysmatriisin kanssa, joten upottamista ei tarvita).

Testisarjan mallin tarkkuus on esitetty alla (10 juna- ja testiaineistoa luotiin, jotta voimme arvioida mallin varianssin):

  • Liukuvärjäys pariksi upottamisen kanssa (KernelPCA + GB) saa ensimmäisen sijan. Se ylitti Gradient Boosting -ominaisuuden ilman upottamista (GB). Tässä ytimen PCA osoittautui hyödylliseksi.
  • Logistinen regressio teki ok. Mielenkiintoista on, että logistinen regressio ilman upotusta (LR) sujui paremmin kuin upottaminen (KernelPCA + LR). Tämä ei ole aivan odottamatonta. Lineaariset mallit eivät ole kovin joustavia, mutta suhteellisen vaikeita sovittaa. Tässä upottamisen aiheuttama tiedon menetys näyttää olevan suurempi kuin pienemmän panosulottuvuuden hyöty.
  • Viimeinen mutta ei vähäisin, SVM toimi myös hyvin, vaikka tämän mallin varianssi onkin melko merkittävä.

Mallin tarkkuus

Mallin tarkkuus

Tämän käyttötapauksen Python-koodi on saatavana GitHubista .

Johtopäätös

Olemme selittäneet, mitä upotukset ovat, ja osoittaneet, kuinka niitä voidaan käyttää etäisyysmatriisien kanssa reaalimaailman ongelmien ratkaisemiseen. Tuomion aika:

Ovatko upotukset jotain, mitä datatieteilijän tulisi käyttää? Katsotaanpa tarinan molempia puolia.

Plussat ja miinukset upotusten käytöstä

Plussat:

  • Tämän lähestymistavan avulla voimme työskennellä epätavallisten tai monimutkaisten tietorakenteiden kanssa niin kauan kuin pystyt määrittelemään etäisyyden, jonka yleensä voit tietynasteisella tietämyksellä, mielikuvituksella ja onnella.
  • Lähtö on matalaulotteinen numeerinen data, jonka voit helposti analysoida, klusteroida tai käyttää mallin ominaisuuksina melkein mihin tahansa koneoppimismalliin.

Haittoja:

  • Tätä lähestymistapaa käytettäessä menetämme välttämättä joitain tietoja:

    • Ensimmäisen vaiheen aikana, kun alkuperäiset tiedot korvataan samankaltaisuusmatriisilla
    • Toisen vaiheen aikana, kun pienennämme mittasuhteita upottamalla
  • Tietojen ja etäisyystoiminnon mukaan etäisyysmatriisin laskeminen voi olla aikaa vievää. Tätä voidaan lieventää tehokkaasti kirjoitetulla etäisyysfunktiolla.
  • Jotkin upotukset ovat erittäin herkkiä datan melulle. Tätä voidaan lieventää lisätietojen puhdistuksella.
  • Jotkut upotukset ovat herkkiä sen hyperparametrien valinnalle. Tätä voidaan lieventää huolellisella analyysillä tai hyperparametrien virityksellä.

Vaihtoehdot: Miksi et käytä ...?

  • Miksi ei vain upottaa suoraan dataan etäisyysmatriisin sijaan?
    Jos tiedät upotuksen, joka pystyy koodaamaan tietosi tehokkaasti, kaikin keinoin, käytä sitä. Ongelmana on, että sitä ei ole aina olemassa.
  • Miksi ei vain käyttää klusterointia etäisyysmatriisissa?
    Jos ainoa tavoitteesi on segmentoida tietojoukko, se olisi täysin okei tehdä niin. Jotkut klusterointimenetelmät hyödyntävät myös upotuksia (esimerkiksi Spektraalinen ryhmittely ). Jos haluat oppia lisää, tässä on klusteroinnin opetusohjelma .
  • Miksi et käyttäisi vain matriisimatriisia ominaisuuksina?
    Etäisyysmatriisin koko on $ (n_ {näytettä}, n_ {näytettä}) $. Kaikki mallit eivät pysty käsittelemään sitä tehokkaasti - jotkut saattavat sopia liikaa, jotkut saattavat olla hitaita, jotkut saattavat epäonnistua kokonaan. Pienellä varianssilla varustetut mallit olisivat tässä hyvä valinta, kuten lineaariset ja / tai laillistetut mallit.
  • Miksi ei vain käyttää SVM: ää etäisyysmatriisin kanssa?
    SVM on hieno malli, joka toimi hyvin käyttötapauksessamme. On kuitenkin joitain varoituksia. Ensinnäkin, jos haluamme lisätä muita ominaisuuksia (voi olla vain yksinkertaisia ​​numeerisia numeroita), emme voi tehdä sitä suoraan. Meidän on sisällytettävä ne samankaltaisuusmatriisiin ja mahdollisesti menetettävä arvokasta tietoa. Toiseksi, niin hyvä kuin SVM on, toinen malli voi toimia paremmin ongelmasi kannalta.
  • Miksi ei vain käyttää syvää oppimista?
    Se on totta, mihin tahansa ongelmaan, voit löytää sopivan hermoverkon jos haet tarpeeksi kauan. Muista kuitenkin, että tämän hermoverkon löytäminen, kouluttaminen, validointi ja käyttöönotto ei välttämättä ole yksinkertainen. Joten, kuten aina, käytä parasta harkintasi.

Yhdessä lauseessa

Upotukset etäisyysmatriisien kanssa ovat uskomattoman hyödyllinen työkalu, jos satut työskentelemään monimutkaisten ei-numeeristen tietojen kanssa, varsinkin kun et pysty muuntamaan tietojasi suoraan vektoritilaan ja haluat mieluummin mallisi pienimittaisen syötteen.

Perustietojen ymmärtäminen

Mikä on upottaminen?

Upottaminen on matalaulotteinen esitys tiedoista. Esimerkiksi maailmankartta on 2D-esitys maapallon 3D-pinnasta ja Diskreetti Fourier-sarja on ääretön ulotteinen ääni-aalto.

Mikä on upottamisen tarkoitus?

Upottaminen voi vähentää datan ulottuvuuksia ja säilyttää samalla tärkeät sisäiset suhteet datassa. Esimerkiksi maailmankartta säilyttää maastojen ja valtamerien suhteelliset sijainnit.

Kuinka upotukset koulutetaan?

Algoritmien upottaminen ML: ään kuuluvat yleensä valvomattomaan oppimiseen. Ne työskentelevät merkitsemättömän datan suhteen, mutta vaativat hyperparametrien, kuten ulostulomittojen lukumäärän, manuaalisen asettamisen.

Miksi upottaminen on tärkeää?

Korkeaulotteista tietoa voi olla vaikea analysoida, piirtää tai käyttää ML-mallin kouluttamiseen. Upottaminen voi vähentää ulottuvuuksien määrää ja yksinkertaistaa huomattavasti näitä tehtäviä datatieteilijälle.

Toimivatko upotukset muiden kuin numeeristen tietojen kanssa?

Jotkin upotukset on suunniteltu toimimaan ei-numeeristen tietojen kanssa. Esimerkiksi kuuluisa upottava word2vec muuntaa sanat vektoreiksi. Tämä artikkeli näyttää, kuinka upotukset voivat toimia ei-numeeristen tietojen kanssa hyvin yleisissä asetuksissa.

Sivunopeus 101: Säätiö mobiilikäyttöliittymäsuunnittelijoille

Mobiilisuunnittelu

Sivunopeus 101: Säätiö mobiilikäyttöliittymäsuunnittelijoille
Suunnittelu ihmisen käyttäytymiseen: Aineettoman määritteleminen

Suunnittelu ihmisen käyttäytymiseen: Aineettoman määritteleminen

Ux-Suunnittelu

Suosittu Viestiä
Onko Yhdysvaltain oman pääoman joukkorahoitusmarkkinat eläneet odotuksia?
Onko Yhdysvaltain oman pääoman joukkorahoitusmarkkinat eläneet odotuksia?
Fintech-teollisuuden tila (infografiikan kanssa)
Fintech-teollisuuden tila (infografiikan kanssa)
10 Yleisimmät verkkoturvan haavoittuvuudet
10 Yleisimmät verkkoturvan haavoittuvuudet
Kuka tiesi Adobe CC: n voivan kehystää?
Kuka tiesi Adobe CC: n voivan kehystää?
Opas UTF-8-koodaukseen PHP: ssä ja MySQL: ssä
Opas UTF-8-koodaukseen PHP: ssä ja MySQL: ssä
 
Fintech ja pankit: Kuinka pankkisektori voi reagoida häiriöiden uhkaan?
Fintech ja pankit: Kuinka pankkisektori voi reagoida häiriöiden uhkaan?
Shopify-suunnitteluvinkit ja UX: n parhaat käytännöt
Shopify-suunnitteluvinkit ja UX: n parhaat käytännöt
Suorita matematiikka: Mikropalvelusovellusten skaalaus orkesterin kanssa
Suorita matematiikka: Mikropalvelusovellusten skaalaus orkesterin kanssa
Aloittelijan opas vedenalaiseen valokuvaukseen iPhonella
Aloittelijan opas vedenalaiseen valokuvaukseen iPhonella
Motivaation säännöt: Tarina epäonnistuneiden myyntikannustinjärjestelmien korjaamisesta
Motivaation säännöt: Tarina epäonnistuneiden myyntikannustinjärjestelmien korjaamisesta
Luokat
Tuotemerkin SuunnitteluWeb-KäyttöliittymäVarastointiKetterä KykyLähettäminenIhmiset Ja JoukkueetSijoittajat Ja RahoitusTuotteen ElinkaariProsessi Ja TyökalutLiikevaihdon Kasvu

© 2023 | Kaikki Oikeudet Pidätetään

socialgekon.com