Growth Hoon

20231201_TIL_{오전 : [ 추천시스템 -모델 ] , 오후 [프로그래머스 문제]} 본문

TIL_Today I Learned

20231201_TIL_{오전 : [ 추천시스템 -모델 ] , 오후 [프로그래머스 문제]}

sayhoon 2023. 12. 1. 17:21

오전  ~ 오후 

추천 시스템 공부

 

콘텐츠 기반 추천 시스템 (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를 선정하는 것이 중요


오후 중간

 

프로그래머스 문제 - 실패율

github link

## 실패율
# 실패율 계산 : 스테이지에 도달했으나 아직 클리어하지 못한 플레이어의 수 / 스테이지에 도달한 플레이어 수

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

1. contents-based model