BookmarkSubscribeRSS Feed

고전적 추천 알고리즘

Started ‎10-31-2024 by
Modified ‎10-31-2024 by
Views 353

추천 알고리즘은 사용자 행동이나 선호 데이터를 기반으로 개인에게 가장 관련성이 높은 항목을 자동으로 추천하는 시스템입니다.

이번 게시글에서는 SAS를 활용해 고전적인 추천 알고리즘인 Popularity Based Recommendation 과 Rule-Based를 구현한 예시를 소개합니다.

1) Popularity Based Recommendation

 

  • 구매 데이터를 활용해 인기 있는 제품을 추천

 

image.png

Link

 

사용 데이터는 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로 데이터를 출력하여 가장 인기 있는 아이템을 출력합니다. 가장 많이 구매된 순서대로 제품 목록이 출력되고, 인기있는 데이터를 추천합니다.

 

 

2) Rule-Based

 

  • 사용자가 정의한 특정 규칙에 따라 추천 항목을 제공하는 알고리즘

  • 고객의 연령대와 구매 내역에 따라 특정 제품을 추천하는 방식

 

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 를 활용해 각 고객별로 연력과 추천 아이템을 출력합니다.

Version history
Last update:
‎10-31-2024 07:42 AM
Updated by:
Contributors

SAS Innovate 2025: Register Now

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!

Article Labels
Article Tags