4 Thu
[AI 스쿨 1기] 12주차 DAY 4
Recommendation system : ML 기반 추천 엔진 - SVD & 딥러닝 추천 엔진
사용자/아이템 기반 협업 필터링의 문제점
확장성 : 큰 행렬 계산은 쉽지 않음
아이템 기반은 계산량이 줄어들긴 함
Spark를 사용하면 큰 행렬 계산도 얼마든지 가능
부족한 데이터
많은 사용자들이 충분한 리뷰를 남기지 않음
해결책
모델 기반 협업 필터링 : 머신 러닝 기술을 사용해 평점을 예측. 입력은 사용자 - 아이템 평점 행렬
행렬 분해 방식
딥러닝 방식
계산량을 줄이고 의미있는 정보만 남기는 것이 포인트
행렬 분해 방식
협업 필터링 문제를 사용자-아이템 평점 행렬을 채우는 문제로 재정의
다음 그림에서 ?를 채우는 문제
사용자 또는 아이템을 적은 수의 차원으로 사용해서 문제를 간단하게 함
가장 많이 사용되는 행렬 분해 방식
PCA, Principal Component Analysis
SVD, Singular Vector Decomposition (또는 SVD ++)
PCA
차원을 축소하되 원래 의미는 최대한 보존
정확히 어떤 이유로 축소되었는지 알기는 어려움
SVD
2개 혹은 3개의 작은 행렬의 곱으로 단순화 (소인수 분해와 비슷)
SVD++
넷플릭스 컨테스트 때 고안된 방식
SVD나 PCA는 완전하게 채워져있는 행렬의 차원을 줄이는 방식인데 SVD++는 희소 행렬이 주어졌을 때 비어있는 셀들을 채우는 방식
채워진 셀들의 값을 최대한 비슷하게 채우는 방식
보통 RMSE의 값을 최소화 하는 방식으로 SGD를 사용
Recommendation system : 오토인코더 소개
오토 인코더
대표적인 비지도학습을 위한 딥러닝 모델
입력이 곧 출력이 되는 구조
곧 입력 레이어의 차원과 출력 레이어의 차원이 동일해야함
단, 은닉층의 차원은 입출력 차원의 비해 굉장히 작아야 함
데이터의 숨겨진 구조를 발견하면서 노드의 수를 줄이는 것이 목표
입력 데이터에서 불필요한 특징들을 제거한 압축된 특징을 학습하려는 것
케라스
파이썬으로 작성된 오픈소스 딥러닝 라이브러리
구글에서 시작
다양한 프레임워크 위에서 동작하는 상위레벨 딥러닝 프레임 워크
TensorFlow 2.0에서 케라스가 TF의 상위레벨 라이브러리로 공식 확정됨
API를 사용하는 세 가지 방법
Sequential 모델 API
가장 간단하며 가장 많이 사용
하나의 입력 데이터, 출력 데이터 그리고 순차 레이어 스택을 지원
Functional API
레고블록 모델
다중 입력 데이터, 출력 데이터 그리고 임의의 그래프 구조 지원
Sequential 모델에 비해 복잡
Model Subclassing
Last updated
Was this helpful?