AI

AI 기반 추천 시스템 아키텍쳐와 Python 코드

마시멜로를찾아서 2025. 3. 25. 10:41
반응형

AI 기반 추천 시스템은 사용자의 과거 행동과 선호도를 분석하여 개인화된 추천을 제공하는 시스템입니다. 이 시스템은 크게 데이터 수집, 데이터 처리 및 전처리, 모델 훈련, 추천 예측의 단계로 나눌 수 있습니다. 이 글에서는 AI 기반 추천 시스템을 구축하기 위한 AI 아키텍쳐Python 코드 예시를 제공합니다.


1. AI 기반 추천 시스템 아키텍쳐

1.1. 데이터 수집

추천 시스템의 첫 번째 단계는 데이터를 수집하는 것입니다. 사용자 행동 데이터(구매 이력, 클릭 이력, 검색 기록 등), 상품 정보, 사용자 프로필 데이터 등을 수집하여 모델 훈련에 사용할 수 있습니다. 데이터를 DB나 파일 시스템에서 읽어옵니다.

1.2. 데이터 전처리

수집된 데이터는 모델 학습에 적합하도록 전처리가 필요합니다. 전처리 과정에서 결측치를 처리하고, 텍스트 데이터를 벡터화하거나, 카테고리 데이터를 인코딩하는 작업을 수행합니다.

1.3. 모델 훈련

추천 시스템에서 많이 사용되는 모델은 협업 필터링(Collaborative Filtering), 콘텐츠 기반 필터링(Content-based Filtering), 하이브리드 방식입니다. AI 모델을 훈련시키는 데는 TensorFlow, Keras, Scikit-learn 등의 라이브러리를 사용할 수 있습니다.

1.4. 추천 예측

훈련된 모델을 기반으로 새로운 사용자의 행동을 예측하고 관련 상품을 추천합니다. 모델은 사용자에게 적합한 상품을 예측하여 Top-N 추천 리스트를 제공합니다.

1.5. 배포 및 피드백

추천 시스템은 운영 환경에 배포되고, 사용자 피드백을 통해 모델의 성능을 지속적으로 개선합니다. 배포 후에는 사용자 행동을 실시간으로 반영하여 추천을 업데이트합니다.


2. AI 기반 추천 시스템 코드 예시

아래는 Python을 사용하여 AI 기반 추천 시스템을 구축하는 코드 예시입니다. 이 예시는 Collaborative FilteringContent-based Filtering을 결합한 하이브리드 추천 시스템입니다. 사용자의 구매 이력 및 선호도를 기반으로 상품을 추천하는 시스템을 구현합니다.

2.1. 필요한 라이브러리 설치

pip install pandas numpy scikit-learn tensorflow

 

2.2. 코드 예시

import pandas as pd
import numpy as np
from sklearn.preprocessing import LabelEncoder
from sklearn.model_selection import train_test_split
from sklearn.neighbors import NearestNeighbors
import tensorflow as tf
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense, Embedding, Flatten

# 예시 데이터: 사용자, 상품, 평점
data = {
    'user_id': [1, 2, 3, 4, 5, 6],
    'item_id': [1, 2, 3, 1, 2, 3],
    'rating': [5, 4, 3, 5, 4, 2]
}

# 데이터프레임 생성
df = pd.DataFrame(data)

# **1. 데이터 전처리**
# 사용자와 아이템에 대한 ID를 라벨 인코딩
user_encoder = LabelEncoder()
item_encoder = LabelEncoder()

df['user'] = user_encoder.fit_transform(df['user_id'])
df['item'] = item_encoder.fit_transform(df['item_id'])

# **2. Collaborative Filtering (kNN을 이용한 유사 사용자 추천)**
X = df[['user', 'item']]
y = df['rating']

# kNN 모델 학습
knn = NearestNeighbors(n_neighbors=2, metric='cosine')
knn.fit(X)

# 예시로 첫 번째 사용자가 어떤 유사한 사용자가 있는지 찾기
distances, indices = knn.kneighbors([[0, 0]])  # 첫 번째 사용자에 대한 유사도 계산
print(f"유사 사용자 인덱스: {indices}, 거리: {distances}")

# **3. Content-based Filtering (딥러닝을 이용한 추천 모델)**
# 예시: 임베딩을 통한 콘텐츠 기반 추천
# 모델 정의
model = Sequential()
model.add(Embedding(input_dim=6, output_dim=8, input_length=1))  # 사용자 임베딩
model.add(Flatten())
model.add(Dense(10, activation='relu'))
model.add(Dense(1, activation='linear'))

model.compile(optimizer='adam', loss='mean_squared_error')

# 모델 훈련
X_train, X_test, y_train, y_test = train_test_split(df[['user', 'item']], y, test_size=0.2, random_state=42)

model.fit(X_train[['user']], y_train, epochs=10, batch_size=32, validation_data=(X_test[['user']], y_test))

# **4. 추천 예측**
# 훈련된 모델을 이용해 사용자의 선호도를 예측
user_id = 1  # 예시: 1번 사용자
predicted_rating = model.predict(np.array([user_id]))
print(f"사용자 {user_id}의 예측된 평점: {predicted_rating}")

# **5. 추천 시스템 결과**
# 예측된 결과를 기반으로 추천 리스트 생성
# 예를 들어, top-N 추천을 만들 수 있습니다.

 

3. AI 기반 추천 시스템 설명

3.1. 데이터 전처리

  • 사용자 및 상품 인코딩: 사용자와 상품에 대해 각각 LabelEncoder를 사용하여 수치형으로 변환합니다.
  • 평점 데이터: 사용자가 평가한 평점 데이터를 기반으로 추천을 진행합니다.

3.2. Collaborative Filtering (kNN)

  • 유사 사용자 찾기: NearestNeighbors를 사용하여 유사한 사용자를 찾아냅니다. 사용자의 구매 이력이나 선호도를 기반으로 다른 사용자의 유사도를 계산합니다.

3.3. Content-based Filtering (딥러닝)

  • 딥러닝을 통한 추천: 사용자의 선호도 및 상품 정보를 학습한 후, **임베딩(Embedding)**을 통해 사용자의 특성을 벡터화하여 추천을 예측합니다. 이 예시는 매우 간단한 구조로, 사용자의 ID와 상품의 ID를 임베딩하여 추천을 예측합니다.

3.4. 추천 예측

  • 사용자의 예측된 평점을 기반으로 해당 사용자가 좋아할만한 상품을 추천합니다. 예측된 평점은 사용자와 상품 간의 관계를 학습한 결과입니다.

4. 결론

이 글에서는 AI 기반 추천 시스템을 구현하기 위한 아키텍쳐와 Python 코드 예시를 다뤘습니다. 추천 시스템을 구현할 때, Collaborative Filtering(kNN)과 Content-based Filtering(딥러닝)을 결합하여 더 정교한 추천을 제공할 수 있습니다. 이를 통해 사용자의 구매 이력선호도를 바탕으로 더욱 개인화된 상품 추천을 할 수 있습니다.

실제 운영 환경에서는 이러한 추천 시스템을 실시간 데이터피드백을 반영하여 지속적으로 학습시키고, 모델을 개선하는 방식으로 적용할 수 있습니다.

반응형