Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 엘런 튜링
- PCA
- mysql
- SQL
- 2023
- WIL
- 1463
- 프로그래머스
- 선형대수
- Django
- 문제풀이
- JP Study
- 한 권으로 읽는 컴퓨터 구조와 프로그래밍
- computer science
- 다시 왔다!
- MVT
- Stored Procedure
- Recommender system
- stored function
- Programmers
- 퓨처셀프
- 덴드로그램
- 혼자 공부하는 SQL
- 미래혁신대전
- 컴퓨터 과학이 여는 세계
- 백준
- Til
- CS
- FastAPI
- 멀티스레딩
Archives
- Today
- Total
Growth Hoon
20231201_TIL_{오전 : [ 추천시스템 -모델 ] , 오후 [프로그래머스 문제]} 본문
오전 ~ 오후
추천 시스템 공부
콘텐츠 기반 추천 시스템 (Contents-based Recommender System)
Main idea
>> 유저 A가 높은 평점을 주거나 큰 관심을 갖는 아이템 X와 유사한 아이템 Y를 추천.
User랑 item에 대한 Contens분석을 진행 >> Feature extraction을 한다는 의미이다.
이후 User Profile 분석을 진행 >> 여기서 ML기능이 부여될 수 있음 (TF-IDF, Clustering ..)
두 정보를 통해서 Filtering Component인 유사 아이템을 선택해서 추천을 해줌
콘텐츠 기반 추천 시스템에서 중요한 점
1. Contents와 User를 분석하는데 사용되는 알고리즘 ( Clustering, TF-IDF ... )
>> 잘 선택해서 좋은 feature를 추출하는 게 좋음
2. 성능을 높일 수 있는 적절한 contents를 사용해야함
>> 영화 추천을 위해서 영화에 대한 정보, 성별, 나이 등 적절한 contents를 선정하는 것이 중요
오후 중간
프로그래머스 문제 - 실패율
## 실패율
# 실패율 계산 : 스테이지에 도달했으나 아직 클리어하지 못한 플레이어의 수 / 스테이지에 도달한 플레이어 수
def solution(N, stages):
stage_dict = dict()
for stage in range(1,N+1):
not_clear = stages.count(stage) # yet, stage clear
current_user = 0
for i in stages:
if i >= stage:
current_user += 1
if not_clear == 0:
stage_dict[stage] = 0
else:
stage_dict[stage] = not_clear / current_user
data = sorted( stage_dict, reverse=True, key= lambda x : stage_dict[x])
return data
print(solution(5,[2, 1, 2, 6, 2, 4, 3, 3]))
효율성이 좋은지는 모르겠다.
생각보다 속도가 많이 느렸다.. ! ( 테스트 문제중 하나는 7000ms 소요)
프로그래머스 문제 - 덧칠하기
- 첫번째 시도
def solution(n, m, section):
answer = 0
width = ((max(section) - min(section))+1)
if width <= m:
answer += 1
elif (width % m) == 0:
answer += width // m
else:
answer += width // m
answer += 1
return answer
section 최대값에서 최솟 값을 빼면 구할 수 있을 것 같았음 (54점 짜리 코드임,, ㅜㅜ)
- 정답 찾아서 확인해봄(링크)
def solution(n, m, section):
answer = 1 # 칠하는 횟수
paint = section[0] # 덧칠 시작점
for i in range(1, len(section)):
if section[i] - paint >= m:
answer += 1
paint = section[i]
return answer
Image reference