[AIFFEL] 22.Feb.21 - Recommender_System

Deok Jong Moon·2022년 2월 21일
0
post-thumbnail

오늘의 학습리스트

  • 추천시스템의 중요한 포인트
    • 범주형 데이터이다.(contents의 장르, user의 직업 등...)
    • 좌표에 나타내서 가까움을 통해 유사도를 판단한다.
    • 좌표에 나타내기 위해 numerical vector로 변환한다.
  • 코사인 유사도(cosine similarity)에 대한 나의 직관적 이해
    • 방향을 갖는 두 벡터가 이루는 각이 0도(두 벡터의 방향이 일치)면 1
    • 그 각도가 직각이면 0... 뭐 대충 이런 식...?
  • df['keywords'] + df['cast']
    • pd.Series 형태인데, 저렇게 연산자로 붙일 수 있나? 싶어서 생각해보니
    • 단순히 pd.Series 개념에서는 각각 element-wise로 각각의 type에 맞게 연산자 처리를 해준 것 같다.
    • 즉 element들이 str이니...
  • sklearn.feature_extraction.text.CountVectorizer()
    • Convert a collection of text documents to a matrix of token counts.
    • This implementation produces a sparse representation of the counts using scipy.sparse.csr_matrix.
    • If you do not provide an a-priori dictionary and you do not use an analyzer that does some kind of feature selection then the number of features will be equal to the vocabulary size found by analyzing the data.

collaborative filtering

  • sparse하다는 뜻...

    • 예를 들어, 평점 행렬을 만들면
      • 이 평점 행렬은 보니까 만들어지는 원리가 pivot table 같이 보면 될 듯하다.
    • 컬럼이 영화 종류가 되고, value가 평점, row가 user_id인데,
    • 본 영화가 전부는 아니기에 대부분이 value가 0일 것이다.
    • 이러한 걸 sparse 하다고 한단다.
  • 협업 필터링에서 아이템 기반은..

    • 자칫하면 일반 유사도 비교를 통한 아이템 추천으로 혼동될 수도 있는데,
    • 다른 점은, 유저와 아이템을 엮는 것
    • 어떻게 엮느냐...
    • 먼저 아이템을 좋아하는 사람을 뽑고
    • 거기서 유사도가 있는 사람을 추려서
    • 그 사람이 좋아하는 항목을 추천해주는 것
    • 그런데 위에서 유사도가 있는 사람을 추린다는 것은 유사도를 계산한다는 것이다.
  • 협업 필터링 요약하면

    사용자 기반: 당신과 비슷한 고객들이 다음 상품을 구매했습니다.
    아이템 기반: 이 상품을 선택한 다른 고객들은 다음 상품을 구매했습니다.

  • 보통 사용자 기반보다 아이템 기반이 더 정확도가 높다고 함

  • 특이값분해(singular vector decomposition)

    • 특이값 분해(SVD)가 말하는 것
      • 직교하는 벡터 집합에 대하여, 선형 변환 후에 그 크기는 변하지만 여전히 직교할 수 있게 되는 그 직교 집합은 무엇인가?
      • 그리고 선형 변환 후의 결과는 무엇인가?
  • 추천시스템과 머신러닝의 관계...

    • 추천시스템에 머신러닝이 쓰일 수 있는 것이지, 머신러닝에 추천시스템이 있는 게 아니란다.
    • 그런데 보면 네이버에서는 이제 추천시스템을 AI부트캠프에서 가르치고 있다...
  • train, test 혹은 validation set을 나누는 방법이 많은 것 같다.

    • pd.DataFrame.sample()도 있고,
    • tensorflow model.fit(validation_split=)하면 트레이닝 셋에서 일부를 validation 셋으로 쓴단다.
profile
'어떻게든 자야겠어'라는 저 아이를 닮고 싶습니다

0개의 댓글