BookmarkSubscribeRSS Feed

고전적 추천 알고리즘

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

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

이번 게시글에서는 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

hackathon24-white-horiz.png

The 2025 SAS Hackathon Kicks Off on June 11!

Watch the live Hackathon Kickoff to get all the essential information about the SAS Hackathon—including how to join, how to participate, and expert tips for success.

YouTube LinkedIn

Article Labels
Article Tags