728x90
반응형

(개념) 행렬 분해(Matrix Factorization) 기법 중 하나로 사용자와 아이템의 잠재 요인(Latent Factor)을 추정하여 개인화된 추천을 제공하는 알고리즘

 

(동작방식) 사용자-아이템 상호작용 행렬을 두 개의 저차원 잠재 요인 행렬로 분해하며, 교대로 각 행렬을 고정하고 다른 행렬을 최적화하는 방식을 반복하여 손실 함수를 최소화함

 

(특징)

- 대규모 데이터셋에서 효율적으로 작동

- 행렬 분해 과정에서 발생할 수 있는 결측값을 효과적으로 처리

- 병렬 처리가 가능하여 대용량 데이터에 대한 확장성이 뛰어남

 

 

 

Python에서 PySpark를 사용한 ALS 구현:

from pyspark.ml.recommendation import ALS
from pyspark.sql import SparkSession

# Spark 세션 생성
spark = SparkSession.builder.appName("ALS Example").getOrCreate()

# 데이터 준비
data = [
    (0, 0, 4.0),
    (0, 1, 2.0),
    (1, 1, 3.0),
    (1, 2, 4.0),
    (2, 1, 1.0),
]
columns = ["user", "item", "rating"]
df = spark.createDataFrame(data, columns)

# ALS 모델 생성 및 학습
als = ALS(
    maxIter=10,
    regParam=0.1,
    userCol="user",
    itemCol="item",
    ratingCol="rating",
    coldStartStrategy="drop",
)
model = als.fit(df)

# 추천 예측
recommendations = model.recommendForAllUsers(3)
recommendations.show()

 

 

 

https://spark.apache.org/docs/latest/ml-collaborative-filtering.html

 

Collaborative Filtering - Spark 3.5.3 Documentation

 

spark.apache.org

https://ds-ai96.github.io/2022/03/10/RS-Paper-No2.html

 

눈문 리뷰 - MF (Matrix Factorization) - Dasein's Archive

 

ds-ai96.github.io

 

728x90

'07.AI' 카테고리의 다른 글

LLM - 성능  (2) 2024.12.11
LLM - 검색 증강 생성 (RAG, Retrieval-augmented generation)  (2) 2024.12.11
생성형 AI - 코파일럿 (Copilot)  (5) 2024.12.09
LLM(Large Language Model)  (1) 2024.12.09
LLM - 검색 증강 생성 (RAG) - PaperQA2  (1) 2024.12.09
Posted by Mr. Slumber
,