"공격적인쓰리백"의 두 판 사이의 차이

cdc wiki
이동: 둘러보기, 검색
(개발 일정)
(관련사업비 내역서)
 
(같은 사용자의 중간 판 29개는 보이지 않습니다)
163번째 줄: 163번째 줄:
  
  
[[파일:Timetable.png|700픽셀]]
+
[[파일:Newtimestable.png]]
  
 
====구성원 및 추진체계====
 
====구성원 및 추진체계====
181번째 줄: 181번째 줄:
 
===설계사양===
 
===설계사양===
 
====제품의 요구사항====
 
====제품의 요구사항====
내용
+
 
 +
 
 +
◇ 개별 사용자 취향에 맞는 가게 추천
 +
-사용자의 선호도를 분석하여 맞춤형 가게 추천 기능을 제공한다
 +
 
 +
◇ 설정한 옵션에 따른 장소 필터링
 +
-사용자가 선택한 옵션(예: 음식 종류, 가격대 등)에 따라 가게를 필터링하여 보여준다.
 +
 
 +
◇ 실시간 자리 정보 제공
 +
-가게의 실시간 자리 정보를 확인할 수 있다.
 +
 
 +
◇ 로그인 및 회원가입 기능
 +
-사용자 계정 생성 및 로그인을 위한 기능을 제공한다.
 +
 
 +
◇ 가게마다 좋아요 및 리뷰 작성 기능
 +
-사용자가 가게에 좋아요를 누르거나 리뷰를 작성할 수 있다.
 +
 
 +
◇ 리뷰 수정 및 삭제 기능
 +
-사용자가 작성한 리뷰를 수정하거나 삭제할 수 있다.
 +
 
 +
◇ 리뷰 및 평점 반영된 가게 정보 제공
 +
-각 가게의 리뷰와 평점을 종합하여 사용자에게 제공한다.
 +
 
 +
◇ 사용자 요청에 따른 가게 추가 등록 가능
 +
-사용자의 요청을 검토한 후 새로운 가게를 추가로 등록할 수 있다.
 +
 
 +
◇ 다양한 필터와 정렬 기능
 +
-사용자가 원하는 조건에 맞게 가게를 필터링하고 정렬할 수 있는 기능을 제공한다. (예: 거리 순, 평점 순 등)
 +
 
 
====설계 사양====
 
====설계 사양====
내용
+
 
 +
[[파일:AskAgg.png]]
 +
 
 +
 
 +
◇ 사용자 위치 기반 서비스 제공
 +
 
 +
1. 사용자가 로그인 시, 지도에 사용자의 위치가 나타나고, 설정한 반경 이내에서 사용자에게 추천하는 장소의 마커를 표현한다
 +
2. 추천이 설정되지 않았을 경우 일정 반경 내에 평점 순, 좋아요 순 혹은 어떠한 기준으로 가게의 리스트 나열 및 마커로 위치 표시한다
 +
 
 +
◇ 각 사용자에게 맞는 장소 추천
 +
 
 +
1. 서버에 각 사용자별 데이터를 저장한다.
 +
2. 추천 시스템을 통해 사용자가 방문할 확률이 높은 장소를 선별하여 제공한다.
 +
3. 추천 시스템은 하루에 한 번씩 업데이트를 진행하여 변경된 정보에 대응한다.
 +
- 옵션에 따라 장소 필터링
 +
1. 각 가게 별로 메타 데이터를 저장하여 여러가지 특징(ex: 대형 스크린의 존재 여부)을 구별한다
 +
- 실시간 자리 정보 제공
 +
1. 사용자의 가장 최근 리뷰를 바탕으로 남은 좌석 정보를 제공한다
 +
 
 +
 +
◇ 가게에 대한 좋아요, 리뷰 남기기
 +
 
 +
1. 특정 가게에 대해 사용자는 좋아요 혹은 리뷰를 남긴다
 +
2. 이 결과를 서버의 사용자별 데이터에 저장한다
 +
3. MyPage에서 해당 리뷰와 좋아요의 개수 조회가 가능하며, 각각 ReviewPage와 FavoritePage로 리스트 확인이 가능하다
 +
-리뷰에 대한 수정/삭제가 가능하다
 +
-리뷰를 통해 실시간 좌석 정보를 제공받을 수 있다.
 +
 
 +
◇ 로그인과 회원가입 기능 구현
 +
-회원가입을 하게 되면 사용자가 본인이 좋아요한 가게와 리뷰한 가게를 조회가능하다
 +
-이를 통해 사용자 고유의 추천리스트 생성이 가능하다. 이는 우리 서비스의 본질이며 이를 위해서는 사용자 고유의 정보가 필요하기 때문에 로그인과 회원가입은 필수적으로 구현해야 한다.
  
 
===개념설계안===
 
===개념설계안===
내용
+
 
 +
[[파일:StructureAgg.png]]
 +
 
 +
[개발]
 +
 
 +
-개발 환경은 PyCharm, Google Colab, vscode와 IntelliJ를 활용하였다. 이를 통해 코드 작성, 테스트, 디버깅 등을 효율적으로 수행할 수 있었다
 +
 
 +
-프로젝트의 핵심인 추천 알고리즘은 딥러닝 모델을 활용하기 때문에, Python 언어를 기반으로한 PyTorch 딥러닝 라이브러리를 활용하였다
 +
 
 +
-백엔드 서버는 AI 서버에게 사용자별 추천 장소 리스트 요청하면 AI 서버는  백엔드 서버에 NCF 모델[1]을 통한 추천 리스트 반환한다.
 +
 
 +
-AI 서버는 주기적으로(매일) 추천 알고리즘을 학습한 내용을 저장하며 이는 실시간이 아닌 배치 처리 방식이다
 +
 
 +
 
 +
[배포]
 +
 
 +
-AWS RDS 및 AWS S3를 사용한 DB 관리 및 보안 관리를 진행한다.
 +
 
 +
-AWS S3에 데이터 베이스 전처리 데이터를 저장한다
  
 
===이론적 계산 및 시뮬레이션===
 
===이론적 계산 및 시뮬레이션===
내용
 
  
===상세설계 내용===
+
신경망을 결합한 추천 시스템(Neural Collaborative Filtering)
내용
+
 
 +
 
 +
가. 기존 추천 알고리즘의 문제점
 +
 
 +
• 기존의 MF(matrix factorization) 방식은 유저-아이템 방식의 상호작용을 내적의 형태로 표현한다.
 +
• Latent factors 간의 내적은 유저-아이템 상호작용 데이터의 복잡한 구조를 알기 어렵게 한다.
 +
• 새로운 유저가 나타나면 이를 저차원 공간에서 나타내기 어렵다
 +
 
 +
 
 +
나. Neural Matrix Factorization
 +
 
 +
[[파일:MfAgg.png]]
 +
 +
MF를 GMF로 일반화하고 신경망을 사용한 MLP와 결합하여 NeuMF를 생성한다.
 +
 
 +
 
 +
다. 추천 시스템의 성능 계산
 +
 
 +
 
 +
Hit Rate와 nDCG를 사용하여 모델의 지표를 평가한다.
 +
 
 +
 
 +
[[파일:HitrateAgg.png]]
 +
 
 +
<Hit Rate>
 +
 
 +
[[파일:NdcgAgg.png]]
 +
 
 +
<nDCG(normalized Discounted Cumulated Gain)>
 +
 
 +
[[파일:GraphAgg.png]]
 +
 
 +
 
 +
 
 +
라. 가게 추천
 +
 
 +
 
 +
사용자 ID(User_Id)를 입력하면 가게 리스트 중에서 네거티브 샘플링을 통해 가게를 추출한다.
 +
 
 +
[[파일:IdAgg.png]]
 +
 
 +
 
 +
 
 +
<user_id>
 +
[[파일:UseridAgg.png]]
 +
 
 +
 
 +
 
 +
<item_id>
 +
[[파일:itemidAgg.png]]
 +
 
 +
추천 시스템을 통해 각 가게의 피드백(0과 1 사이)을 계산한다.
 +
 
 +
 
 +
<추천 리스트 반환값>
 +
 
 +
 
 +
 
 +
[[파일:recAgg.png]]
 +
 
 +
 
 +
피드백 값이 높은 k개의 아이템의 id를 반환한다.
  
 
==결과 및 평가==
 
==결과 및 평가==
 
===완료 작품의 소개===
 
===완료 작품의 소개===
 
====프로토타입 사진 혹은 작동 장면====
 
====프로토타입 사진 혹은 작동 장면====
내용
+
 
====포스터====
+
[1] 메인페이지 (Master 계정) : 가게 등록 기능
내용
+
 
 +
 
 +
[[파일:mastermain.png]]
 +
 
 +
 
 +
[2] 메인페이지 (일반 계정) : 추천 가게 리스트
 +
 
 +
 
 +
[[파일:normalmain.png]]
 +
 
 +
 
 +
 
 +
[3] 좋아요한 가게 목록 페이지
 +
 
 +
 
 +
[[파일:favorites.png]]
 +
 
 +
 
 +
[4] 리뷰를 남긴 가게 페이지
 +
 
 +
 
 +
[[파일:reviews.png]]
 +
 
 +
 
 +
 
 +
[5] 가게정보페이지
 +
 
 +
 
 +
[[파일:stores.png]]
 +
 
 +
 
 +
 
 +
[6] 로그인/회원가입 페이지
 +
 
 +
 
 +
[[파일:register.png]]
 +
 
 +
 
 +
[[파일:loginAgg.png]]
  
 
===관련사업비 내역서===
 
===관련사업비 내역서===
내용
+
 
 +
 
 +
[[파일:money.png]]
  
 
===완료작품의 평가===
 
===완료작품의 평가===
내용
+
 
 +
[[파일:Validation.png]]
  
 
===향후계획===
 
===향후계획===
내용
 
  
===특허 출원 내용===
+
가. 어려웠던 내용들
내용
+
 
 +
◇ 배포 과정에서 HTTP와 HTTPS를 각각 사용하여 배포한 결과, 통신 오류가 발생했습니다. HTTPS에서 HTTP 자원을 로드하려고 시도했기 때문에, 브라우저는 혼합된 콘텐츠 경고를 발생시켰습니다. 이로 인해 일부 기능이 제대로 작동하지 않아 사용자 경험에 문제를 일으켰습니다. 다행히 https로 수정해서 이 문제는 해결할 수 있었습니다.
 +
 
 +
◇ 가게 데이터셋을 넣을 때, 그 수가 많았으며 각 가게에 대한 정보를 수동으로 전처리하는 과정이 많이 힘들었습니다.
 +
 
 +
◇ 추천 리스트를 반환할 때, 기존에 구현된 알고리즘을 저희 팀이 사용하고자 하는 알고리즘으로 수정하는 과정이 많이 어려웠습니다. 이는 사안의 중요성 때문에 데이터 전처리 과과 프로젝트의 전체적인 개발에도 영향을 미쳤습니다.
 +
 
 +
 
 +
나. 차후 구현할 내용
 +
 
 +
◇  가게의 정보가 수정될 경우, 관리자 권한 계정에서 업데이트를 할 수 있는 기능을 추가하고자 한다.
 +
 
 +
◇ 사용자의 추천 가게 리스트를 반환할 때, 사용자의 선호도를 더 정확히 반영하기 위해 선호도 조사를 할 수 있는 페이지를 구현하고자 한다
 +
 
 +
◇ 기존의 디자인에서 동적인 디자인 요소를 추가해 사용의 편리성을 더욱 늘릴 수 있도록 하겠다
 +
 
 +
◇ 지도 위의 마커 관련해서, 현재는 모든 마커가 동일한 디자인이다. 사용자의 현재 위치, 기존의 가게 위치, 그리고 추천한 가게가 구분될 수 있도록 마커 디자인을 바꿀 수 있도록 하겠다
 +
 
 +
◇ 비단 관리자만 가게 등록하는 것이 아니라, 사용자들도 가게를 발견하고 이를 서비스를 제공하는 사측에 업데이트를 요청할 수 있도록 추천 기능을 만들고자 한다.
 +
 
 +
◇ 피드백을 받아 UI/UX 플로우를 개선할 수 있도록 하겠다.

2024년 6월 20일 (목) 12:12 기준 최신판

프로젝트 개요

AI 기반 스포츠 관람장소 추천 서비스

영문:AI-based sports viewing place recommendation service )

팀명

공격적인쓰리백

지도교수

유하진 교수님

개발기간

2019년 3월 ~ 2019년 6월 (총 4개월)

구성원 소개

서울시립대학교 컴퓨터과학부 2019920002 고재휘(팀장)

서울시립대학교 컴퓨터과학부 2019920005 김기찬

서울시립대학교 컴퓨터과학부 2019920025 서용

서울시립대학교 컴퓨터과학부 2018920035 이동건

서론

개발 과제의 개요

개발 과제 요약

◇ 단체 스포츠 경기 관람에 적합한 음식점, 혹은 영화관 등 관람 장소에 관련된 정보를 모아 소비자가 해당 경기를 관람할 수 있는 장소를 고를 수 있도록 설정 조건에 따라 추천해주는 웹사이트 제작하는 것이 목표이다.

◇ 사용자의 경험에 기반한 음식점, 영화관 등 다양한 장소에서 스포츠 경기를 관람할 수 있는 맞춤형 추천 서비스를 제공한다.

◇ 사용자가 지도상에서 선택한 특정 지점을 중심으로 주변 반경 내의 추천 장소를 제공한다.

개발 과제의 배경

◇ 2010년 남아공 월드컵부터 국가대표 축구에 대한 관심은 증가하고 있으며 월드컵의 시청률은 굉장히 높다. 또한 모바일 기기를 활용한 시청자가 늘어나 TV 시청률에서 포함되지 않은 사람들이 많다. 2023년 카타르 아시안컵 중계권사인 OTT업체 쿠팡플레이 일일활성 이용자수(DAU)는 평소 대비 약 1.5배 증가했으며 대한민국이 경기한 E조의 조별리그 2차전 경기는 1년 동안 가장 많은 이용자를 기록한 날로 기록되었다. 월드컵, 아시안컵뿐만 아니라 애국심을 고취하는 올림픽과 우리나라에서 제일 인기가 많은 프로스포츠인 야구의 대표팀 경기도 국민의 관심도가 굉장히 높다. 이로 인해 많은 사람들이 단체로 식당에서 경기를 관람하거나 거리응원을 하는 경우가 많다. 또한 수요가 높아짐에 따라 영화관에서도 단체관람을 통해서 응원하는 경우도 뉴스에서 확인할 수 있다.

◇ 특정 장소에서 경기를 보고자하는 사람들, 일명 소비자와 특정 장소를 제공하거나 이 곳에서 영업을 하는 판매자는 각각의 고충이 있다. 소비자는 단체 응원을 위한 장소를 찾기 어려운 측면이 존재하며, 실시간 정보의 부재로 인해 장소를 찾기 어려운 경우가 있다. 판매자는 대한민국 선수가 출전하거나, 대표팀 경기가 있는 날에는 평소보다 많은 손님이 방문하기 때문에 바쁘다. 당일 가게의 영업 정보에 대한 문의 전화가 많아 바쁜 상황이 더 심화되는 고충이 있다.

◇ 문제를 해결하기 위해 AI 기반 스포츠 관람장소 추천 서비스를 만들고자 한다. 서비스를 통해 이용가능한 장소에 대한 검색 용이성을 확보할 수 있다. 이는 관람할 수 있는 여건을 충족하며, SNS 기능 또는 외부 정보를 통해 자리의 유무를 확인할 수 있다. 이 과정에서 특정 장소에서 진행되는 이벤트 내용을 업로드 한다면 판매자 또한 홍보의 측면에서 도움이 된다. 기존에는 해당 가게의 홍보사이트 혹은 SNS 계정에서 정보를 확인할 수 있다면, 제공하고자하는 서비스는 지역에 몰려있는 특정장소에 대한 정보를 한눈에 확인할 수 있기 때문이다. 이는 손님 유치에 도움이 되며 소비자는 특정 장소에서 경기관람이라는 목적을 달성할 수 있다.

개발 과제의 목표 및 내용

◇ 소비자 입장에서 본인의 조건에 맞는 장소를 선택할 수 있도록 만든다. 사용자는 특정 지점을 선택하고 반경을 설정해서, 반경 내에 있는 장소를 조건에 부합하는 장소일수록 먼저 추천받을 수 있도록 한다

◇ 최신화 된 정보를 반영할 수 있도록해 당일 벌어질 수 있는 다양한 이벤트를 대비할 수 있도록 한다.

◇ 판매자 입장에서는 홍보를 한 내용이 특정 장소의 홈페이지나 블로그, SNS에만 노출되는 것이 아니라 해당 지역 내 모든 가게에 대한 정보를 한 눈에 확인할 수 있도록 서비스를 제공하여 홍보의 부담을 덜 수 있다. 이를 통해 손님 유치가 가능하다.

관련 기술의 현황

관련 기술의 현황 및 분석(State of art)

◇Front-End

Single Page Applications SPAs, 하나의 html 페이지를 로드해서 유저의 상호작용에 맞춰서 콘텐츠를 업로드 하는 방식이 유행하고 있다. 그래서 React, Annular, Vue.js와 같은 프레임워크가 2024년에도 지속적으로 사용될것으로 보인다. 그 중 React는 state management 솔루션을 발전시키고 large-scale 기능에서도 활용가능한 여전히 유용한 기술이다.

◇Back-End

AWS EC2는 클라우드 컴퓨팅의 확장성과 유연성을 제공하여 사용자가 필요에 따라 컴퓨팅 리소스를 즉각적으로 조정할 수 있게한다. 이는 특히 트래픽이 많은 시간이나 이벤트 기간 동안 리소스를 효율적으로 관리할 수 있게 하여 비용을 절감하고 사용자 경험을 개선한다. 또한, AWS EC2는 자동화와 DevOps 접근법을 촉진하여 더 빠르고 안정적인 애플리케이션 배포와 운영을 가능하게 하며 이러한 특성들은 EC2를 현대 백엔드 아키텍처의 핵심 요소로 만들며, 기업들이 더욱 자동화되고 편리한 방식으로 인프라를 관리할 수 있도록 지원한다.


◇AI (추천 시스템)

(1) 협업 필터링 (Collaborative Filtering)

다른 사용자들로부터 취향 정보들을 모아 사용자의 관심사를 예측하는 방법이다. 비슷한 취향을 가진 사용자들은 어떠한 아이템에 대해비슷한 선호도를 가질 것이라는 가정 하에 사용자와 아이템 간 상호 작용 데이터를 활용한다.

(2) 내용 기반 필터링(Content-Based Filtering)

아이템에 대한 세부정보를 토대로 사용자가 이전에 소비했던 콘텐츠와 유사한 콘텐츠를 추천해주는 시스템이다.

(3) Matrix Factorization

추천 알고리즘 중 하나로, 사용자, 아이템의 스칼라 값을 각각 그들의 잠재요인(latent)을 나타나낸 벡터로 변환하여 타깃을 사용자에게 추천해주는 알고리즘이다. One-hot encoding을 수행하여 각각의 m명의 사용자, n명의 아이템을 각각 mxm, nxn 행렬로 변환하고 그 후, 임베딩 레이어(mxk 또는 nxk)를 통과하여 k개의 잠재요인을 갖는 행렬로 변환하여 예측값이 계산된다. 예측한 결과 값이 선형적인 방식으로 얻어진다는 특징이 있다.
  • 특허조사 및 특허 전략 분석

Aggmaps.png

◇회사 : 네이버 주식회사

내용 : 지도에서 포인터의 위치에 따라 관련된 콘텐츠를 팝업 형식으로 보여주는 특허.

지도에서 사용자 포인터 위치 기반 쿼리를 진행하고, 쿼리에 대응하여 포인터를 중심으로 일정 반경을 갖는 스팟 파인더 기능을 제공한다. 스팟 파인더는 일정 반경 내에 포함되는 타깃 컨텐츠를 해당 위치좌표에 마커 형태의 링크로 노출하는 공간으로, 좌표 기반의 원 또는 다각형의 형태이다. 이는 포인터를 중심으로 스팟 파인더 내부에 존재하는 상기 타깃 컨텐츠를 검색하는 단계를 포함하고, 스팟 파인더 내부에 존재하는 타깃 컨텐츠의 개수와 타깃 컨텐츠의 목록을 스팟 파인더 외부에 함께 노출하는 것을 특징으로 하는 지도이다.


Aggpoi.png

◇ 사용자 취향을 기반으로 장소 개인화 추천을 위한 방법, 시스템, 및 컴퓨터 프로그램

◇ 회사 : 네이버 주식회사

내용 : 그래프 딥러닝 기술을 활용하여 얻은 데이터로 사용자 취향을 분석하여 개인별 추천 시스템 구축한다. 제1 POI(Point Of Interest)와 제2 POI 간의 유사성을 메타데이터의 항목별 유사성으로 구분하여 계산하는 단계 및 제2 POI 각각에 대해 제1 POI와 가장 유사한 메타데이터의 항목을 추천 사유로 제공하는 단계로 구성된다. 그래프 기반의 딥러닝 모델을 구현하기 위해, POI와 POI의 메타데이터를 노드로 정의하고 POI와 메타데이터 간의 관계를 엣지로 정의한 POI-메타데이터 그래프를 이종 그래프 형태로 생성한다. POI-메타데이터 그래프에서 공통된 메타데이터를 기반으로 노드간 이동확률을 나타내는 메타패스를 생성, 메타패스를 각각 문장으로 사용하여 워드 임베딩 방식을 통해 공통된 메타데이터를 가지는 POI끼리 가깝게 임베딩되는 딥러닝 모델을 구현한다.


기술 로드맵

◇Front-End : React, typescript, React query

◇Back-End : Java 17, springboot 3.2.4, aws

◇AI : Python, jupyter notebook, tensorflow, PyTorch

시장상황에 대한 분석

  • 경쟁제품 조사 비교

◇ 스페이스 클라우드, 빌리오 : 파티룸 및 공간 장소 대여 플랫폼으로 행사 시에 공간 대여가 가능하나 비용적인 부담과, 원하는 위치에 많은 장소가 존재하지 않을 가능성이 존재한다.

◇ 네이버지도 : 원하는 정보를 찾기 위해 조건탐색을 해야한다. 또한, 행사 특성에 맞는 조건 탐색보다는 대략적인(음식점, 영화관) 검색만이 가능하다. 이 후 정보의 검증을 위해 추가적인 블로그 확인 절차등을 거쳐야하는 단점이 존재한다.

◇ 야놀자 : 숙소 예약 플랫폼으로 다양한 형태의 숙소를 분류하여 사용자에게 추천한다. 지도를 시각적으로 표시하지는 않지만 현재 나의 위치를 기준으로 거리순으로 정렬해 사용자에게 추천한다. 또한, 즉시 예약가능 필터를 통해 남는 방이 있는지 여부도 사용자에게 안내 가능하다.

◇ 카카오맵: 일반적인 지도 서비스에 시즌 별로 사용자들이 관심을 가질만한 테마별 지도(사전투표소, 벚꽃 명소)를 추가하여 사용자 친화적인 서비스를 제공한다. 음식점의 경우 사용자가 정보를 제공하거나 사장이 등록하는 방식으로 메뉴나 영업시간을 등록할 수 있다. 그러나 특정 행사를 타깃으로 한 서비스 제공은 미흡하다.

  • 마케팅 전략 제시

SWOT 분석법을 활용하였다

◇ S(Strength)

(1) 고객들이 사이트의 리뷰를 통해 실시간 혼잡도를 확인할 수 있다. (2) 국제 스포츠 경기 관람을 희망할 때 장소를 특정하여 검색할 수 있으며 추천 알고리즘을 사용하여 각각의 개인에 맞춤형 서비스를 제공할 수 있다.

◇ W(Weakness)

(1) 규모가 커지면 서버를 운영하는 비용 등의 부담이 증가한다

◇ O(Opportunity)

(1) 근 시일 내에 파리 올림픽, 월드컵 예선이 예정됨 다른 테마의 서비스를 추가하여 다양한 사용자들을 끌어모을 수 있다.

(2) 국가 대항 스포츠 경기는 매년 존재하기 때문에 서비스의 수요는 항상 존재한다.


◇ T(Threat)

(1) 특정 기간에만 서비스를 제공하여 지속적인 서비스 제공이 어려움.


-가게 점주들을 대상으로 초객을 모집할 수 있는 점을 어필하여 행사 시에 이벤트를 유치할 수 있도록 유도하며 리뷰 이벤트를 통한 실시간 리뷰 작성을 통해 보다 정확한 정보를 제공함으로써 사용자들의 편의성 증진 홍보한다.

-사용자에게 지도를 통한 가게 분포에 대한 직관적 이해를 돕고 플랫폼 사용자간 리뷰뿐만 아니라 네이버 리뷰를 동시에 제공하여 더 신뢰성있는 정보를 전달 가능하다.

-대형 스크린을 보유한 가게는 스포츠 경기 기간동안 홍보에서 강점을 가진다. 이는 주점, 음식점뿐만이 아닌 영화관도 추천하여 대규모 관람객도 수용가능할 수 있게 한다.

-국가 스포츠가 진행되는 동안 사용하는 특수함을 이용하여 차별화 전략을 줄 수 있다.

개발과제의 기대효과

기술적 기대효과

◇일반적인 추천 알고리즘에 신경망 기술을 접합하여 비선형적인 구조에 대해서도 유연하게 대처할 수 있다는 점에서 의의가 있다

◇특정 테마에 대한 추천 시스템 적용을 통해서 그와 관련된 정보가 제공되어 더욱 집중화된 서비스 제공이 가능하다.

◇실시간 자리 여부를 리뷰 시스템을 통해 제공받을 예정이며 이를 통해 pos 시스템과의 연동이 불가능한 가게에서도 정보를 얻을 수 있다는 점에 의의가 있다.

경제적, 사회적 기대 및 파급효과

◇스포츠 경기 관람을 함께하여 사람들 간의 사회적 상호작용을 촉진한다. 공통의 관심사를 공유하며 새로운 사회적 네트워크를 구축하거나 해당 집단의 결속력을 높일 수 있다.

◇해당 서비스를 통해 사용자들이 관심사에 따라 특정 장소, 예를 들어 식당이나 영화관, 거리 응원 같은 공간에 집중적으로 모일 수 있다. 이러한 집중화는 해당 지역에서의 소비를 자극하여 경제 활성화에 기여한다. 사람들이 모이는 장소 주변의 상점과 서비스 업체들은 증가된 풋 트래픽으로 인해 매출 상승을 경험할 수 있으며, 이는 전체적으로 지역 경제에 긍정적인 영향을 미친다.

기술개발 일정 및 추진체계

개발 일정

Newtimestable.png

구성원 및 추진체계

- 조직구성 ■ 조장: 고재휘 ■ 조원: 김기찬, 서용, 이동건 ■ 조직계획: 혼합형 팀 구성

- 인력배치 ■ 프론트 엔드 구현: 고재휘, 이동건 ■ 백엔드: 김기찬 ■ AI 모델 설계 및 추천 알고리즘 설계 : 서용 ■ 테스트: 고재휘, 김기찬, 서용

설계

설계사양

제품의 요구사항

◇ 개별 사용자 취향에 맞는 가게 추천 -사용자의 선호도를 분석하여 맞춤형 가게 추천 기능을 제공한다

◇ 설정한 옵션에 따른 장소 필터링 -사용자가 선택한 옵션(예: 음식 종류, 가격대 등)에 따라 가게를 필터링하여 보여준다.

◇ 실시간 자리 정보 제공 -가게의 실시간 자리 정보를 확인할 수 있다.

◇ 로그인 및 회원가입 기능 -사용자 계정 생성 및 로그인을 위한 기능을 제공한다.

◇ 가게마다 좋아요 및 리뷰 작성 기능 -사용자가 가게에 좋아요를 누르거나 리뷰를 작성할 수 있다.

◇ 리뷰 수정 및 삭제 기능 -사용자가 작성한 리뷰를 수정하거나 삭제할 수 있다.

◇ 리뷰 및 평점 반영된 가게 정보 제공 -각 가게의 리뷰와 평점을 종합하여 사용자에게 제공한다.

◇ 사용자 요청에 따른 가게 추가 등록 가능 -사용자의 요청을 검토한 후 새로운 가게를 추가로 등록할 수 있다.

◇ 다양한 필터와 정렬 기능 -사용자가 원하는 조건에 맞게 가게를 필터링하고 정렬할 수 있는 기능을 제공한다. (예: 거리 순, 평점 순 등)

설계 사양

AskAgg.png


◇ 사용자 위치 기반 서비스 제공

1. 사용자가 로그인 시, 지도에 사용자의 위치가 나타나고, 설정한 반경 이내에서 사용자에게 추천하는 장소의 마커를 표현한다 2. 추천이 설정되지 않았을 경우 일정 반경 내에 평점 순, 좋아요 순 혹은 어떠한 기준으로 가게의 리스트 나열 및 마커로 위치 표시한다

◇ 각 사용자에게 맞는 장소 추천

1. 서버에 각 사용자별 데이터를 저장한다. 2. 추천 시스템을 통해 사용자가 방문할 확률이 높은 장소를 선별하여 제공한다. 3. 추천 시스템은 하루에 한 번씩 업데이트를 진행하여 변경된 정보에 대응한다. - 옵션에 따라 장소 필터링 1. 각 가게 별로 메타 데이터를 저장하여 여러가지 특징(ex: 대형 스크린의 존재 여부)을 구별한다 - 실시간 자리 정보 제공 1. 사용자의 가장 최근 리뷰를 바탕으로 남은 좌석 정보를 제공한다


◇ 가게에 대한 좋아요, 리뷰 남기기

1. 특정 가게에 대해 사용자는 좋아요 혹은 리뷰를 남긴다 2. 이 결과를 서버의 사용자별 데이터에 저장한다 3. MyPage에서 해당 리뷰와 좋아요의 개수 조회가 가능하며, 각각 ReviewPage와 FavoritePage로 리스트 확인이 가능하다 -리뷰에 대한 수정/삭제가 가능하다 -리뷰를 통해 실시간 좌석 정보를 제공받을 수 있다.

◇ 로그인과 회원가입 기능 구현 -회원가입을 하게 되면 사용자가 본인이 좋아요한 가게와 리뷰한 가게를 조회가능하다 -이를 통해 사용자 고유의 추천리스트 생성이 가능하다. 이는 우리 서비스의 본질이며 이를 위해서는 사용자 고유의 정보가 필요하기 때문에 로그인과 회원가입은 필수적으로 구현해야 한다.

개념설계안

StructureAgg.png

[개발]

-개발 환경은 PyCharm, Google Colab, vscode와 IntelliJ를 활용하였다. 이를 통해 코드 작성, 테스트, 디버깅 등을 효율적으로 수행할 수 있었다

-프로젝트의 핵심인 추천 알고리즘은 딥러닝 모델을 활용하기 때문에, Python 언어를 기반으로한 PyTorch 딥러닝 라이브러리를 활용하였다

-백엔드 서버는 AI 서버에게 사용자별 추천 장소 리스트 요청하면 AI 서버는 백엔드 서버에 NCF 모델[1]을 통한 추천 리스트 반환한다.

-AI 서버는 주기적으로(매일) 추천 알고리즘을 학습한 내용을 저장하며 이는 실시간이 아닌 배치 처리 방식이다


[배포]

-AWS RDS 및 AWS S3를 사용한 DB 관리 및 보안 관리를 진행한다.

-AWS S3에 데이터 베이스 전처리 데이터를 저장한다

이론적 계산 및 시뮬레이션

신경망을 결합한 추천 시스템(Neural Collaborative Filtering)


가. 기존 추천 알고리즘의 문제점

• 기존의 MF(matrix factorization) 방식은 유저-아이템 방식의 상호작용을 내적의 형태로 표현한다. • Latent factors 간의 내적은 유저-아이템 상호작용 데이터의 복잡한 구조를 알기 어렵게 한다. • 새로운 유저가 나타나면 이를 저차원 공간에서 나타내기 어렵다


나. Neural Matrix Factorization

MfAgg.png

MF를 GMF로 일반화하고 신경망을 사용한 MLP와 결합하여 NeuMF를 생성한다.


다. 추천 시스템의 성능 계산


Hit Rate와 nDCG를 사용하여 모델의 지표를 평가한다.


HitrateAgg.png

<Hit Rate>

NdcgAgg.png

<nDCG(normalized Discounted Cumulated Gain)>

GraphAgg.png


라. 가게 추천


사용자 ID(User_Id)를 입력하면 가게 리스트 중에서 네거티브 샘플링을 통해 가게를 추출한다.

IdAgg.png


<user_id> UseridAgg.png


<item_id> ItemidAgg.png

추천 시스템을 통해 각 가게의 피드백(0과 1 사이)을 계산한다.


<추천 리스트 반환값>


RecAgg.png


피드백 값이 높은 k개의 아이템의 id를 반환한다.

결과 및 평가

완료 작품의 소개

프로토타입 사진 혹은 작동 장면

[1] 메인페이지 (Master 계정) : 가게 등록 기능


Mastermain.png


[2] 메인페이지 (일반 계정) : 추천 가게 리스트


Normalmain.png


[3] 좋아요한 가게 목록 페이지


Favorites.png


[4] 리뷰를 남긴 가게 페이지


Reviews.png


[5] 가게정보페이지


Stores.png


[6] 로그인/회원가입 페이지


Register.png


LoginAgg.png

관련사업비 내역서

Money.png

완료작품의 평가

Validation.png

향후계획

가. 어려웠던 내용들

◇ 배포 과정에서 HTTP와 HTTPS를 각각 사용하여 배포한 결과, 통신 오류가 발생했습니다. HTTPS에서 HTTP 자원을 로드하려고 시도했기 때문에, 브라우저는 혼합된 콘텐츠 경고를 발생시켰습니다. 이로 인해 일부 기능이 제대로 작동하지 않아 사용자 경험에 문제를 일으켰습니다. 다행히 https로 수정해서 이 문제는 해결할 수 있었습니다.

◇ 가게 데이터셋을 넣을 때, 그 수가 많았으며 각 가게에 대한 정보를 수동으로 전처리하는 과정이 많이 힘들었습니다.

◇ 추천 리스트를 반환할 때, 기존에 구현된 알고리즘을 저희 팀이 사용하고자 하는 알고리즘으로 수정하는 과정이 많이 어려웠습니다. 이는 사안의 중요성 때문에 데이터 전처리 과과 프로젝트의 전체적인 개발에도 영향을 미쳤습니다.


나. 차후 구현할 내용

◇ 가게의 정보가 수정될 경우, 관리자 권한 계정에서 업데이트를 할 수 있는 기능을 추가하고자 한다.

◇ 사용자의 추천 가게 리스트를 반환할 때, 사용자의 선호도를 더 정확히 반영하기 위해 선호도 조사를 할 수 있는 페이지를 구현하고자 한다

◇ 기존의 디자인에서 동적인 디자인 요소를 추가해 사용의 편리성을 더욱 늘릴 수 있도록 하겠다

◇ 지도 위의 마커 관련해서, 현재는 모든 마커가 동일한 디자인이다. 사용자의 현재 위치, 기존의 가게 위치, 그리고 추천한 가게가 구분될 수 있도록 마커 디자인을 바꿀 수 있도록 하겠다

◇ 비단 관리자만 가게 등록하는 것이 아니라, 사용자들도 가게를 발견하고 이를 서비스를 제공하는 사측에 업데이트를 요청할 수 있도록 추천 기능을 만들고자 한다.

◇ 피드백을 받아 UI/UX 플로우를 개선할 수 있도록 하겠다.