Matriisifaktorointi SVD:llä
Käyttäjä–kohde-matriisi, SVD-hajotelma, latentit tekijät, toteutus Surprise-kirjastolla.
Matriisifaktorointi SVD:llä on ilmainen Oppikaa tekoälyä Pythonilla-oppitunti CoddyKitissä. Tämä on oppitunti 2/4. Voit lukea tästä oppimispolusta kokonaan mitkä tahansa 3 oppituntia ilmaiseksi — sen jälkeen CoddyKit PRO avaa kaikki oppitunnit sekä käytännön harjoittelun sisäänrakennetulla koodieditorilla ja ympäri vuorokauden toimivalla tekoälytuutorilla. Oppitunti kuuluu Oppikaa tekoälyä Pythonilla-oppimispolkuun, ja edistymisesi synkronoituu verkon ja CoddyKit-sovelluksen välillä. Oppikaa tekoälyä Pythonilla-kurssilla on yhteensä 4 oppituntia.
Miksi käyttää matriisifaktorointia?
Käyttäjä–kohde-matriisi on valtava ja enimmäkseen tyhjä. Matriisifaktorointi tiivistää sen kahdeksi pienemmäksi latenttien tekijöiden matriisiksi, joista toinen kuvaa käyttäjiä ja toinen kohteita. Niiden tulo rekonstruoi arvosanat ja täydentää puuttuvat arvot. Tämä käsittelee harvuutta paljon paremmin kuin naapurimenetelmät.
Intuitio latenttien tekijöiden taustalla
Jokainen käyttäjä ja kohde kuvataan lyhyellä piirteitä sisältävällä vektorilla. Elokuvien tapauksessa piirteet voivat esimerkiksi kuvata toiminnallisuutta tai komediallisuutta. Ennustettu arvosana on käyttäjävektorin ja kohdevektorin pistetulo, joka opitaan pelkästään datasta.
SVD suosituksissa
SVD-tyyppiset mallit oppivat nämä tekijät minimoimalla tunnettujen arvosanojen ennustusvirheen ja käyttämällä lisäksi regularisointia. surprise-kirjasto tarjoaa valmiin suosituksiin optimoidun SVD-toteutuksen, jonka Netflix Prize teki tunnetuksi.
Surprise-kirjasto
Tuokaa käyttöön tarvitsemanne osat: algoritmi, datasetin käsittelyyn tarkoitettu kääre ja lukija, joka kuvaa datan muodon.
from surprise import SVD, Dataset, Reader
from surprise.model_selection import cross_validateReader ja rating_scale
Reader kertoo Surpriselle kelvollisen arvosana-alueen asetuksen rating_scale avulla. Sovittakaa se dataanne, esimerkiksi arvoihin 1–5 tähteä, tai ennusteiden kalibrointi vääristyy.
reader = Reader(rating_scale=(1, 5))DataFramen lataaminen
Ladatkaa DataFrame, jossa on täsmälleen kolme saraketta tässä järjestyksessä: käyttäjä, kohde, arvosana.
data = Dataset.load_from_df(
df[["user_id", "item_id", "rating"]],
reader
)Ristiinvalidointi
cross_validate arvioi mallin useilla osajoukoilla ja ilmoittaa virhemittarit, joiden avulla voitte arvioida tarkkuutta rehellisesti erillään pidetyllä datalla.
results = cross_validate(
SVD(), data,
measures=["RMSE", "MAE"],
cv=5,
verbose=True
)RMSE ja MAE
- RMSE (root mean squared error eli keskineliövirheen neliöjuuri) rankaisee suurista virheistä voimakkaasti.
- MAE (mean absolute error eli keskimääräinen absoluuttinen virhe) on keskimääräinen absoluuttinen poikkeama, jota on helpompi tulkita.
Molemmissa pienempi arvo on parempi. RMSE on arvosanojen ennustamisen tavallisin päämittari.
Koko aineiston käyttäminen koulutuksessa
Kun validointi on tehty, kouluttakaa malli koko datasetillä ennen ennusteiden tarjoamista.
trainset = data.build_full_trainset()
algo = SVD()
algo.fit(trainset)Ennusteiden tekeminen
algo.predict(uid, iid) palauttaa ennusteolion, jonka .est-kenttä on kyseisen käyttäjä–kohde-parin arvioitu arvosana.
pred = algo.predict(uid="user_42", iid="item_99")
print(pred.est) # estimated ratingHyperparametrien säätäminen
Tärkeitä SVD:n säätöparametreja ovat n_factors (latentti ulottuvuus), n_epochs, lr_all (oppimisnopeus) ja reg_all (regularisointi). Käyttäkää GridSearchCV-menetelmää parhaan yhdistelmän etsimiseen RMSE:n perusteella.
from surprise.model_selection import GridSearchCV
grid = {"n_factors": [50, 100], "reg_all": [0.02, 0.1]}
gs = GridSearchCV(SVD, grid, measures=["rmse"], cv=3)
gs.fit(data)
print(gs.best_params["rmse"])Pikatarkistus
Testatkaa tietonne matriisifaktoroinnista.
Kertaus
Opitte matriisifaktoroinnin SVD:n avulla: latentit käyttäjä- ja kohdevektorit, joiden pistetulo ennustaa arvosanoja. Asetitte surprise-kirjaston avulla rating_scale-alueen, latasitte datan, suorititte cross_validate-arvioinnin mittareilla RMSE/MAE, sovititte mallin ja kutsuitte algo.predict(uid, iid)-metodia. Seuraavaksi: sisältöpohjainen suodatus.
Opi Python tekoälytuutorin avulla — ilmaiseksi
Kirjoita ja suorita oikeaa koodia selaimessa, saa välitöntä apua tekoälytuutorilta ympäri vuorokauden ja jatka siitä, mihin jäit, verkossa tai sovelluksessa.
- Kurssit
- 53
- Oppitunnit
- 225
Usein kysytyt kysymykset
Onko oppitunti ”Matriisifaktorointi SVD:llä” ilmainen?
Kyllä — voit lukea täällä verkossa kokonaan ilmaiseksi mitkä tahansa Oppikaa tekoälyä Pythonilla-oppimispolun 3 oppituntia, myös oppitunnin “Matriisifaktorointi SVD:llä”. Sen jälkeen CoddyKit PRO avaa kaikki oppitunnit sekä interaktiiviset harjoitukset sisäänrakennetulla koodieditorilla ja ympäri vuorokauden toimivalla tekoälytuutorilla. Oppikaa tekoälyä Pythonilla-kurssilla on yhteensä 4 oppituntia.
Mitä opin oppitunnilla ”Matriisifaktorointi SVD:llä”?
Käyttäjä–kohde-matriisi, SVD-hajotelma, latentit tekijät, toteutus Surprise-kirjastolla. Harjoittelet Oppikaa tekoälyä Pythonilla-aihetta koodilla, jonka suoritat suoraan selaimessa. Ympäri vuorokauden käytettävissä oleva tekoälytuutori vastaa kysymyksiisi oppitunnin aikana.
Tarvitsenko kokemusta aloittaakseni Oppikaa tekoälyä Pythonilla-opiskelun?
Aiempi kokemus ei ole tarpeen. CoddyKitin Oppikaa tekoälyä Pythonilla-oppimispolku sopii vasta-alkajista edistyneisiin, joten voit aloittaa tästä tai alusta ja edetä omaan tahtiisi. Tämä on oppitunti 2/4.
Kuinka kauan ”Matriisifaktorointi SVD:llä”-oppitunnin suorittaminen kestää?
Useimmat CoddyKitin oppitunnit kestävät noin 5–10 minuuttia. Jokainen oppitunti on lyhyt ja interaktiivinen, joten edistyt tasaisesti ja voit jatkaa siitä, mihin jäit – sekä verkossa että sovelluksessa.
Voinko kirjoittaa ja suorittaa koodia tällä Oppikaa tekoälyä Pythonilla-oppitunnilla?
Kyllä. Jokainen Oppikaa tekoälyä Pythonilla-oppitunti sisältää sisäänrakennetun koodieditorin, joten voit kirjoittaa ja suorittaa oikeaa koodia suoraan selaimessa ja saada välitöntä palautetta tekoälyltä – paikallista asennusta ei tarvita.
Kaikki tämän kurssin oppitunnit
- Yhteistoiminnallinen suodatus: käyttäjä- ja kohdepohjainen
- Matriisifaktorointi SVD:llä
- Sisältöpohjainen suodatus
- Hybridijärjestelmät ja arviointimittarit