추천 알고리즘은 사용자 행동이나 선호 데이터를 기반으로 개인에게 가장 관련성이 높은 항목을 자동으로 추천하는 시스템입니다.
이번 게시글에서는 SAS를 활용해 고전적인 추천 알고리즘인 Popularity Based Recommendation 과 Rule-Based를 구현한 예시를 소개합니다.
구매 데이터를 활용해 인기 있는 제품을 추천
사용 데이터는 Kaggle에서 다운로드 할 수 있는 데이터로 E-Commerce 스토어에서 발생한 구매이력 데이터로 제품 id, 사용자 id, 제품 카테고리, 구매 날짜, 구매 수량 등의 컬럼으로 구성되어 있습니다.
proc sql;
create table item_popularity as
select category_id, sum(product_id) as total_purchases
from purchase_data
group by category_id
order by total_purchases desc;
quit;
proc print data=item_popularity;
title "Top Popular Items Recommendation";
run;
위 Kaggle의 데이터를 Purchase_data로 데이터를 생성합니다.
product_id별로 총 구매 횟수를 계산하고, 구매 수가 많은 순서대로 정렬합니다.
상위 인기 아이템을 추천하기 위해서 item_popularity로 데이터를 출력하여 가장 인기 있는 아이템을 출력합니다. 가장 많이 구매된 순서대로 제품 목록이 출력되고, 인기있는 데이터를 추천합니다.
사용자가 정의한 특정 규칙에 따라 추천 항목을 제공하는 알고리즘
고객의 연령대와 구매 내역에 따라 특정 제품을 추천하는 방식
data customer_data;
input user_id $ age;
datalines;
U1 25
U2 35
U3 45
U4 55
U5 65
;
run;
data purchase_data;
input user_id $ item_id $ purchase_count;
datalines;
U1 A1 1
U1 A2 3
U2 A1 2
U2 A3 1
U3 A2 2
U4 A1 1
U4 A3 2
U5 A2 1
U5 A3 1
;
run;
활용 예제는 가상의 데이터입니다.
customer data - 고객 데이터로 user_id와 age 칼럼으로 구성되어 있고, purchase_data - user_id가 샘플 구매 내역에 관한 데이터입니다.
Data rule_based_recommendation;
merge customer_data(in=a) purchase_data(in=b);
by user_id;
if a and b then do;
if age < 30 then recommended_item = 'A1';
else if 30 <= age < 50 then recommended_item = 'A2';
else if age >= 50 then recommended_item = 'A3';
end;
run;
proc print data=rule_based_recommendation;
title "Rule-Based Recommendation Result";
var user_id age recommended_item;
run;
30세 미만은 A1 제품을 추천하고, 30 ~ 49세는 A2 제품, 50세 이상은 A3를 추천하는 rule_based_recommendation 테이블을 생성합니다.
proc print 를 활용해 각 고객별로 연력과 추천 아이템을 출력합니다.
Registration is now open for SAS Innovate 2025 , our biggest and most exciting global event of the year! Join us in Orlando, FL, May 6-9.
Sign up by Dec. 31 to get the 2024 rate of just $495.
Register now!