추천 시스템 과정 및 성능 평가

추천 시스템

생리대에 대한 품목 정보 및 텍스트 데이터를 사용하여 추천 시스템을 구현 정리
1.
데이터 로드 및 전처리 과정
데이터를 로드& 필요한 열을 선택('제품명', '첨가제')
- 다른 속성값들을 추가해서 정보를 추출하거나 조합할 수 있음
selected_data=data[['제품명','첨가제']] print(selected_data)
Python
복사
텍스트 전처리 함수를 이용한 주요 열에 대한 데이터 전처리 과정
import re def preprocess_text(text): # 불필요한 문자 및 공백 제거 text = re.sub(r'[^A-Za-z0-9가-힣\s]', '', text) text = text.lower() return text # '제품명", "첨가제" 열의 텍스트 전처리 data['제품명'] = data['제품명'].apply(preprocess_text) # '첨가제' 열의 텍스트 전처리 data['첨가제'] = data['첨가제'].apply(preprocess_text) print(data)
Python
복사
2.
TF-IDF 벡터화
'첨가제' 열에 있는 텍스트 데이터를TfidfVectorizer를 이용해서 TF-IDF 벡터화
TF-IDF 벡터화된 데이터를 기반으로 각 생리대 제품에 대한 첨가제 정보를 벡터 형터로 표현
3.
유사도 계산
TF-IDF 벡터화된 데이터를 사용하여 생리대 제품 간의 유사도 계산(코사인 유사도 사용)
코사인 유사도를 계산하여 각 제품 간의 유사도 행렬을 생성
4.
사용자 입력 및 추천
사용자로부터 검색어나 제품명 입력받기 (OCR에서 값 추출)
입력된 검색어나 제품명을 2,3번의 과정을 거쳐서 추천 결과를 도출
추천 결과를 사용자에게 보여줌
from sklearn.feature_extraction.text import TfidfVectorizer from sklearn.metrics.pairwise import cosine_similarity # TF-IDF 벡터화 tfidf_vectorizer = TfidfVectorizer(max_features=1000, stop_words='english') additives_tfidf = tfidf_vectorizer.fit_transform(df['첨가제']) #코사인 유사도 계산 similarities = cosine_similarity(additives_tfidf) # 유사도를 데이터프레임으로 변환 similarity_df = pd.DataFrame(similarities, columns=df['제품명'], index=df['제품명']) # 사용자로부터 검색어 입력 받기 (실제 검색어 입력 받아야 함) user_input = 'OZ 생리대 대형' # 입력된 제품과 다른 제품들 간의 유사도 확인 if user_input in similarity_df: similar_products = similarity_df[user_input].sort_values(ascending=False)[1:] print(f"입력한 제품 '{user_input}'와 첨가제 유사도가 높은 다른 제품들:") print(similar_products) else: print(f"입력한 제품 '{user_input}'를 찾을 수 없습니다.")
Python
복사

성능 평가

TF-IDF 성능평가
Precision@K를 채택
평가
데이터를 훈련 데이터와 테스트 데이터로 분할
#성능 평가 _ 훈련 데이터와 테스트 데이터로 분할 from sklearn.model_selection import train_test_split # 데이터프레임에서 '제품명'과 '첨가제' 열만을 선택 selected_data = data[['제품명', '첨가제']] # '첨가제' 열의 데이터를 TF-IDF 벡터화 tfidf_vectorizer = TfidfVectorizer(max_features=1000, stop_words='english') additives_tfidf = tfidf_vectorizer.fit_transform(selected_data['첨가제']) # 타겟 변수 (평가 대상) 정의 (예: '제품명' 열) target = selected_data['제품명'] # 데이터를 훈련 데이터와 테스트 데이터로 분할 (80% 훈련, 20% 테스트) X_train, X_test, y_train, y_test = train_test_split(additives_tfidf, target, test_size=0.2, random_state=42)
Python
복사
모델 데이터 훈련 + 성능평가
RandomForestCassifier 모델을 사용해 훈련 데이터를 학습하고 훈련데이터에 대한 Precision을 계산
from sklearn.metrics import precision_score from sklearn.ensemble import RandomForestClassifier # RandomForestClassifier 모델 생성 (또는 원하는 다른 모델 선택) rf_model = RandomForestClassifier(n_estimators=100, random_state=42) # 훈련 데이터로 모델 학습 rf_model.fit(X_train, y_train) # 모델을 사용하여 훈련 데이터에 대한 예측 수행 y_pred_train = rf_model.predict(X_train) # 훈련 데이터에 대한 Precision 계산 precision_train = precision_score(y_train, y_pred_train, average='micro') # 또는 'macro', 'weighted'로 설정 가능 print(f'Training Precision: {precision_train:.4f}')
Python
복사
재현율 : 0.4597
재현율,….하이퍼파라미터 변경, 샘플링 다 똑같이 나와서 일단 ,,,고민즁이에옇
1.
하이퍼파라미터 튜닝:
모델의 하이퍼파라미터를 조정하여 성능을 최적화하세요. 특히 TF-IDF 벡터화 관련 매개변수와 유사도 계산 방법에 대한 하이퍼파라미터를 조정합니다.
2.
A/B 테스트:
모델을 실제 환경에서 테스트하여 사용자 피드백을 수집하고 모델의 성능을 지속적으로 개선합니다.
생리대 제품 추천 시스템을 구축하려면 데이터의 품질과 모델의 성능을 지속적으로 모니터링하고 개선하는 것이 중요합니다. 사용자 경험을 개선하고 비즈니스 목표를 달성하기 위해 추천 시스템을 지속적으로 향상시키는 데 투자할 가치가 있습니다.
1.
평가 지표 선택
추천 시스템의 목적에 따라 적절한 평가 지표를 선택하세요. 일반적으로 추천 시스템의 평가에는 다음과 같은 지표들이 사용됩니다:
정확도(Accuracy): 모델이 정확하게 맞춘 추천의 비율.
정밀도(Precision): 모델이 추천한 제품 중 실제로 유용한 것의 비율.
재현율(Recall): 실제 유용한 제품 중 모델이 추천한 것의 비율.
F1 점수(F1 Score): 정밀도와 재현율의 조화 평균.
ROC 곡선 및 AUC(Area Under the Curve): 이진 분류 문제에서 모델의 성능을 측정하는 데 사용됩니다.
추천 시스템의 특성에 맞게 적절한 평가 지표를 선택하고, 비즈니스 목표와 연관성을 고려하세요.
2.
평가 데이터 준비
모델의 성능을 평가하기 위한 평가 데이터셋을 만들어야 합니다. 이 데이터셋은 모델이 추천을 수행하고, 실제 사용자 피드백과 비교할 수 있는 데이터여야 합니다.
3.
모델 평가:
선택한 평가 지표를 사용하여 모델을 평가하세요. 모델의 성능을 측정하기 위해 평가 데이터를 사용하고, 예측 결과와 실제 결과를 비교하세요.
4.
교차 검증:
모델의 안정성을 확인하기 위해 교차 검증을 사용할 수 있습니다. K-fold 교차 검증 또는 Leave-One-Out 교차 검증 등의 방법을 사용하여 모델을 여러 번 평가하고 평균 성능을 측정하세요.
5.
하이퍼파라미터 튜닝:
모델의 하이퍼파라미터를 조정하여 성능을 최적화할 수 있습니다. 그리드 서치(Grid Search) 또는 랜덤 서치(Random Search)와 같은 하이퍼파라미터 최적화 기술을 활용하세요.
6.
비즈니스 목표와 연결:
추천 시스템의 목적은 비즈니스에 영향을 미치는 것입니다. 따라서 모델의 평가 결과를 비즈니스 목표와 연결하여 의사 결정을 내리세요. 예를 들어, 정확한 추천만이 중요한 것이 아니라 추가적인 비즈니스 지표 (예: 매출, 이용자 이탈률 등)과 연관성을 고려하세요.
7.
A/B 테스트:
모델의 성능을 실제 사용자에게 테스트하여 확인하고 개선하는 과정인 A/B 테스트를 수행할 수 있습니다. 이를 통해 모델의 성능을 실제 환경에서 평가하고 개선할 수 있습니다.
추천 시스템의 성능 평가는 복잡하고 도메인에 따라 다를 수 있으므로, 해당 도메인과 비즈니스 목표에 맞게 평가 방법을 조정하는 것이 중요합니다.