
- 단순히 추천수, 최신순으로 보여주는 것 → 정렬로 해결 가능
- 그 이외 개인화 추천 시스템 도입 : ML 도입이 필요하다
추천 시스템 종류

- Contents-based Recommender System(컨텐츠 기반 추천시스템)
- 사용자가 과거에 좋아했던 아이템 파악 후 그 아이템과 비슷한 아이템 추천
- 코사인 유사도를 이용하여 유사도를 계산
- 데이터 획득 후 비정형 데이터로부터 관련 정보를 얻는 작업이 필요함. 즉 콘텐츠의 내용을 분석해야 함.
- Collaborative Filtering(협업 필터링)
- 비슷한 성향, 취향을 가진 다른 유저가 좋아한 아이템을 현재 유저에게 추천하는 것
- memory based, model based 방법이 있다.
- 한계
- 콜드 스타트 : 앞의 결과를 이용하여 동작하는 특성상 신규 사용자에게는 아무런 정보가 없어 추천할 수 없음
- 계산 효율 : 상당한 계산량이 요구되어 사용자가 많아질수록 계산 시간이 길어짐
- 롱테일 : 소수 인기콘텐츠가 전체 콘텐츠 비율을 차지하는 현상이 나타남
- Hybrid Recommender System
- 위의 두 방법 hybrid, 장단점 보완
- Knowledge - based Systems (지식 기반 추천시스템)
- 특정 도메인 지식 바탕으로 아이템의 피쳐를 활용한 추천
- 콘텐츠기반, 협업필터링 방식은 주로 기록 데이터를 기반으로 하지만 지식 기반 추천 시스템은 사용자가 원하는 데이터를 지정함.
- Context-base Recommendation
- 해당 context와 비슷한 context를 활용하여 추천시스템 구성
- ex) Location based, Real Time or Tims-Sensitivie
- Community-base Recommendation
- 사용자의 친구, 속한 커뮤니티의 선호도 바탕으로 추천
참고
https://velog.io/@hyxxnii/Ch-03.-추천-알고리즘의-종류
https://velog.io/@jochedda/추천-시스템-추천-알고리즘-종류
https://huidea.tistory.com/263
https://huiu-lee.tistory.com/49
트위터의 추천 시스템
[딥러닝/AI 소식] 트위터 추천 알고리즘 오픈소스화 / Github 공개
GitHub - twitter/the-algorithm-ml: Source code for Twitter's Recommendation Algorithm
Source code for Twitter's Recommendation Algorithm - GitHub - twitter/the-algorithm-ml: Source code for Twitter's Recommendation Algorithm
github.com
Candidate Sourcing -> Rank -> Filtering 단계를 거친다.
- candidate sourcing : 각각 다른 추천 소스에서 최고의 트윗을 가져오는 후보 소싱
- 팔로우하는 사람 In-Network 소스
- 하지 않는 사람 out-Network 소스
- Rank : 머신 러닝 모델을 통해 각 트윗 순위 매기기
- Hueristics & Filters 적용 : 차단한 사용자의 트윗, 선정적인 콘텐츠, 이미 본 트윗 등 필터링
이 파이프라인은 하루 약 50억 번 실행되며 평균 1.5초 이하로 완료되며 단일 파이프라인 실행에는 CPU 시간으로 220 초 정도 걸린다고 한다.
카카오 추천팀 Github
GitHub - kakao/recoteam: 카카오 추천팀 공개 리포지토리입니다.
GitHub - kakao/recoteam: 카카오 추천팀 공개 리포지토리입니다.
카카오 추천팀 공개 리포지토리입니다. Contribute to kakao/recoteam development by creating an account on GitHub.
github.com
추천 알고리즘 선택시 고려할 사항이나 연구한 내용들이 잘 정리되어있어 추천 시스템 도입시 참고하기 좋은 자료들이 많을 것 같다.
콘텐츠 분석
컨텐츠 기반 추천시스템이나 협업 필터링 방식이 가장 널리 사용되는 방식이라고 하고,
유튜브 알고리즘 등 여러 추천 시스템을 사용해 본 경험상 두 방식을 혼용하여 사용하고 있는 서비스가 많다고 생각했다.
컨텐츠 기반 추천 시스템을 도입하려면 사용자가 이 정보를 좋아한다는 정보뿐만 아니라 콘텐츠에 내용을 분석해야할 필요가 있다.
우리의 게시판 서비스에는 글과 이미지가 포함될 수 있다.
가장 간단한 콘텐츠 분류 방법은 사용자가 글을 작성할 때 말머리를 달게 하는 것이다.
당근 중고거래를 올릴 때에도 카테고리를 달게 하는 것을 생각하면 이해가 쉽다.
하지만 인공지능을 사용하는 방법도 있다.
자연어분석을 사용하면 글의 성격을 분류할 수 있을 것이며 사용자가 올린 이미지에서도 정보를 추출할 수 있다.
사용할 수 있는 서비스들을 몇 가지 조사해보았다.
자연어 분석
구글 Natural Language AI
Cloud Natural Language | Google Cloud
신규 고객에게는 Natural Language에 사용할 수 있는 $300의 무료 크레딧이 제공됩니다. 모든 고객에게 매월 비정형 텍스트 분석 5,000단위가 무료로 제공되며 크레딧이 차감되지 않습니다.
감정 분석, 항목분석, 구문 분석, 항목 감정 분석, 콘텐츠 분류, 텍스트 검토… 등이 있다.
- 감정 분석
- positive, netural, negative 세 가지 뿐
- 콘텐츠 분류
- 콘텐츠 카테고리 | Cloud Natural Language API | Google Cloud
- 굉장히 다양한 카테고리 목록을 제공한다.

- 텍스트 검토
- 게시판 글 속성에 활용될 서비스는 아니긴 하나 게시판 서비스에 도입을 고려할 만한 서비스이다. 비속어, 유해 언어를 감지할 수 있다.
- 안전 속성 설명
유해 무례하거나 모욕적이거나 부당한 콘텐츠 혐오 ID 또는 보호 속성을 대상으로 하는 부정적이거나 유해한 댓글 폭력적 개인 또는 그룹에 대한 폭력을 묘사하는 시나리오 또는 유혈 콘텐츠에 대한 일반적인 설명을 묘사 성적 성행위 또는 기타 외설적인 콘텐츠에 대한 참조가 포함 모욕 한 사람 또는 여러 그룹에 대한 욕설, 분노 또는 부정적인 댓글 욕설 저주와 같은 외설적이거나 저속한 언어 사망, 피해 및 참사 인간의 죽음, 참사, 사고, 재해, 자해 총기 및 무기 검, 총, 개인 무기, 탄약, 권총집 등의 액세서리를 언급하는 콘텐츠 공공 안전 구제책을 제공하고 공공 안전을 보장하는 서비스 및 조직 상태 건강 상태 즉, 질병, 장애, 의학 치료, 약물, 백신, 의료 관행 및 지원 그룹을 포함한 치료용 리소스가 포함 종교 및 신앙 초자연 법칙 및 존재 가능성을 다루는 신념 체계 즉, 종교, 신앙, 믿음, 영적 수행, 교회, 예배 장소. 점성학 및 오컬트 포함 불법 약물 유흥 및 불법 약물: 마약 용품 및 재배, 마약 상점 등. 일반적으로 기분 전환용으로 사용되는 약물(예: 마리화나)의 의학적 사용이 포함 전쟁 및 분쟁 전쟁, 군사적 충돌, 많은 사람들이 관련된 중대한 물리적 충돌. 전쟁이나 분쟁과 직접적인 관련이 없더라도 군 복무에 대한 논의는 포함 재무 은행, 대출, 신용, 투자, 보험 등 소비자 및 비즈니스 금융 서비스 정치 정치 뉴스 및 미디어, 사회, 정부, 공공 정책에 대한 토론 법무 법률 회사, 법률 정보, 주요 법률 자료, 준법 서비스, 법적 간행물 및 기술, 전문가 증인, 소송 컨설턴트, 기타 법률 서비스 제공업체를 포함한 법률 관련 콘텐츠
이미지 분석
Meta, Segment Anything
Segment Anything
Meta AI Computer Vision Research
segment-anything.com
https://github.com/facebookresearch/segment-anything
작년 메타에서 공개한 세그멘테이션 모델로 이미지내 모든 것을 세그멘테이션 한다는 모델.
api로 제공하는 것은 아니고 오픈소스로 공개하고 있다.
객체별로 분리는 하지만 classification 제공은 하지 않는다.
분리한 객체를 태깅하려면 별도의 조작이 필요하고 아래 레포지토리에서 찾아볼 수 있다.
https://github.com/fudan-zvg/Semantic-Segment-Anything
Yolov8
이미지모델에서 빠질 수 없는 yolo.
홈
고속, 고정밀 물체 감지 및 이미지 세분화 모델인 Ultralytics YOLOv8 에 대한 전체 가이드를 살펴보세요. 설치, 예측, 교육 튜토리얼 등을 제공합니다.
docs.ultralytics.com
- Object Detection, Segmentation, Classfication 모두 제공한다.
- 별도 커스텀하지 않고 기본 모델을 이용한다면 분류 가능한 클래스는 coco dataset 클래스이다.
# Classes names:
0: person 1: bicycle 2: car 3: motorcycle 4: airplane 5: bus 6: train 7: truck 8: boat 9: traffic light 10: fire hydrant 11: stop sign 12: parking meter 13: bench 14: bird 15: cat 16: dog 17: horse 18: sheep 19: cow 20: elephant 21: bear 22: zebra 23: giraffe 24: backpack 25: umbrella 26: handbag 27: tie 28: suitcase 29: frisbee 30: skis 31: snowboard 32: sports ball 33: kite 34: baseball bat 35: baseball glove 36: skateboard 37: surfboard 38: tennis racket 39: bottle 40: wine glass 41: cup 42: fork 43: knife 44: spoon 45: bowl 46: banana 47: apple 48: sandwich 49: orange 50: broccoli 51: carrot 52: hot dog 53: pizza 54: donut 55: cake 56: chair 57: couch 58: potted plant 59: bed 60: dining table 61: toilet 62: tv 63: laptop 64: mouse 65: remote 66: keyboard 67: cell phone 68: microwave 69: oven 70: toaster 71: sink 72: refrigerator 73: book 74: clock 75: vase 76: scissors 77: teddy bear 78: hair drier 79: toothbrush
Amazon Personalize
Amazon Personalize
고객 사례 고객 사례 “Warner Bros. Discovery에서 우리 팀은 프로모션 엔진을 구축하여 WBD 디지털 자산 전반에 걸쳐 인증받지 않은 사용자에게 맞춤형 영화와 예능을 추천하려고 했습니다. 맞춤형
aws.amazon.com
AWS에서 제공하는 추천시스템 서비스도 있었다.
비용이슈..!
구현 시 참고할 자료
- hybrid-recommendation system using python
Hybrid Recommendation System using Python | Aman Kharwal
자료들을 찾아보았지만 MVP 단계에서 게시글 추천화 시스템을 도입하는 것을 무리가 있어보였다.
구현 자체의 문제라기 보다는 어떤 요소들을 변수로 사용할 지, 어떤 알고리즘을 사용할 지에서부터
서버 비용, 추천 서버를 별도로 두어야 할 지, 콘텐츠를 어떻게 분리할 지 고려해봐야할 사항들이 매우 많다.
인공지능을 개인 프로젝트 단계에서 도입하기는 현실적으로 어려움이 많다.
서비스에 적합한 모델을 커스텀하기에는 하드웨어 자원과 시간이 부족하고 기존 서비스를 도입하기에는 비용 이슈가 발생한다.
'Projects' 카테고리의 다른 글
pm2로 알림서버 배포하기 - 무중단배포 (0) | 2024.04.17 |
---|---|
Swap 메모리의 힘은 대단했다 (0) | 2024.03.09 |
게시판 전체 글 랭킹 점수 데이터 업데이트 속도 77.72% 개선 (bulk update vs batch update) (1) | 2024.01.23 |
Querydsl을 이용한 커서 기반 페이지네이션 구현기 (0) | 2024.01.20 |
[코드실행기능 개발기 #3] 코드 실행 서버 부하테스트 (1) | 2023.12.17 |

- 단순히 추천수, 최신순으로 보여주는 것 → 정렬로 해결 가능
- 그 이외 개인화 추천 시스템 도입 : ML 도입이 필요하다
추천 시스템 종류

- Contents-based Recommender System(컨텐츠 기반 추천시스템)
- 사용자가 과거에 좋아했던 아이템 파악 후 그 아이템과 비슷한 아이템 추천
- 코사인 유사도를 이용하여 유사도를 계산
- 데이터 획득 후 비정형 데이터로부터 관련 정보를 얻는 작업이 필요함. 즉 콘텐츠의 내용을 분석해야 함.
- Collaborative Filtering(협업 필터링)
- 비슷한 성향, 취향을 가진 다른 유저가 좋아한 아이템을 현재 유저에게 추천하는 것
- memory based, model based 방법이 있다.
- 한계
- 콜드 스타트 : 앞의 결과를 이용하여 동작하는 특성상 신규 사용자에게는 아무런 정보가 없어 추천할 수 없음
- 계산 효율 : 상당한 계산량이 요구되어 사용자가 많아질수록 계산 시간이 길어짐
- 롱테일 : 소수 인기콘텐츠가 전체 콘텐츠 비율을 차지하는 현상이 나타남
- Hybrid Recommender System
- 위의 두 방법 hybrid, 장단점 보완
- Knowledge - based Systems (지식 기반 추천시스템)
- 특정 도메인 지식 바탕으로 아이템의 피쳐를 활용한 추천
- 콘텐츠기반, 협업필터링 방식은 주로 기록 데이터를 기반으로 하지만 지식 기반 추천 시스템은 사용자가 원하는 데이터를 지정함.
- Context-base Recommendation
- 해당 context와 비슷한 context를 활용하여 추천시스템 구성
- ex) Location based, Real Time or Tims-Sensitivie
- Community-base Recommendation
- 사용자의 친구, 속한 커뮤니티의 선호도 바탕으로 추천
참고
https://velog.io/@hyxxnii/Ch-03.-추천-알고리즘의-종류
https://velog.io/@jochedda/추천-시스템-추천-알고리즘-종류
https://huidea.tistory.com/263
https://huiu-lee.tistory.com/49
트위터의 추천 시스템
[딥러닝/AI 소식] 트위터 추천 알고리즘 오픈소스화 / Github 공개
GitHub - twitter/the-algorithm-ml: Source code for Twitter's Recommendation Algorithm
Source code for Twitter's Recommendation Algorithm - GitHub - twitter/the-algorithm-ml: Source code for Twitter's Recommendation Algorithm
github.com
Candidate Sourcing -> Rank -> Filtering 단계를 거친다.
- candidate sourcing : 각각 다른 추천 소스에서 최고의 트윗을 가져오는 후보 소싱
- 팔로우하는 사람 In-Network 소스
- 하지 않는 사람 out-Network 소스
- Rank : 머신 러닝 모델을 통해 각 트윗 순위 매기기
- Hueristics & Filters 적용 : 차단한 사용자의 트윗, 선정적인 콘텐츠, 이미 본 트윗 등 필터링
이 파이프라인은 하루 약 50억 번 실행되며 평균 1.5초 이하로 완료되며 단일 파이프라인 실행에는 CPU 시간으로 220 초 정도 걸린다고 한다.
카카오 추천팀 Github
GitHub - kakao/recoteam: 카카오 추천팀 공개 리포지토리입니다.
GitHub - kakao/recoteam: 카카오 추천팀 공개 리포지토리입니다.
카카오 추천팀 공개 리포지토리입니다. Contribute to kakao/recoteam development by creating an account on GitHub.
github.com
추천 알고리즘 선택시 고려할 사항이나 연구한 내용들이 잘 정리되어있어 추천 시스템 도입시 참고하기 좋은 자료들이 많을 것 같다.
콘텐츠 분석
컨텐츠 기반 추천시스템이나 협업 필터링 방식이 가장 널리 사용되는 방식이라고 하고,
유튜브 알고리즘 등 여러 추천 시스템을 사용해 본 경험상 두 방식을 혼용하여 사용하고 있는 서비스가 많다고 생각했다.
컨텐츠 기반 추천 시스템을 도입하려면 사용자가 이 정보를 좋아한다는 정보뿐만 아니라 콘텐츠에 내용을 분석해야할 필요가 있다.
우리의 게시판 서비스에는 글과 이미지가 포함될 수 있다.
가장 간단한 콘텐츠 분류 방법은 사용자가 글을 작성할 때 말머리를 달게 하는 것이다.
당근 중고거래를 올릴 때에도 카테고리를 달게 하는 것을 생각하면 이해가 쉽다.
하지만 인공지능을 사용하는 방법도 있다.
자연어분석을 사용하면 글의 성격을 분류할 수 있을 것이며 사용자가 올린 이미지에서도 정보를 추출할 수 있다.
사용할 수 있는 서비스들을 몇 가지 조사해보았다.
자연어 분석
구글 Natural Language AI
Cloud Natural Language | Google Cloud
신규 고객에게는 Natural Language에 사용할 수 있는 $300의 무료 크레딧이 제공됩니다. 모든 고객에게 매월 비정형 텍스트 분석 5,000단위가 무료로 제공되며 크레딧이 차감되지 않습니다.
감정 분석, 항목분석, 구문 분석, 항목 감정 분석, 콘텐츠 분류, 텍스트 검토… 등이 있다.
- 감정 분석
- positive, netural, negative 세 가지 뿐
- 콘텐츠 분류
- 콘텐츠 카테고리 | Cloud Natural Language API | Google Cloud
- 굉장히 다양한 카테고리 목록을 제공한다.

- 텍스트 검토
- 게시판 글 속성에 활용될 서비스는 아니긴 하나 게시판 서비스에 도입을 고려할 만한 서비스이다. 비속어, 유해 언어를 감지할 수 있다.
- 안전 속성 설명
유해 무례하거나 모욕적이거나 부당한 콘텐츠 혐오 ID 또는 보호 속성을 대상으로 하는 부정적이거나 유해한 댓글 폭력적 개인 또는 그룹에 대한 폭력을 묘사하는 시나리오 또는 유혈 콘텐츠에 대한 일반적인 설명을 묘사 성적 성행위 또는 기타 외설적인 콘텐츠에 대한 참조가 포함 모욕 한 사람 또는 여러 그룹에 대한 욕설, 분노 또는 부정적인 댓글 욕설 저주와 같은 외설적이거나 저속한 언어 사망, 피해 및 참사 인간의 죽음, 참사, 사고, 재해, 자해 총기 및 무기 검, 총, 개인 무기, 탄약, 권총집 등의 액세서리를 언급하는 콘텐츠 공공 안전 구제책을 제공하고 공공 안전을 보장하는 서비스 및 조직 상태 건강 상태 즉, 질병, 장애, 의학 치료, 약물, 백신, 의료 관행 및 지원 그룹을 포함한 치료용 리소스가 포함 종교 및 신앙 초자연 법칙 및 존재 가능성을 다루는 신념 체계 즉, 종교, 신앙, 믿음, 영적 수행, 교회, 예배 장소. 점성학 및 오컬트 포함 불법 약물 유흥 및 불법 약물: 마약 용품 및 재배, 마약 상점 등. 일반적으로 기분 전환용으로 사용되는 약물(예: 마리화나)의 의학적 사용이 포함 전쟁 및 분쟁 전쟁, 군사적 충돌, 많은 사람들이 관련된 중대한 물리적 충돌. 전쟁이나 분쟁과 직접적인 관련이 없더라도 군 복무에 대한 논의는 포함 재무 은행, 대출, 신용, 투자, 보험 등 소비자 및 비즈니스 금융 서비스 정치 정치 뉴스 및 미디어, 사회, 정부, 공공 정책에 대한 토론 법무 법률 회사, 법률 정보, 주요 법률 자료, 준법 서비스, 법적 간행물 및 기술, 전문가 증인, 소송 컨설턴트, 기타 법률 서비스 제공업체를 포함한 법률 관련 콘텐츠
이미지 분석
Meta, Segment Anything
Segment Anything
Meta AI Computer Vision Research
segment-anything.com
https://github.com/facebookresearch/segment-anything
작년 메타에서 공개한 세그멘테이션 모델로 이미지내 모든 것을 세그멘테이션 한다는 모델.
api로 제공하는 것은 아니고 오픈소스로 공개하고 있다.
객체별로 분리는 하지만 classification 제공은 하지 않는다.
분리한 객체를 태깅하려면 별도의 조작이 필요하고 아래 레포지토리에서 찾아볼 수 있다.
https://github.com/fudan-zvg/Semantic-Segment-Anything
Yolov8
이미지모델에서 빠질 수 없는 yolo.
홈
고속, 고정밀 물체 감지 및 이미지 세분화 모델인 Ultralytics YOLOv8 에 대한 전체 가이드를 살펴보세요. 설치, 예측, 교육 튜토리얼 등을 제공합니다.
docs.ultralytics.com
- Object Detection, Segmentation, Classfication 모두 제공한다.
- 별도 커스텀하지 않고 기본 모델을 이용한다면 분류 가능한 클래스는 coco dataset 클래스이다.
# Classes names:
0: person 1: bicycle 2: car 3: motorcycle 4: airplane 5: bus 6: train 7: truck 8: boat 9: traffic light 10: fire hydrant 11: stop sign 12: parking meter 13: bench 14: bird 15: cat 16: dog 17: horse 18: sheep 19: cow 20: elephant 21: bear 22: zebra 23: giraffe 24: backpack 25: umbrella 26: handbag 27: tie 28: suitcase 29: frisbee 30: skis 31: snowboard 32: sports ball 33: kite 34: baseball bat 35: baseball glove 36: skateboard 37: surfboard 38: tennis racket 39: bottle 40: wine glass 41: cup 42: fork 43: knife 44: spoon 45: bowl 46: banana 47: apple 48: sandwich 49: orange 50: broccoli 51: carrot 52: hot dog 53: pizza 54: donut 55: cake 56: chair 57: couch 58: potted plant 59: bed 60: dining table 61: toilet 62: tv 63: laptop 64: mouse 65: remote 66: keyboard 67: cell phone 68: microwave 69: oven 70: toaster 71: sink 72: refrigerator 73: book 74: clock 75: vase 76: scissors 77: teddy bear 78: hair drier 79: toothbrush
Amazon Personalize
Amazon Personalize
고객 사례 고객 사례 “Warner Bros. Discovery에서 우리 팀은 프로모션 엔진을 구축하여 WBD 디지털 자산 전반에 걸쳐 인증받지 않은 사용자에게 맞춤형 영화와 예능을 추천하려고 했습니다. 맞춤형
aws.amazon.com
AWS에서 제공하는 추천시스템 서비스도 있었다.
비용이슈..!
구현 시 참고할 자료
- hybrid-recommendation system using python
Hybrid Recommendation System using Python | Aman Kharwal
자료들을 찾아보았지만 MVP 단계에서 게시글 추천화 시스템을 도입하는 것을 무리가 있어보였다.
구현 자체의 문제라기 보다는 어떤 요소들을 변수로 사용할 지, 어떤 알고리즘을 사용할 지에서부터
서버 비용, 추천 서버를 별도로 두어야 할 지, 콘텐츠를 어떻게 분리할 지 고려해봐야할 사항들이 매우 많다.
인공지능을 개인 프로젝트 단계에서 도입하기는 현실적으로 어려움이 많다.
서비스에 적합한 모델을 커스텀하기에는 하드웨어 자원과 시간이 부족하고 기존 서비스를 도입하기에는 비용 이슈가 발생한다.
'Projects' 카테고리의 다른 글
pm2로 알림서버 배포하기 - 무중단배포 (0) | 2024.04.17 |
---|---|
Swap 메모리의 힘은 대단했다 (0) | 2024.03.09 |
게시판 전체 글 랭킹 점수 데이터 업데이트 속도 77.72% 개선 (bulk update vs batch update) (1) | 2024.01.23 |
Querydsl을 이용한 커서 기반 페이지네이션 구현기 (0) | 2024.01.20 |
[코드실행기능 개발기 #3] 코드 실행 서버 부하테스트 (1) | 2023.12.17 |