본문 바로가기

데이터사이언스

(21)
추천 시스템(2) 실습후기 🎵 추천 시스템 실습 후기: 암묵적 피드백과 ALS로 음악 취향 찾기!안녕하세요! 오늘은 추천 시스템 실습을 하며 배운 내용을 정리해보려고 합니다. 특히 암묵적 피드백(Implicit Feedback) 데이터를 활용해 Matrix Factorization을 하고, ALS(Alternating Least Squares) 로 모델을 학습해보는 과정을 직접 코딩해보았습니다.추천 시스템이란?추천 시스템은 크게 두 가지로 나뉩니다.1. 협업 필터링 (Collaborative Filtering)나와 비슷한 취향을 가진 사람들이 좋아한 아이템을 추천과거 행동 데이터 기반단점: 콜드스타트 문제 (신규 사용자, 신규 아이템 추천 어려움)2. 콘텐츠 기반 필터링 (Content-based Filtering)아이템의 속성..
추천시스템 입문(1) 🎯 추천시스템 입문✅ 추천 시스템이란?사용자에게 취향이나 상황에 맞는 아이템(영화, 음악, 상품 등)을 자동으로 추천해 주는 시스템활용 예:넷플릭스 → 영화 추천유튜브 → 영상 추천아마존, 쿠팡 → 상품 추천멜론, 스포티파이 → 음악 추천✅ 추천 시스템의 작동 원리두 가지 가정으로 작동:유사한 사용자 가정 → 나와 비슷한 취향의 사람이 좋아한 것을 추천유사한 아이템 가정 → 내가 좋아한 아이템과 비슷한 아이템을 추천작동 흐름데이터 수집 ↓전처리 ↓유사도 계산 or 모델 학습 ↓추천 후보 생성 ↓추천 리스트 출력✅ 추천 시스템의 종류1. 콘텐츠 기반 필터링 (Content-Based Filtering)아이템 자체의 특징으로 유사도 계산예: 액션 영화 좋아 → 또 다른 ..
LangChainThon 주요 이슈정리(2025.07.01~07.04) LangChain 구성 이슈 정리✅ 1. Streamlit + LangChain RAG 구성상단 고정 레이아웃문제: Streamlit 상단 영역 고정하려 했으나 전체 페이지가 스크롤됨해결 시도:CSS position: sticky 활용container 분리채팅 영역 높이 제한 및 overflow 처리예시 질문 위치문제: 예시 질문 블록이 중간이 아니라 입력창 아래 고정되길 원함해결 방안:컴포넌트 순서 재배치세션 상태로 예시 질문 노출 여부 제어화면 스크롤 문제문제: 질문/답변 시 화면이 맨 위로 튀는 현상해결 방안:세션 상태 관리st.chat_message 사용StreamlitChatMessageHistory 객체 활용✅ 2. LangChain 모델 연결GPT-3.5 vs GPT-4o-mini 속도GPT..
로이터 뉴스 데이터셋 머신러닝 다중분류 📋 2025-06-18 머신러닝 & 텍스트 분류 통합 캔버스 (코드+설명 포함)1. 로이터 뉴스 데이터셋 로드 및 이해from tensorflow.keras.datasets import reuters(x_train, y_train), (x_test, y_test) = reuters.load_data(num_words=10000, test_split=0.2)print(f"훈련 데이터 개수: {len(x_train)}")print(f"테스트 데이터 개수: {len(x_test)}")뉴스는 정수 시퀀스로 표현됨46개 주제 레이블 존재특수 토큰 , , 가 0,1,2번 인덱스2. 단어 인덱스 복원 및 텍스트 변환word_index = reuters.get_word_index()index_to_word = {in..
텍스트 벡터화 · 임베딩 학습 정리(1) 1. 벡터화의 개념 및 희소성 문제문서를 수치화하여 머신러닝(Machine Learning) 또는 딥러닝(Deep Learning) 모델이 처리할 수 있도록 변환하는 과정DTM(Document-Term Matrix): 문서 × 단어로 이루어진 행렬 구조행: 문서 벡터, 열: 단어 벡터대부분의 값이 0인 희소 벡터(Sparse Vector) 발생단어장(Vocabulary): 텍스트 전체에서 중복 없이 등장한 단어들의 집합. 크기를 보통 V로 표기2. DTM vs TF-IDFDTM: 단어의 단순 등장 횟수를 카운팅하여 표현TF-IDF:TF(Term Frequency): 문장 내 단어들의 등장 빈도를 정규화한 값IDF(Inverse Document Frequency): 전체 문서 중 해당 단어가 등장한 문서 ..
텍스트 벡터화 학습노트 텍스트 벡터화 학습노트1️⃣ Bag‑of‑Words(BOW) 개념문맥을 무시하고 단어 등장 횟수로 문서를 표현장점: 단순·빠름, 선형 모델과 상성 좋음단점: 위치 정보 손실, 차원 폭발(희소 행렬)▶ 통계 기반ㆍ머신러닝 기반통계: 단어 등장 횟수 기반 → CountVectorizer, TF‑IDFML: 벡터 입력 후 분류·군집화 등 학습2️⃣ BoW 구현 및 비교📙 CountVectorizer vs Keras Tokenizer항목 CountVectorizer(sklearn) Tokenizer(Keras)반환 형식희소행렬(CSR)Numpy 배열BoW 방식fit_transform, vocabulary_texts_to_matrix(..., mode='count')시퀀스 지원❌✅ (texts_to_sequen..
Reuters 딥러닝 모델 import numpy as npimport matplotlib.pyplot as pltfrom sklearn.model_selection import train_test_splitfrom tensorflow.keras import models, layersfrom tensorflow.keras import callbacksfrom tensorflow.keras import utilsfrom keras.datasets import reuters# 문제 2-1: reuters 데이터셋을 로드하고, 훈련 데이터셋에서 25%를 검증 데이터셋으로 분리합니다.(num_words, test_size, val_ratio) = (10000, 0.25, 0.25)(train_data, train_labels), (tes..
cifar10 데이터셋을 이용한 딥러닝 # 문제 3-1: cifar10 데이터셋을 로드하고, 훈련 데이터셋에서 20%를 검증 데이터셋으로 분리합니다.from tensorflow.keras.datasets import cifar10from sklearn.model_selection import train_test_splitfrom tensorflow.keras import models, layers, regularizersfrom tensorflow.keras.callbacks import ModelCheckpoint, EarlyStoppingimport matplotlib.pyplot as plt# CIFAR-10 데이터셋 로드(x_train_full, y_train_full), (x_test, y_test) = cifar10.load_dat..