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
https://ds-ai96.github.io/2022/03/10/RS-Paper-No2.html
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 |