Veri Setlerimiz ve Etik Sözleşme: MovieLens'ten H&M'e Sahaya İniş
Kurs boyunca kullanacağımız 8 datasetin tam profili: MovieLens (3 boyut), Amazon Reviews (2023), RetailRocket, H&M Fashion, MIND News, Spotify MPD, Last.fm, Yelp. Her birinin lisansı, boyutu, indirme adımı, neye uygun olduğu ve etik sözleşme.
Şükrü Yusuf KAYA
22 dakikalık okuma
Başlangıç📊 Bu dersin amacı
Bir recommender mühendisinin hangi datasetlerle pratik yaptığı çoğu zaman onun bilgi sınırlarını belirler. Bu kurs boyunca 8 farklı, gerçek dünyadan, halka açık dataset kullanacağız. Her birinin gücü ayrı, lisansı ayrı, kullanım ahlakı ayrı. Bu derste hepsini tanıyacaksın — sonra ihtiyaç ettiğinde geri dönüp referans yapabileceksin.
8 Dataset, 8 Farklı Problem#
İlerleyen modüllerde her teknik konunun ideal datasetiyle eşleşmesi var. Önce bir genel bakış:
| # | Dataset | Boyut | Tür | Hangi Modülde? |
|---|---|---|---|---|
| 1 | MovieLens-100K | 100K rating | Explicit (1-5) | Modül 5, 6 — didaktik baseline |
| 2 | MovieLens-1M | 1M rating | Explicit | Modül 6, 7 — algoritma benchmarking |
| 3 | MovieLens-25M | 25M rating | Explicit + ek metadata | Modül 8-10 — deep learning |
| 4 | Amazon Reviews 2023 | 570M review | Explicit + metin | Modül 4 (content-based), 17 (LLM-rec) |
| 5 | RetailRocket | 2.7M event | Implicit (view, addtocart, transaction) | Modül 10, 12 — sequential + two-tower |
| 6 | H&M Fashion Recs | 31M transaction | Implicit + zengin metadata | Modül 14, 25 (capstone) |
| 7 | MIND News | 24M impression | News articles + click | Modül 17, 18 — LLM-rec |
| 8 | Spotify Million Playlist | 1M playlist | Sequential (playlist context) | Modül 10 — sequential |
| 9 | Yelp Open Dataset | 7M review | Multi-modal (rating + metin + lokasyon) | Modül 4, 11 (graph) |
| 10 | Last.fm 1K Users | 19M listening event | Implicit (full session) | Modül 10 — session-based |
10 dataset oldu — ben "8" demiştim ama yolculukta MovieLens-25M ve Yelp'i de eklemek istedim. Çünkü değerler.
1-2-3. MovieLens Üçlüsü (100K, 1M, 25M)#
GroupLens araştırma grubu (University of Minnesota) tarafından maintain edilen — recommender systems'in de facto standardı. Üç boyutta var:
Profilleri#
| Sürüm | Yıl | User | Item | Rating | Boyut (disk) |
|---|---|---|---|---|---|
| ML-100K | 1998 | 943 | 1,682 | 100,000 | 5 MB |
| ML-1M | 2003 | 6,040 | 3,706 | 1,000,209 | 24 MB |
| ML-25M | 2019 | 162,541 | 62,423 | 25,000,095 | 250 MB |
Lisans#
GroupLens Research Use License — akademik ve eğitim amaçlı kullanım serbest. Ticari kullanım için izin gerekir. Bu kurs eğitim — sorun yok.
İndirme#
# MovieLens 100K wget https://files.grouplens.org/datasets/movielens/ml-100k.zip -P data/ unzip data/ml-100k.zip -d data/ # MovieLens 1M wget https://files.grouplens.org/datasets/movielens/ml-1m.zip -P data/ unzip data/ml-1m.zip -d data/ # MovieLens 25M wget https://files.grouplens.org/datasets/movielens/ml-25m.zip -P data/ unzip data/ml-25m.zip -d data/
Hızlı yükleme (1M örneği)#
import polars as pl ratings = pl.read_csv( "data/ml-1m/ratings.dat", separator="::", has_header=False, new_columns=["user_id", "movie_id", "rating", "timestamp"], schema_overrides={"user_id": pl.Int32, "movie_id": pl.Int32, "rating": pl.Int8}, ) movies = pl.read_csv( "data/ml-1m/movies.dat", separator="::", has_header=False, new_columns=["movie_id", "title", "genres"], encoding="latin-1", ) print(ratings.head()) print(f"Ratings: {ratings.height:,}, Unique users: {ratings['user_id'].n_unique():,}")
Neden bu üçü?#
- 100K — algoritma debug, hızlı iterasyon. CPU üzerinde 5 saniyede eğitim.
- 1M — algoritma benchmark. Yayınlanan metrikler çoğunlukla burada.
- 25M — modern deep model'lerin gerçek test alanı. Embedding tabloları ciddileşir.
Önemli not: Production'da senin verin MovieLens'ten 100-1000x büyük olacak. Ama metodoloji aynı. MovieLens'i didaktik bir koşu pisti olarak düşün.
4. Amazon Reviews 2023 (UCSD)#
McAuley lab'ın (UCSD) maintain ettiği devasa dataset. Hem rating hem review metni hem item metadata hem image var — yani multimodal.
Profil#
| Versiyon | Yıl | Toplam Review | Kategoriler |
|---|---|---|---|
| Amazon Reviews 2014 | 2014 | 142M | 24 |
| Amazon Reviews 2018 | 2018 | 233M | 29 |
| Amazon Reviews 2023 | 2023 | 570M | 33 |
Lisans#
Araştırma amaçlı serbest. Ticari kullanım için yazılı izin.
İndirme#
amazon-reviews-2023.github.io sayfasından. Kategori bazlı bölünmüş — hepsi birden değil, ihtiyacın olanı al.
# Örnek: Beauty kategorisi from datasets import load_dataset ds = load_dataset("McAuley-Lab/Amazon-Reviews-2023", "raw_review_All_Beauty", trust_remote_code=True) print(ds)
Neden kritik?#
- Content-based (Modül 4) için ürün metni/kategori bilgisi var.
- LLM-based rec (Modül 17) için review metni harika.
- Cold-start araştırması için ideal (yeni ürünler sürekli ekleniyor).
- Multimodal (Modül 19'da değinilen) için image link'leri var.
5. RetailRocket#
Bir gerçek e-ticaret sitesinin anonymize edilmiş 4.5 aylık trafiği. Implicit feedback'in altın standardı.
Profil#
- 1.4M user, 235K item
- 2.76M event:
- 2.66M view
- 69K addtocart
- 23K transaction
- Zaman damgalı, session-based analiz için ideal.
Lisans#
CC0 (Public Domain) — istediğin gibi kullan.
İndirme#
# Kaggle CLI kurulu olmalı kaggle datasets download -d retailrocket/ecommerce-dataset -p data/ unzip data/ecommerce-dataset.zip -d data/retailrocket/
Yükleme#
import polars as pl events = pl.read_csv("data/retailrocket/events.csv") print(events.head()) print(events["event"].value_counts())
Neden kritik?#
- Implicit feedback (Modül 5, 6) için gerçek log.
- Sequential modeling (Modül 10) için time-ordered event stream.
- Two-tower retrieval (Modül 12) için kullanıcı-ürün matching.
- Funnel analysis — view → addtocart → transaction dönüşüm.
6. H&M Personalized Fashion Recommendations (Kaggle 2022)#
Capstone projemiz (Modül 25) bu dataset üzerinde. 2022 Kaggle yarışmasıydı, dataset hala açık.
Profil#
- 31M transaction
- 1.4M customer, 105K article (ürün)
- 2 yıllık satın alma geçmişi
- Article images (ürün fotoğrafları) var
- Article metadata (renk, tip, kategori, departman, ...) zengin
Lisans#
H&M tarafından yayınlanan, Kaggle competition kuralları geçerli — eğitim/araştırma amaçlı serbest.
İndirme#
kaggle competitions download -c h-and-m-personalized-fashion-recommendations -p data/ unzip data/h-and-m-personalized-fashion-recommendations.zip -d data/hm/
Yükleme#
import polars as pl trans = pl.read_csv("data/hm/transactions_train.csv") articles = pl.read_csv("data/hm/articles.csv") customers = pl.read_csv("data/hm/customers.csv") print(f"Transactions: {trans.height:,}") print(f"Articles: {articles.height:,}") print(f"Customers: {customers.height:,}")
Neden ideal capstone?#
- Gerçek bir e-ticaret problemi (öneri → MAP@12 metric).
- Image data (multi-modal) + structured data (categorical features).
- Cold-start hem user hem item tarafından mevcut.
- Kaggle leaderboard ile gerçek karşılaştırma yapabilirsin.
7-10. Diğer Datasetler (Hızlı Geçiş)#
MIND News (Microsoft, 2020)#
- 24M impression, 1M user, 161K news article
- News recommendation için endüstri standardı
- LLM-rec (Modül 17) ve generative retrieval (Modül 18) için ideal
- msnews.github.io
Spotify Million Playlist Dataset (2018)#
- 1M playlist, 2.3M unique track
- Playlist continuation problemi (RecSys Challenge 2018)
- Sequential rec (Modül 10) için
- Aiccrowd üzerinde mevcut
Last.fm 1K Users (2009)#
- 19M listening event, full timestamp + session
- En eski "session-based" dataset'lerden
- Müzik domain'inde session modelleme klasiği
Yelp Open Dataset#
- 7M review, 150K business, 2M user
- Lokasyon + business + rating + metin
- Graph-based rec (Modül 11) için zengin (user-business-friend graph)
- yelp.com/dataset
🛡️ Etik Sözleşme — Lütfen Oku
Bu datasetler 'açık' olsa da içinde gerçek insanların gerçek davranışları var. Anonymize edilmiş olmaları yetmez — pratik etik sözleşmemiz aşağıda.
Etik Sözleşme#
Bu kursta her dataset için kabul ediyoruz:
1. Re-identification yapmaya çalışmayız#
Anonymize edilmiş veriden bireyleri tekrar tanımlamak (örn. bir kullanıcının davranış pattern'inden başka platformda kim olduğunu bulmak) hem teknik açıdan mümkün hem etik açıdan kesinlikle yasak. Bu kurs sırasında denemiyoruz bile.
2. Dataset'i ticari amaçla kullanmayız#
Bu kurs eğitim amaçlı. Eğer bir startup'ın için bu datasetlerden birini kullanmak istiyorsan — lisansını tekrar oku, gerekirse veri sahibinden yazılı izin al.
3. Türetilmiş veri (modeller, embeddings) sınırını koruruz#
Bir dataset üzerinde eğittiğin model bir tür veri türevidir. O modeli halka açacaksan (HuggingFace, paper vb.) — yine dataset lisansını oku. Bazıları (MovieLens) sorun çıkarmaz, bazıları (H&M) yazılı izin ister.
4. Bias ve fairness'i ciddiye alırız#
Hiçbir dataset bias'sız değildir. Amazon Reviews'da batı dünyası ağırlıklı, MIND News'ta İngilizce-merkezli, Yelp'te Kuzey Amerika dominant. Modellerimizi eğitirken bu sınırlamayı bilerek çalışırız.
5. Yine de sahaya iniyoruz#
Bu kurs salt akademik kalmıyor — gerçek veriyle pratik yapmak gerekiyor. Etiket "open dataset" olan veriyi doğru çerçevede kullanmak hem yasal hem etik. Burada zihnimizi kapatmak yerine açıyoruz.
Pratik İndirme İpuçları#
Kaggle API kurulumu#
# Kaggle hesabın olmalı pip install kaggle mkdir ~/.kaggle # kaggle.com → account → API → Create New Token, indir mv ~/Downloads/kaggle.json ~/.kaggle/ chmod 600 ~/.kaggle/kaggle.json # Test kaggle datasets list -s "movielens"
Polars ile büyük CSV'leri hızlı yükleme#
import polars as pl # Lazy API — tüm dosyayı RAM'e yüklemiyor, gerektiğinde okur df = pl.scan_csv("data/hm/transactions_train.csv") print(df.select(pl.count()).collect()) # 31M row sayısı # Filter + groupby — chunked olarak işler top_articles = ( df.group_by("article_id") .agg(pl.count().alias("n")) .sort("n", descending=True) .head(20) .collect() ) print(top_articles)
Parquet'e çevirme (daha küçük + 10x hızlı load)#
import polars as pl df = pl.read_csv("data/hm/transactions_train.csv") df.write_parquet("data/hm/transactions_train.parquet", compression="zstd") # 5GB CSV → ~500MB parquet
🎉 Modül 0 tamamlandı — yola koyuluyoruz
5 dersi bitirdin: (1) Disiplinin önemi, (2) Recommender Engineer kim, (3) Kurs felsefesi, (4) Atölye kurulumu, (5) Datasetler. Atölyen kurulu, dataset'ler hazır, etik sözleşme imzalı. Bir sonraki modülde gerçek mühendisliğe başlıyoruz: Modül 1, Öneri Sistemleri Manzarası. ☕ Bir mola al, sonra devam edelim.
Sık Sorulan Sorular
MovieLens-100K. 5 MB, anında indirilir, anında yüklenir, anında eğitim biter. Tüm Modül 5 ve 6 boyunca onu kullanacağız. Sonra Modül 7'de MovieLens-1M'e, Modül 10'da MovieLens-25M'e ve RetailRocket'e geçiyoruz.
Yorumlar & Soru-Cevap
(0)Yorum yazmak için giriş yap.
Yorumlar yükleniyor...
İlgili İçerikler
Modül 0: Kurs Çerçevesi ve Atölye Kurulumu
Öneri Sistemleri Neden Bu Kadar Önemli? Bir Disiplinin Doğuşu, Bugünü ve Yarını
Öğrenmeye BaşlaModül 0: Kurs Çerçevesi ve Atölye Kurulumu
Recommender Engineer Kimdir? Yetkinlik Atlası ve Junior → Staff Kariyer Haritası
Öğrenmeye BaşlaModül 0: Kurs Çerçevesi ve Atölye Kurulumu