[플레이데이터] 6월 7일 오전 수업

싱숭생숭어·2023년 6월 8일
0

플레이데이터 수업

목록 보기
12/21

AWS

  • SSO: 통합 인증(=Single Sign-On), 모든 서비스에 접근할 수 있는 SSO ID가 바로 루트 계정

  • AWS Quick Start -> Mac, Ubuntu 등 지원가능한 운영체제 나옴

  • 인스턴스 유형 -> 선택가능한 사양 목록 나옴(시간 당 금액 포함)

IAM

  • IAM 정책은 무엇에 대해(리소스 기반 정책), 어떤 조작을 허가(자격 기반 정책)여부를 설정하는 것 !

  • Identity and Access Management의 약어로 AWS 인증 가능

  • 이메일 아이디로 만든 계정을 루트 계정

    • 이거는 모든 서비스에 접근이 가능(SSO;Single Sign-On)ID가 생성
  • 루트 계정은 모든 AWS 리소스에 접근가능하기에 여러명이 루트 계정을 사용하는 건 보안 문제 발생

  • 이를 위해 IAM 서비스를 제공함

    • IAM를 통해 유저, 유저 그룹을 만들어 각각의 사용자 혹은 그룹별로 필요한 권한만을 제한적으로 부여 가능
  • AWS 모든 서비스는 IAM을 활용하여 AWS 리소스를 사용하도록 인증(로그인)을 설정하고 권한 부여된 대상을 제어 가능

  • IAM 자체는 추가 요금이 없고 무료로 사용할 수 있음. IAM 자체는 추가 요금이 없고 AWS 계정에 제공되는 기능(IAM 사용자가 사용하는 서비스는 당연히 요금이 부과가 됨)

IAM 4가지 설정

  1. IAM User - 사용자
  2. Group - 사용자 그룹
  3. Role - 권한
  4. Policy - 정책
  • 루트 사용자는 팀원들에게 사용자들에게 권한과 정책을 부여해야 함

추천 시스템

유튜브, 넷플릭스 등 추천 시스템을 기반으로 하는 사이트

알고리즘은 대략 3가지가 존재하는데, 오늘은 CF, 협업 필터링을 알아볼 예정 !

  • 유튜브에서 동영상을 한번 보면 추천되는 영상만 봐도 오래 남아있을 수 있음 -> 고객이 우리 사이트에 오래 남아있게 유도하는데 중요한 시스템(광고와 구매까지 이어질 수 있음) -> 잘 만들어진 추천 시스템은 기업의 자금에 직결 !

  • 추천 시스템은 개인화 ! privacy

협업 필터링(Collaborative Filtering:CF)

  • 구매, 소비한 제품에 대해 각 소비자의 평가를 받아서 평가 패턴이 비슷한 소비자를 한 집단으로 보고, 그 집단에 속한 소비자들의 취향을 활용하는 기술

    • 예를 들어 A라는 소비자와 제품 평가 패턴이 비슷한 사람들을 골라서 이 사람들이 공통적으로 좋아하는 제품 중에서 A가 아직 접하지 않은 제품들을 추천하는 기술
  • 소비자의 평가정보를 얻기 어려울 수 있다는 한계

    • 이러한 한계를 극복하기 위해 간접적인 정보를 사용하는 경우(구매하지 않아도 지속적인 검색이나 장바구니에 넣는 것 등을 통해 취향 파악)
  • 이러한 정보가 온라인에서는 클릭스트림 형태로 수집되기 때문에, 클릭스트림 분석을 통해 소비자의 취향이나 니즈를 알아내기가 가능

    • 아파치와 카프카, 스파크가 실시간 로그 정보를 얻어올 때 주로 사용
  • brave라는 웹 브라우저를 통해 들어가면, 광고를 자동으로 차단해주고(쿠키 비허용), 유튜브 백그라운드 허용도 해줌 !

최근접 이웃(Nearest Neighbor)

  • 새로운 영화가 나오면 인터넷이나 친구들에게 물어보는 것과 유사한 방식

  • 사용자가 아이템에 매긴 평점 정보나, 상품 구매 이력과 같은 사용자 행동 양식을 기반으로 추천을 수행하는 것이 협업 필터링

  • 협업 필터링의 주요 목표는 사용자-아이템 평점 매트릭스와 같은 축적된 사용자 행동 데이터를 기반으로 사용자가 아직 평가하지 않은 아이템의 예측 평가를 도출

사용자 기반

  • 당신과 비슷한 고객들이 다음 상품도 구매했습니다.

아이템 기반

  • 이 상품을 선택한 다른 고객들은 다음 상품도 구매했습니다.

코사인 유사도 계산

코사인 유사도: 두 사용자의 평가값이 유사할수록 각도가 작다는(=코사인 값이 크다)는 것을 알 수 있음

  • 코사인값은 최소 -1(완전 불일치)에서 최대 1(완전 일치)까지의 값을 갖는다.

  • 만약 사용하는 데이터가 이진값을 갖는다면 상관계수나 코사인 유사도는 사용할 수 없음(이 경우엔 타니모토 계수, 자카드 계수를 사용)

CF 예제

import pandas as pd
df = pd.read_excel("./영화 평점.xlsx",  header=[1]  )

#컬럼 명 변환
df.rename(columns={'Unnamed: 0' : '이름'}, inplace=True)

#이름이 Null이 아닌 것만 df에 담기
df = df[df['이름'].notnull()].copy()

#이름 컬럼의 앞 세글자만 가져오기
df['이름'] = df['이름'].apply(lambda x : x[:3])

#null 아닌 값이 10개 이상인 행만 남김
df.dropna(axis=0, thresh=10)

# 문자열을 결측치로 변환 
import numpy as np
df= df.applymap(lambda x : np.nan if isinstance(x, str) == True else x)

#melt하면 컬럼이 많은 행을 분해해서 행으로 바꿀 수 있음
df.reset_index(inplace=True)
df2 = pd.melt(df, id_vars=['이름'], var_name='영화', value_name='평점')

#melt와 pivot은 반대
df2_pivot = df2.pivot(index='이름', columns='영화', values='평점')

#유사도 매트릭스 생성
from sklearn.metrics.pairwise import cosine_similarity
df2_pivot_na = df2_pivot.copy().fillna(0)
user_similarity= cosine_similarity(df2_pivot_na,df2_pivot_na)
user_similarity= pd.DataFrame(user_similarity,index=df2_pivot_na.index, columns=df2_pivot_na.index)

이런식으로 유사도 매트릭스가 출력되고, 이를 통해 추천 시스템을 구현하는데 활용할 수 있음

profile
공부합시당

0개의 댓글