추천엔진을 활용하여, 고객에게 맞는 제품을 추천할 수 있는 알고리즘을 구성하고자 한다.
추천엔진은 생각보다 복잡하다.
기존에 있는 데이터를 생성하는 임의의 값으로 데이터를 '행렬분해'하고 행렬분해 된 결과를 가지고 다시 데이터를 생성한다.
물론 새로 생성되는 데이터는 기존의 있는 데이터와 유사한 값을 가질 수 있도록 한다.
해당 알고리즘의 설명과 라이브러리는 (제목: 파이썬 머신러닝 완벽 가이드 | 출판사: 위키북스 | 저자: 권철민)에 '잠재 요인 협업 필터링'을 참고하면 아주 친절하고 자세하게 설명되어 있다.
일단 '잠재 요인 협업 필터링' 코드를 그대로 입력했다.
- 잘 됐다.
하지만 코드가 잘 되는 것으로 부족했다.
책에 있는 데이터는 모두 손으로 직접 입력하는 방식으로 되어 있어서 실제로 사용하게 된다면, 데이터를 일일이 입력해야 하는 번거로움이 있었다.
나는 개발자스럽게 데이터를 하나하나 정성스럽게 입력해야하는 번거로움을 탈피하고자, 데이터를 파일로 입력해서 자동으로 출력을 할 수 있도록 코딩 하기로 했다.
뿐만 아니라 실제 제품추천을 하기 위해서는 '잠재 요인 협업 필터링'으로 생성 된 행렬예측 데이터와 새로 입력 된 환자와 벡터 유사도를 확인해야 했다.
- 이 모든 과정을 '자동화' 시키고 싶었다.
완성 된 전체의 코드 중에서 실제로 내가 구성한 코드를 보니까, 초라하기가 그지 없다.
1차 목표: 데이터 입력 자동화
실제 코드는 데이터를 손으로 입력하도록 되어 있었다.
위 사진과 같이 데이터를 입력하려고, 무던히도 많은 애를 썼다.
row가 100개를 넘어간다면, 타이핑으로 입력을 엄두 낼 수가 없는 양이었다.
아직은 데이터를 호출할 곳이 명확하게 정해진 것이 없어서, 일단 구글 드라이브에 파일을 업로드해서 사용할 수 있도록 코드 했다.
2차 목표: 생성 된 예측행렬 데이터와 새로운 데이터를 row 별로 비교하여 벡터 유사도 확인하기
이 작업이 제일 지금의 나에게는 매우 어려운 작업이었다. 생성 된 예측행렬 데이터와 새로운 데이터의 벡터 유사도를 자동으로 출력하게 하는 것이다.
일단 예측행렬의 데이터에 있는 row 데이터를 하나씩 호출해서 새로운 데이터와 벡터 유사도 값을 측정하게 하고, 그중 가장 큰 값을 별도로 선정해야 한다.
실제로 해당 작업은 예측행렬의 행의 데이터 값을 하나하나 입력해서 새로운 데이터와 벡터 유사도를 출력해야 했다.
다시 봐도 굉장히 용감하다.
행 데이터를 하나하나 직접 입력해야하는 작업, 이게 너무 힘들었다. 나중에는 더 힘들듯 했다.
결국에는 혼자서 쿵짝쿵짝하여 자동으로 벡터 유사도 값을 측정하도록 수정했다.
for문 사용했다.
지금 보니까 4줄인데, 저 4줄을 작성하기 위해서 엄청 지저분했다.
먼 훗날에 내가 보면 이불킥 할 수줍은 작품이겠으나, 지금의 내가 보기에는 수줍은 첫 코딩이다.
'엉망진창 AI > Study' 카테고리의 다른 글
VBA 엑셀 매크로; 입력창으로 데이터 입력하기 (0) | 2023.03.30 |
---|