İçeriğe geç

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ıç
Veri Setlerimiz ve Etik Sözleşme: MovieLens'ten H&M'e Sahaya İniş
📊 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ış:
#DatasetBoyutTürHangi Modülde?
1MovieLens-100K100K ratingExplicit (1-5)Modül 5, 6 — didaktik baseline
2MovieLens-1M1M ratingExplicitModül 6, 7 — algoritma benchmarking
3MovieLens-25M25M ratingExplicit + ek metadataModül 8-10 — deep learning
4Amazon Reviews 2023570M reviewExplicit + metinModül 4 (content-based), 17 (LLM-rec)
5RetailRocket2.7M eventImplicit (view, addtocart, transaction)Modül 10, 12 — sequential + two-tower
6H&M Fashion Recs31M transactionImplicit + zengin metadataModül 14, 25 (capstone)
7MIND News24M impressionNews articles + clickModül 17, 18 — LLM-rec
8Spotify Million Playlist1M playlistSequential (playlist context)Modül 10 — sequential
9Yelp Open Dataset7M reviewMulti-modal (rating + metin + lokasyon)Modül 4, 11 (graph)
10Last.fm 1K Users19M listening eventImplicit (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ümYılUserItemRatingBoyut (disk)
ML-100K19989431,682100,0005 MB
ML-1M20036,0403,7061,000,20924 MB
ML-25M2019162,54162,42325,000,095250 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#

VersiyonYılToplam ReviewKategoriler
Amazon Reviews 20142014142M24
Amazon Reviews 20182018233M29
Amazon Reviews 20232023570M33

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