이 토이프로젝트를 하게 된 이유는 사실 별이유가 없었는데. 내가 지금 하고 있는 SOPT에 곧 앱잽이라는 장기프로젝트를 시작하게되는데 그전에 많은 기획자분들이 아이디어를 소개하는 기획경선이라는걸 하게 된다. 그래서 기획경선에 나왔던 아이디어중에 관심있는 아이디어가 두개 있는데 그중에서 하나의 아이디어에 추천시스템
을 넣을 수 있을거같았다.
근데 사실 추천시스템이라는건 꽤나 복잡한 인공지능
이라는 생각이 가장 먼저 떠올랐는데 처음엔 그러면 파이썬으로 만들어서 그걸 어찌저찌 xcode에 넣어야하나라는 생각이들었다. 그러다가 혹시몰라고 구글에 검색을 해봤는데 이런 세상에 CoreML에 remommendation이라는게 있었다.
아카데미에서 CoreML에 관해 공부해본적이 있었는데 그때도 정말 쉽고 간단하게 인공지능 모델을 만들고 사용했던 경험이있어서 이걸 이용해서 프로젝트를 해보기로했다(프로젝트라고 하기는 좀 애매하지만...) 하지만 한글로된 recommendation 정보는 하나도 없어서 스스로 공부를 하기는 했다... 내가 못찾은건가...?
우선 CoreML에 들어가면 여러가지 인공지능 모델을 만들 수 있다.
나는 이중에서 Recommendation이라는 추천모델을 만들거기때문에 저걸 누르고 next를 눌러주면된다
그렇게 하면 이렇게 모델을 training시킬 수 있는 view가 나오는데 정말보기만 해도 간단하다... training data를 넣어야하는데 구글링을 해보니 애초에 그 데이터가 3개의 colum으로 이루어져있어야한다. user의 id관련한 값들, 내용들(영화추천시스템이라고 하면 영화이름, 음식추천시스템이라고 하면 음식이름), 그리고 rating에 관련한 값이다. rating은 각각의 유저가 컨텐츠에게 어떤 평가를 내렸는지를 알려주는 지표이다. 대표적으로 평점이 있을거같다.
우선 이번에 내가 만들어볼 모델는 임신 주차별 도움이 되는 아티클 추천 모델
이다. 내가 이번 앱잼에 관심있는 두가지 아이디어중 하나의 아이디어이다. 우선 첫번째로 csv파일을 넣으면된다고 해서 그냥 numbers를 켜고 데이터를 만들어봤다
원래는 rating에 0점부터 5점까지의 점수를 넣는것도 하나의 방법이지만 우선 나는 좋아요를 누른 아티클을 기반으로 아티클을 추천해주는 방식을 생각했기에 좋아요를 눌렀으면 1 누르지 않았으면 0 을 넣어줬다.
근데 이렇게 하니까 뭐랄까 너무 근거가 1도없이 그냥 무작위로 1을 눌러서 내가 이 모델을 만들고 사용했을때 아무런 예측이 안되길래 나만의 가정을 몇가지 넣어서 데이터를 조금 구성해봤다.
우선 임신1주차아티클
을 읽은 유저는 임신8주차아티클
을 읽지않을 가능성이 높다
임신 8주차의 아빠들은 아내가 음식을 못먹어서 걱정이 많다고 가정
임신8주차쯤되었을때 임산부와 예비아빠의 스트레스 관련 아티클을 구독한 사람이 많다는 상황을 가정
만약 테스트 유저가 임신8주차 아티클을 좋아요를 누르지 않았을때
인공지능은 1주차부부일가능성이 높다고 판단
해 임신1주차 아티클을 1순위로 추천
해줍니다. 또한 임신초기이기때문에 아내를 케어하는 방법을 2순위로 추천
해주는걸 알 수 있습니다. 또한 8주차때보단 스트레스가 덜하다는 상황
을 가정한 데이터이기 때문에 스트레스 관리법이 가장 낮은 순위로 추천되는 결과
를 볼 수 있습니다
두번쨰 테스트는 8주차 아티클에 좋아요를 누르고
1주차 아티클엔 좋아요를 누르지 않은 상황
입니다. 8주차에 임산부가 음식관련된 상황이 발생하는 상황
을 데이터에 넣었기때문에 음식관련 아티클이 가장 1순위로 추천되는 결과
를 볼 수 있습니다. 또한 임신 8주차에 스트레스관련 이슈가 많은 상황을 데이터에 반영
했기때문에 기존에 스트레스관리법이 가장 낮은 순위였던것에 비해 4번째로 높은 순위로 추천
해주는 추천이 실시간으로 바뀐 결과를 확인할 수 있습니다.
실제로 이런 추천머신러닝 모델
을 이용한다면 유저에게 더 많은 맞춤형 정보를 제공
해줄 수 있을거라는 생각이 들었다. 또한 실제로 해당앱이 릴리즈가 되고 앱잼 이후
에 더 많은 기능을 추가한다면 애플워치
, 위젯
같은 새로운 방향으로의 확장
도 고려해보면 좋을거같다는 생각이 들었다. 이때 위젯과 워치앱은 보여줄수 있는 정보가 한정적
인데 이렇게 개개인 유저의 흥미도를 고려한 추천시스템으로 추천아티클을 보여주는 방식으로도 확장
이 가능하다고 생각이들었고 이런 인공지능 모델도 너무나 쉽게 만들수있고 쉽게사용할수있는 프레임워크인 CoreML에 정말 다시한번 놀랐던 시간이었다...
다음 포스팅에서는 실제로 앱에서 추천시스템을 구현하는 방법에 대해 알아보겠습니다
다음 포스팅 보러가기