μ΄λ²μλ Recommend System (μΆμ²μμ€ν )μ λ°νμ¬ μμλ³΄κ² μ΅λλ€.
μΆμ² μμ€ν μ μ¬μ©μμ μμ΄ν κ°μ κ΄κ³λ₯Ό λΆμνμ¬ μ¬μ©μμκ² μ ν©ν μμ΄ν μ μΆμ²νλ μμ€ν μ λλ€.
μ΄λ¬ν μμ€ν μ λ€μν λ°μ΄ν°λ₯Ό νμ©ν΄ μ¬μ©μμκ² λ§μΆ€ν μΆμ²μ μ 곡νλ©°, λ€μν λΆμΌμμ λ리 μ¬μ©λ©λλ€.
μΆμ² μμ€ν μ λͺ©μ
- μ¬μ©μ λ§μ‘±λ ν₯μ: μ¬μ©μκ° μ νΈν λ§ν μμ΄ν μ μΆμ²νμ¬ λ§μ‘±λλ₯Ό λμ΄κ³ μ¬μ©μ κ²½νμ κ°μ ν©λλ€.
- ν맀 μ¦λ: μ μ ν μ ν μΆμ²μ ν΅ν΄ ꡬ맀λ₯Ό μ΄μ§νκ³ , 맀μΆμ μ¦λμν΅λλ€.
- μ¬μ©μ μ°Έμ¬ μ¦λ: λ§μΆ€ν μ½ν μΈ λ₯Ό μ 곡νμ¬ μ¬μ©μκ° λ μμ£Ό, λ μ€λ μλΉμ€λ₯Ό μ΄μ©νλλ‘ μ λν©λλ€.
μΆμ² μμ€ν μ μ’ λ₯
μΆμ² μμ€ν μ μ’ λ₯λ μ΄λ ν μ’ λ₯λ€μ΄ μμκΉμ? νλ² μμλ³΄κ² μ΅λλ€. 3κ°μ§ μ’ λ₯κ° μμ΅λλ€. μμΈν νλ² μμλ³΄κ² μ΅λλ€.
- νμ νν°λ§ (Collaborative Filtering)
- μ½ν μΈ κΈ°λ° νν°λ§ (Content-Based Filtering)
- νμ΄λΈλ¦¬λ λ°©λ² (Hybrid Methods)
νμ νν°λ§ (Collaborative Filtering)
νμ νν°λ§μ μ¬μ©μ κ°μ μ μ¬μ± λλ μμ΄ν κ°μ μ μ¬μ±μ μ΄μ©νμ¬ μΆμ²μ μννλ λ°©λ²μ λλ€.
νμ νν°λ§μ ν¬κ² μ¬μ©μ κΈ°λ° νμ νν°λ§κ³Ό μμ΄ν κΈ°λ° νμ νν°λ§μΌλ‘ λλ©λλ€.
νμ νν°λ§μ μ리
- μ¬μ©μ κΈ°λ° νμ
νν°λ§ (User-Based Collaborative Filtering)
- λΉμ·ν μ·¨ν₯μ κ°μ§ μ¬μ©μλ€μ΄ μ νΈνλ μμ΄ν μ μΆμ²ν©λλ€. μλ₯Ό λ€μ΄, Aμ Bκ° λΉμ·ν μνλ₯Ό μ’μνλ€λ©΄, Aκ° μ’μνλ μνλ₯Ό Bμκ² μΆμ²ν©λλ€.
- μμ΄ν
κΈ°λ° νμ
νν°λ§ (Item-Based Collaborative Filtering)
- μ μ¬ν μμ΄ν μ μ νΈνλ μ¬μ©μλ€μκ² κ·Έ μμ΄ν μ μΆμ²ν©λλ€. μλ₯Ό λ€μ΄, Aκ° μ’μνλ μνμ λΉμ·ν μνλ₯Ό Aμκ² μΆμ²ν©λλ€.
νμ νν°λ§μ μ₯μ
- κ°μΈνλ μΆμ²: μ¬μ©μμ κ³Όκ±° νλμ κΈ°λ°μΌλ‘ μΆμ²νμ¬ κ°μΈνλ κ²½νμ μ 곡ν©λλ€.
- λ°μ΄ν° νμ©: λκ·λͺ¨ μ¬μ©μ λ°μ΄ν°λ₯Ό νμ©νμ¬ μΆμ² μ νλλ₯Ό ν₯μμν¬ μ μμ΅λλ€.
νμ νν°λ§μ λ¨μ
- μ½λ μ€ννΈ λ¬Έμ : μ κ· μ¬μ©μλ μ κ· μμ΄ν μ λν μ λ³΄κ° λΆμ‘±ν λ μΆμ²μ΄ μ΄λ ΅μ΅λλ€.
- λ°μ΄ν° ν¬μμ± λ¬Έμ : μ¬μ©μ-μμ΄ν 맀νΈλ¦μ€κ° ν¬μν λ μΆμ²μ μ νλκ° μ νλ μ μμ΅λλ€.
μ½ν μΈ κΈ°λ° νν°λ§ (Content-Based Filtering)
μ½ν μΈ κΈ°λ° νν°λ§μ μμ΄ν μ νΉμ§μ λΆμνμ¬ μ¬μ©μκ° μ νΈν λ§ν μ μ¬ν μμ΄ν μ μΆμ²νλ λ°©λ²μ λλ€.
μ½ν μΈ κΈ°λ° νν°λ§μ μ리
- μμ΄ν
νΉμ§ μΆμΆ
- κ° μμ΄ν μ νΉμ§(μ: μνμ μ₯λ₯΄, μΆμ° λ°°μ°, κ°λ λ±)μ μΆμΆν©λλ€.
- μ¬μ©μ νλ‘ν μμ±
- μ¬μ©μκ° μ νΈνλ μμ΄ν μ νΉμ§μ κΈ°λ°μΌλ‘ μ¬μ©μ νλ‘νμ μμ±ν©λλ€. μλ₯Ό λ€μ΄, μ¬μ©μκ° μ’μνλ μνμ μ₯λ₯΄μ μΆμ° λ°°μ°λ₯Ό λΆμνμ¬ μ¬μ©μ νλ‘νμ λ§λλλ€.
- μ μ¬ν μμ΄ν
μΆμ²
- μ¬μ©μ νλ‘νκ³Ό μ μ¬ν νΉμ§μ κ°μ§ μμ΄ν μ μΆμ²ν©λλ€. μλ₯Ό λ€μ΄, μ¬μ©μκ° μ’μνλ μ₯λ₯΄μ μνλ₯Ό μΆμ²ν©λλ€.
μ½ν μΈ κΈ°λ° νν°λ§μ μ₯μ
- μ½λ μ€ννΈ λ¬Έμ ν΄κ²°: μ¬μ©μ λλ μμ΄ν μ νΉμ§λ§μΌλ‘ μΆμ²μ΄ κ°λ₯ν©λλ€.
- ν¬λͺ μ±: μ νΉμ μμ΄ν μ΄ μΆμ²λμλμ§ μ€λͺ νκΈ° μ©μ΄ν©λλ€.
μ½ν μΈ κΈ°λ° νν°λ§μ λ¨μ
- νΉμ§ μ νμ μ΄λ €μ: μ μ ν νΉμ§μ μ ννλ κ²μ΄ μ΄λ €μΈ μ μμ΅λλ€.
- λ€μμ± λΆμ‘±: μ¬μ©μκ° μ΄λ―Έ μκ³ μλ μ μ¬ν μμ΄ν λ§ μΆμ²ν κ°λ₯μ±μ΄ μμ΅λλ€.
νμ΄λΈλ¦¬λ λ°©λ² (Hybrid Methods)
νμ΄λΈλ¦¬λ λ°©λ²μ νμ νν°λ§κ³Ό μ½ν μΈ κΈ°λ° νν°λ§μ κ²°ν©νμ¬ μΆμ² μ±λ₯μ ν₯μμν€λ λ°©λ²μ λλ€.
νμ΄λΈλ¦¬λ λ°©λ²μ μ리
- κ²°ν© λ°©λ²
- νμ νν°λ§κ³Ό μ½ν μΈ κΈ°λ° νν°λ§μ κ²°κ³Όλ₯Ό κ²°ν©νμ¬ μ΅μ’ μΆμ²μ μμ±ν©λλ€. μλ₯Ό λ€μ΄, λ λ°©λ²μ μΆμ² κ²°κ³Όλ₯Ό κ°μ€ νκ· νμ¬ κ²°ν©ν μ μμ΅λλ€.
- λ¨κ³μ λ°©λ²
- 첫 λ²μ§Έ λ¨κ³μμ νμ νν°λ§μ μ¬μ©νκ³ , λ λ²μ§Έ λ¨κ³μμ μ½ν μΈ κΈ°λ° νν°λ§μ μ¬μ©νμ¬ μΆμ²μ κ°μ ν©λλ€. μλ₯Ό λ€μ΄, νμ νν°λ§μΌλ‘ μ΄κΈ° ν보λ₯Ό μ μ ν ν, μ½ν μΈ κΈ°λ° νν°λ§μΌλ‘ μ΅μ’ μΆμ²μ ν©λλ€.
νμ΄λΈλ¦¬λ λ°©λ²μ μ₯μ
- μ±λ₯ ν₯μ: λ λ°©λ²μ μ₯μ μ κ²°ν©νμ¬ μΆμ² μ±λ₯μ κ·Ήλνν μ μμ΅λλ€.
- μ μ°μ±: λ€μν λ°©λ²μ μ‘°ν©νμ¬ μ΅μ μ μΆμ² μμ€ν μ ꡬμΆν μ μμ΅λλ€.
νμ΄λΈλ¦¬λ λ°©λ²μ λ¨μ
- 볡μ‘μ± μ¦κ°: μ¬λ¬ λ°©λ²μ κ²°ν©νμ¬ μμ€ν μ 볡μ‘μ±μ΄ μ¦κ°ν μ μμ΅λλ€.
- ꡬν μ΄λ €μ: λ€μν λ°©λ²μ ν¨κ³Όμ μΌλ‘ κ²°ν©νκΈ° μν ꡬνμ΄ μ΄λ €μΈ μ μμ΅λλ€.
μΆμ² μμ€ν μ μ£Όμ κ΅¬μ± μμ
- μ¬μ©μ-μμ΄ν
맀νΈλ¦μ€
- μ¬μ©μμ μμ΄ν κ°μ μνΈμμ©(μ: νμ , ν΄λ¦ λ±)μ κΈ°λ‘ν 맀νΈλ¦μ€μ λλ€. μλ₯Ό λ€μ΄, μν νμ 맀νΈλ¦μ€κ° μ΄μ ν΄λΉν©λλ€.
- νΉμ§ 벑ν°
- μ¬μ©μμ μμ΄ν μ νΉμ§μ λνλ΄λ 벑ν°μ λλ€. μλ₯Ό λ€μ΄, μνμ μ₯λ₯΄, κ°λ , μΆμ° λ°°μ° λ±μ΄ νΉμ§ 벑ν°λ‘ ννλ μ μμ΅λλ€.
- μ μ¬λ κ³μ°
- μ¬μ©μ κ° λλ μμ΄ν κ°μ μ μ¬λλ₯Ό κ³μ°νλ λ°©λ²μ λλ€. μλ₯Ό λ€μ΄, μ½μ¬μΈ μ μ¬λ(Cosine Similarity), νΌμ΄μ¨ μκ΄κ³μ(Pearson Correlation) λ±μ΄ μ¬μ©λ©λλ€.
- λͺ¨λΈ νμ΅ λ° νκ°
- μΆμ² λͺ¨λΈμ νμ΅μν€κ³ μ±λ₯μ νκ°νλ λ°©λ²μ λλ€. RMSE(Root Mean Squared Error), MAE(Mean Absolute Error), Precision, Recall λ± λ€μν νκ° λ°©λ²μ΄ μ‘΄μ¬ν©λλ€.
μΆμ² μμ€ν μ νκ° λ°©λ²
- μ νλ (Accuracy)
- μΆμ² μμ€ν μ΄ μΌλ§λ μ ννκ² μμ΄ν μ μΆμ²νλμ§λ₯Ό νκ°ν©λλ€. μλ₯Ό λ€μ΄, Precision, Recall, F1 Scoreκ° μ΄μ ν΄λΉν©λλ€.
- λ€μμ± (Diversity)
- μΆμ²λ μμ΄ν μ΄ μΌλ§λ λ€μνμ§λ₯Ό νκ°ν©λλ€. μλ₯Ό λ€μ΄, μ¬μ©μκ° μλ‘μ΄ μμ΄ν μ μΆμ²λ°μ μ μλ λ₯λ ₯μ΄ μ΄μ ν΄λΉν©λλ€.
- μ λ’°μ± (Trustworthiness)
- μΆμ²λ μμ΄ν μ΄ μ¬μ©μμκ² μΌλ§λ μ λ’°μ±μ κ°μ§λμ§λ₯Ό νκ°ν©λλ€. μΆμ²λ μμ΄ν μ μ€λͺ κ°λ₯μ±μ΄ μ΄μ ν¬ν¨λ©λλ€.
- μ¬μ©μ λ§μ‘±λ (User Satisfaction)
- μΆμ² μμ€ν μ μ¬μ©ν ν μ¬μ©μμ λ§μ‘±λλ₯Ό νκ°ν©λλ€. μ¬μ©μ νΌλλ°±μ΄λ μ€λ¬Έ μ‘°μ¬κ° μ΄μ ν΄λΉν©λλ€.
Recommender System Example Code (νμ νν°λ§)
# νμν λΌμ΄λΈλ¬λ¦¬ μν¬νΈ
import numpy as np
import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.metrics.pairwise import cosine_similarity
import matplotlib.pyplot as plt
# μμ μ¬μ©μ-μμ΄ν
맀νΈλ¦μ€ μμ±
data = {
'user_id': [1, 1, 1, 2, 2, 3, 3, 3, 4],
'item_id': [1, 2, 3, 1, 3, 2, 3, 4, 4],
'rating': [5, 4, 1, 4, 5, 2, 4, 5, 4]
}
df = pd.DataFrame(data)
# μ¬μ©μ-μμ΄ν
맀νΈλ¦μ€ μμ±
user_item_matrix = df.pivot_table(index='user_id', columns='item_id', values='rating').fillna(0)
# μ½μ¬μΈ μ μ¬λλ₯Ό μ¬μ©νμ¬ μ¬μ©μ μ μ¬λ κ³μ°
user_similarity = cosine_similarity(user_item_matrix)
user_similarity_df = pd.DataFrame(user_similarity, index=user_item_matrix.index, columns=user_item_matrix.index)
# μ μ¬λ 맀νΈλ¦μ€ μκ°ν
plt.figure(figsize=(10, 7))
sns.heatmap(user_similarity_df, annot=True, cmap='coolwarm')
plt.title('User Similarity Matrix')
plt.show()
# μΆμ² ν¨μ μ μ
def recommend(user_id, user_item_matrix, user_similarity, k=2):
# μ μ¬ν μ¬μ©μ μ ν
similar_users = user_similarity[user_id - 1]
similar_users_indices = similar_users.argsort()[-k-1:-1]
# μ μ¬ν μ¬μ©μλ€μ μμ΄ν
νκ· νμ κ³μ°
similar_users_ratings = user_item_matrix.iloc[similar_users_indices]
recommendations = similar_users_ratings.mean(axis=0)
# μ΄λ―Έ νκ°ν μμ΄ν
μ μΈ
user_rated_items = user_item_matrix.loc[user_id]
recommendations = recommendations[user_rated_items == 0]
return recommendations.sort_values(ascending=False)
# μ¬μ©μ 1μκ² μμ΄ν
μΆμ²
recommendations = recommend(1, user_item_matrix, user_similarity)
print("Recommendations for user 1:")
print(recommendations)
Recommendations for user 1:
item_id
4 2.5
dtype: float64
'π Machine Learning' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[ML] Hyperparameter Tuning (νμ΄νΌ νλΌλ―Έν° νλ) (0) | 2024.08.29 |
---|---|
[ML] Reinforcement Learning (κ°ν νμ΅) - Q-Learning (0) | 2024.08.27 |
[ML] Emsemble Methods (μμλΈ κΈ°λ²) (0) | 2024.08.23 |
[ML] μ°κ΄ κ·μΉ νμ΅ (Association Rule Learning) (0) | 2024.08.22 |
[ML] t-SNE (t-Distributed Stochastic Neighbor Embedding) (0) | 2024.08.20 |