[DIP/FE] 노래 추천받기(1) - 장소 선택, 데시벨 측정, 목표 설정
·
TAVE-16th
노래 추천받기 개요홈화면에서 "시작하기" 버튼을 누르면 노래 추천을 위한 프래그먼트로 이동한다. 사용자가 노래를 추천받기 위해서는 총 3단계의 사용자 맞춤 설정 과정을 거쳐야 한다. 1 단계. 장소 선택2 단계. 데시벨 측정3 단계. 목표 설정 각 단계는 현재 사용자의 Context를 수집하기 위한 과정으로, 사용자가 마지막 단계까지 설정을 완료하면 모든 정보를 서버로 전송한다. 서버에서는 LangGraph 기반 AI Agent를 사용하여 사용자가 방금 고른 상황과 온보딩 단계에서 설정한 아티스트 취향 등을 종합적으로 분석해 맥락 기반 음악 추천을 수행한다.추천받은 노래는 사용자의 취향에 맞춰 리스트형과 갤러리형 등 2가지 모드로 볼 수 있는데, 이건 다음 포스팅에서 자세히 설명할 예정이다. Ⅰ. 장소..
[DIP/FE] 온보딩 구현 - 문자열 검사 및 Spotify API로 아티스트 목록 가져오기
·
TAVE-16th
온보딩 개요로그인 진행 후 최초 1회 실행되는 온보딩으로 닉네임, 아티스트 취향, 장르 취향을 설정한다. 닉네임은 한글은 1-10자 이내, 영문은 2-20자 이내로 설정하는 제한을 두었다. 프론트엔드에서 1차적으로 문자열 검사를 하고, 추가적으로 백엔드에서도 검증 로직을 한 번 더 거친다. 아티스트 취향은 Spotify API를 활용하였다. Spotify에서 제공하는 아티스트 정보를 기반으로 사용자가 선호하는 아티스트를 선택할 수 있게 구현하였다. Spotify API를 사용하는 함수와 구현 방식은 밑에서 자세히 설명할 예정이다. 장르의 경우 선택 가능한 항목이 약 10개 정도로 적기 때문에 별도의 API를 호출하지 않고 미리 장르 리스트를 정의하여 사용하였다. + 모드 설정온보딩에서 사용하는 3개의 프..
[DIP/FE] 프로젝트 소개 & Kakao Oauth 구현
·
TAVE-16th
Ⅰ. 프로젝트 소개1. 프로젝트 소개단순히 장르별로 묶인 플레이리스트에 질리셨나요? DIP은 지금 당신이 위치한 공간의 '맥락'을 읽습니다.위치를 읽다: 당신이 머무는 공간의 특성을 분석하여 장소의 감성을 극대화합니다.소음을 분석하다: 다음으로 당신 주변의 데시벨을 측정합니다. 소음을 뚫고 들릴 강력한 비트 혹은 고요함을 채워줄 선율을 골라냅니다.목표에 집중하다: 당신이 설정한 오늘의 목표에 맞춰 음악이 단순한 감상을 넘어 당신의 활동을 돕는 도구가 됩니다.지금 바로 당신의 환경이 들려주는 음악에 귀를 기울여 보세요. 2. 주요 기능맥락 기반 추천: 사용자의 위치, 주변 소음, 목표를 기반으로 Agent가 사용자 맞춤형 플레이리스트 생성실시간 분석: 실시간 주변 소음 데시벨 측정 및 현재 위치와 목표 설..
AI로 웹사이트 만들기 / 바이브 코딩
·
개인 프로젝트
Ⅰ. 초기 세팅1. Firebase Studio(편의성을 위해 클라우드 코드 서비스 이용)New Workspace 만들기 Simple HTML 선택 후 워크스페이지 이름 설정2. Gemini CLI 연결Gemini CLI 웹사이트에서 명령어 복사 firebase studio 터미널에 붙여넣기 # 1. gemini cli 설치 npm install -g @google/gemini-cli# 2. 제미나이 실행 명령어gemini 로그인까지 하면 터미널에서 바로 제미나이를 사용할 수 있음!Gemini, Claude, Codex 등 원하는 AI CLI를 선택할 수 있다. 3. Github랑 연동하기New Repository 만들기 gemini cli 명령어에 다음과 같이 명령어 작성로그인과 인증 모두 받으면 자동..
[BDA 11기] 데이터 분석 모델링(ML1) - 16주차
·
BDA-11th
Ⅰ. 군집화 후속 분석군집k-means 이용k 값은 3~6개 사이에서 elbow method로 결정너무 크며 군집 후 사후 분석이 어렵기 떄문에 적절하게 찾아야 함. 사후 분석군집 결과를 label(y)로 간주각 군집의 비즈니스 특징 도출 (시각화를 이용하려 특징 도출 → sns.pairplot각 고객 군에 대한 마케팅 전략 수립 Ⅱ. 군집화 후속분석 - 고객 세분화1. 환경준비(1) 라이브러리 로딩import numpy as npimport pandas as pdimport matplotlib.pyplot as pltimport seaborn as snsfrom sklearn.cluster import KMeansfrom sklearn.preprocessing import MinMaxScalerfrom..
[BDA 11기] 데이터 분석 모델링(ML1) - 15주차
·
BDA-11th
Ⅰ. 군집화: k-means, DBSCAN1. k-means개념K개의 평균으로부터 거리를 계산하고 가까운 평균으로 묶어 Cluster를 나누는 방식k-means 절차클러스터의 개수 지정(k)그룹의 중심 점(mean)이 무작위로 선택됨임의로 선택된 중심 점과 각 점 간의 거리를 계산해서 가장 가까운 중심점의 그룹으로 선택됨선택된 그룹의 점들을 기준으로 중심점을 계산해서 찾고,3~4번을 반복 → 중심점의 변화가 거의 없을 때까지 진행k-meams 문법k-meas 함수 사용거리 기반 알고리즘이어서 Scaling 필수k: n_clustersn_init : 초기값 무작위 지정, 지정된 회수 만큼 수행학습할 때는 x만 입력예측: 지정한 클러스터의 개수 내에서 구분# k means 학습model = KMeans(n_..
[BDA 11기] 데이터 분석 모델링(ML1) - 14주차
·
BDA-11th
Ⅰ. 차원축소 t-SNE1. PCA의 단점PCA는 분산이 가장 큰 방향을 기준으로 새로운 축을 찾는 선형 축소 방법, 계산이 빠르고 해석이 직관적But, 선형 구조만 표현 가능함저차원에서 특징을 잘 담아내지 못하는 경우가 발생 2. t-SNE (t-distributed Stochastic Neighbor Embedding)원본(고차원 공간)에서 서로 가까운 데이터들끼리의 관계를 기반으로 유사도 맵을 생성차원을 축소한 저차원 공강에서도 원본에서 가까웠던 데이터들이 여전히 가깝게 위치하도록 배치⇒ 즉, 원본 데이터의 유사도 구조를 저차원에서도 유지하려는 차원 축소 방식!t-SNE 원리원본 데이터에서 유클리드 거리 계산 → 어떤 점들이 서로 가까운지 파악거리 정보를 확률적 유사도로 변환 → 가까운 점일수록 높..
[BDA 11기] 데이터 분석 모델링(ML1) - 13주차
·
BDA-11th
🧊 차원축소 (Dimensionality Reduction)1. 패턴을 찾는 방법각 점은 하나의 관측치(sample)전체 분포가 가지는 패턴을 찾는 것이 핵심2. 비지도 학습 특징정답 레이블(y) 없이 입력 변수 x만 사용 → x 안에서 패턴 인식 문제 데이터 내부 구조, 분포, 관계를 스스로 학습단독으로 끝내기보다는 후속 분석을 위한 전처리 단계로 사용하는 경우가 많음 (1) 비지도 학습의 주요 활용 방식차원축소 : 고차원 데이터를 축소하여 새로운 feature를 생성 → 시각화, 지도학습 연계클러스터링 : 고객별 군집 생성 → 고객 세그먼트 분석, 패턴 그룹화이상탐지 : 정상 데이터 범위 지정 → 범위 밖 데이터를 이상치로 판정(2) 차원(dimension)차원의 수 = 변수(feature)의 수 ..
[BDA 11기] 데이터 분석 모델링(ML1) - 12주차
·
BDA-11th
🍋 앙상블 알고리즘 - Boosting1. Boosting여러 트리 모델을 순차적으로 결합해서 오차를 줄이는 모델을 구성하는 방식모델(tree)의 개수에 따라 예측 결과가 달라짐 (성능이 달라짐)이전 모델이 잘못 예측한 데이터의 오차를 다음 모델에서 보완하도록 학습병렬이 아닌 순차 학습 구조 → 학습 시간이 상대적으로 김 이전 모델이 틀린 부분에 더 집중해서 다음 모델을 학습하자! 2. Boosting - Gradient Boost첫 번째 모델 : 단순 예측 수행오차 계산 : 실제값 - 예측값두 번째 모델 : 이전 모델의 오차를 예측하도록 학습이 과정을 반복하면서 각 모델이 이전 모델의 부족한 부분을 보완최종 예측값 : 모든 모델의 예측을 누적합으로 계산 3. Gradient Boost 수식 구하기Fm..
[BDA 11기] 데이터 분석 모델링(ML1) - 11주차
·
BDA-11th
🍀 앙상블 알고리즘 - Bagging앙상블 알고리즘여러 개의 머신러닝 모델을 조합해 하나의 강력한 예측 모델을 만드는 기법각 모델이 가진 편향(Bias)와 분산(Variance)을 줄이고 일반화 성능을 개선종류Bagging: 여러 개의 동일한 모델(혹은 learner)를 서로 다른 데이터 샘플로 병렬 학습 후 예측 결과를 평균/투표로 결합Boosting: 모델을 순차적으로 학습. 이전 모델이 틀린 예측에 가중치를 주어 다음 모델이 보완하도록 학습하며, 최종 예측은 모두 합쳐서 결정Stacking: 여러 다양한 베이스 모델의 예측을 모아, 또 다른 메타 모델(meta learner)이 학습해 최종 예측을 수행 Bagging vs. BoostingBagging병렬 구조(parallel)동일한 모델을 사용..