Skip to content

withya16/SM-data

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 

Repository files navigation

비교과 프로그램 추천 시스템

대학 비교과 프로그램을 위한 태그 기반 추천 시스템 프로젝트입니다. TF-IDF와 FastText를 활용한 벡터화 및 LightFM을 이용한 협업 필터링 추천 시스템을 구현했습니다.

📁 프로젝트 구조

sm-data-main/
├── notebooks/          # Jupyter 노트북 파일들
├── models/             # 학습된 모델 및 벡터화기
├── data/               # 데이터 파일 (CSV, Excel, PKL)
├── logs/               # 로그 파일
└── README.md           # 프로젝트 설명서

📚 주요 노트북 파일

1. 전처리 (전처리.ipynb)

  • 데이터 로드 및 기본 전처리 작업
  • 엑셀 파일 읽기 및 데이터 정제

2. 태그 벡터화 (태그_벡터화.ipynb)

  • 프로그램 태그를 TF-IDF 및 FastText 벡터로 변환
  • 태그 빈도 분석 및 코사인 유사도 계산
  • 벡터화 결과 저장

3. 태그 접두사 벡터화 (태그_접두사_TFIDF+FASTTEXT_벡터화.ipynb)

  • 태그에 대분류/중분류/속성/기업여부 접두사 추가
  • TF-IDF와 FastText 벡터 결합
  • 다양한 실험 버전 생성

4. 실험 버전들

  • 1. 분류 태그 기반 접두사 붙인 버전.ipynb: 분류 태그 기반 접두사 추가
  • 2. 원본 태그에만 접두사 붙인 버전.ipynb: 원본 태그에만 접두사 추가
  • 3. 접두사 없이 원본 그대로 쓴 버전.ipynb: 접두사 없이 원본 태그 사용

5. LightFM 추천 시스템 (LightFM_추천시스템.ipynb)

  • LightFM 모델을 활용한 추천 시스템 구현
  • 아이템 피처 벡터 생성 및 모델 학습
  • 사용자-프로그램 상호작용 기반 추천

🤖 모델 파일

FastText 모델

  • fasttext_model.bin: 기본 FastText 모델
  • fasttext_model_tfidf_fasttext.bin: TF-IDF+FastText 결합 버전 모델

TF-IDF 벡터화기

  • tfidf_vectorizer.pkl: 기본 TF-IDF 벡터화기
  • tfidf_vectorizer_prefix.pkl: 접두사 버전 벡터화기
  • tfidf_vectorizer_tfidf_fasttext.pkl: TF-IDF+FastText 결합 버전 벡터화기

아이템 피처 벡터

  • item_features_tfidf.pkl: TF-IDF만 사용한 아이템 피처
  • item_features_fasttext_only.pkl: FastText만 사용한 아이템 피처
  • item_features_combined.pkl: TF-IDF + FastText 결합 아이템 피처
  • item_features_tfidf_prefix.pkl: 접두사 버전 TF-IDF 아이템 피처
  • item_features_tfidf_fasttext_combined.pkl: TF-IDF+FastText 결합 아이템 피처

📊 데이터 파일

원본 데이터

  • 1)_비교과_프로그램_정보.xlsx: 비교과 프로그램 정보 원본 데이터
  • program_with_ews_option1 (2).xlsx: 프로그램 정보 (EWS 옵션 포함)
  • withtags.xlsx: 태그가 포함된 프로그램 정보

처리된 데이터

  • programs_info.pkl / programs_info.csv: 기본 프로그램 정보
  • programs_info_prefix.pkl / programs_info_prefix.csv: 접두사 버전 프로그램 정보
  • programs_info_tfidf_fasttext.pkl / programs_info_tfidf_fasttext.csv: TF-IDF+FastText 버전
  • 프로그램_태그_벡터화_결과.csv: 태그 벡터화 결과
  • 프로그램_태그_TFIDF_벡터.csv: TF-IDF 벡터 결과
  • 프로그램_태그_FastText_벡터.csv: FastText 벡터 결과
  • 프로그램_벡터화_결과.csv: 전체 벡터화 결과

🛠️ 기술 스택

  • Python: 데이터 처리 및 분석
  • Pandas: 데이터 조작 및 분석
  • scikit-learn: TF-IDF 벡터화
  • Gensim: FastText 모델 학습
  • LightFM: 추천 시스템 모델
  • NumPy / SciPy: 수치 연산 및 희소 행렬 처리
  • Jupyter Notebook: 실험 및 분석 환경

📋 주요 기능

  1. 태그 전처리

    • 태그 정제 및 토큰화
    • 접두사 추가 (대분류/중분류/속성/기업여부)
    • 불용어 제거
  2. 벡터화

    • TF-IDF 벡터화 (최대 2000-3000 특성)
    • FastText 벡터화 (100차원)
    • 벡터 결합 (TF-IDF + FastText)
  3. 추천 시스템

    • LightFM을 활용한 협업 필터링
    • 아이템 피처 기반 추천
    • 사용자-프로그램 상호작용 학습

🚀 사용 방법

1. 환경 설정

# 가상환경 생성 (선택사항)
python3 -m venv venv
source venv/bin/activate

# 필요한 라이브러리 설치
pip install pandas scikit-learn gensim lightfm numpy scipy joblib openpyxl msoffcrypto-tool

2. 데이터 로드

import pandas as pd
import joblib
from scipy.sparse import load_npz

# 프로그램 정보 로드
programs_info = pd.read_pickle('data/programs_info.pkl')

# 아이템 피처 로드
item_features = joblib.load('models/item_features_combined.pkl')

3. 모델 사용

# TF-IDF 벡터화기 로드
tfidf_vectorizer = joblib.load('models/tfidf_vectorizer.pkl')

# FastText 모델 로드
from gensim.models import FastText
fasttext_model = FastText.load('models/fasttext_model.bin')

# 새 프로그램 태그 벡터화
new_tags = "AI,데이터,파이썬"
tfidf_vector = tfidf_vectorizer.transform([new_tags])

📝 실험 버전 설명

프로젝트에서는 태그 전처리 방법에 따라 여러 버전을 실험했습니다:

  1. 분류 태그 기반 접두사 버전: 태그를 분류하여 접두사 추가
  2. 원본 태그 접두사 버전: 원본 태그에만 접두사 추가
  3. 원본 그대로 버전: 접두사 없이 원본 태그 사용

각 버전에 대해 TF-IDF, FastText, 그리고 결합 벡터를 생성하여 추천 성능을 비교했습니다.

📈 결과

  • 총 프로그램 수: 939개
  • 고유 태그 수: 2,572개
  • TF-IDF 특성 수: 2,000-3,000개
  • FastText 벡터 차원: 100차원
  • 결합 벡터 차원: 2,100-3,100차원

📌 참고사항

  • 엑셀 파일은 암호화되어 있을 수 있습니다 (비밀번호: 7884)
  • 모델 파일은 joblib 또는 gensim으로 저장되어 있습니다
  • 벡터 파일은 희소 행렬(sparse matrix) 형식으로 저장되어 있습니다

🔧 문제 해결

로그 파일

  • logs/hs_err_pid70137.log: Java 관련 에러 로그 (일부 라이브러리에서 발생할 수 있음)

메모리 이슈

  • 대용량 벡터 처리를 위해 희소 행렬(sparse matrix)을 사용했습니다
  • 필요시 벡터 차원을 조정할 수 있습니다

📄 라이선스

이 프로젝트는 대회용으로 제작되었습니다.

About

숙명여자대학교 비교과 프로그램 추천 시스템 - 태그 벡터화와 LightFM을 활용한 협업 필터링 기반 추천

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors