엔트리와 함께하는 인공지능 교실 > Chapter 9. 숫자 인공지능 모델

[Session 03] 숫자 군집

 숫자 군집

학습 목표 

숫자로 구성된 자료를 학습시켜 군집으로 묶을 수 있고, 어떤 자료가 어떤 군집에 속하는지 판단할 수 있다.

문제 해결 상황

마트에는 60여 가지의 맛있는 과자들이 있는데, 이 과자들의 성분 중 살찌는데 영향을 주는 성분을 중심으로 4개 군집으로 묶어본 후, 내가 고른 과자가 살찌는 성분이 많은 군집에 속하는지 알아보고 싶다.

 


문제 해결 방법

조사한 과자의 성분(나트륨, 탄수화물, 당류, 지방, 콜레스테롤, 단백질) 데이터를 수집하고, 과자 성분 중 살찌는데 영향을 주는 주요 성분 2가지를 선택한다. 선택된 성분을 기준으로 과자류 자료를 학습시켜 군집으로 묶는다. 성분의 구성이 유사한 각 군집의 그래프를 보고 군집의 특성을 파악한다. 그리고 내가 먹을 과자의 성분을 입력하면, 학습모델에 의해서 어떤 군집에 해당하는지 판단한다.



 


 3-1 데이터 수집하기

 

과자 포장지 뒷면에는 영양정보 부분에 과자의 성분별 내용량을 제공한다. 엔트리의 데이터 시트에 성분(나트륨, 탄수화물, 당류, 지방, 콜레스테롤, 단백질)을 엔트리의 데이터 시트에 직접 입력할 수 있다.


 

1) 여기서는 미리 준비된 자료를 불러 사용한다.


 

 

2) 테이블을 불러왔으면 인공지능과 인공지능 모델 학습하기를 선택한다.


3) 군집:숫자를 선택한 후 학습하기를 눌러준다.


 


 3-2 인공지능 군집 모델 학습하기

1) 데이터입력 창에 펼침버튼을 눌러서 자료를 선택해서 나타나는 속성 성분들(나트륨, 탄수화물, 당류, 지방, 콜레스테롤, 단백질)중 나누고자 하는 핵심속성(당류, 지방류)을 드래그해서 옮긴다. 엔트리 군집 모델에서는 최대 3개까지 핵심 속정을 지정할 수 있다.


 

 

2) 비지도학습인 군집의 기본 학습 모델링 군집 개수 미리 정해져 있지는 않아서 50개 이상으로 크게 잡을 수도 있지만, 의사결정을 할 때 주로 사용하는 군집의 개수는 10개 이하가 대부분이다. 엔트리에서 군집을 묶는 알고리즘은 K-평균 알고리즘을 사용하므로, 학습 시작할 때 군집의 개수 K와 시작하는 군집 중심점을 정해야 한다.


 

3) 엔트리에서 기본 군집 모델링에서의 군집 개수 K는 1~4개 이하로 제한되고 있으며, 처음 시작되는 군집 중심점 기준값은 가장 먼거리와 무작위 2가지를 선택할 수 있다. 예를 들어 K 군집 개수를 4로 정했다면 처음 시작하는 군집 중심점 4개는 서로 가장 먼거리에 있는 4개 자료가 선택되고, 무작위는 아무 자료가 4개 선택되어 시작하는 것이다. 이렇게 초기 군집 중심점이 선택되면 학습해가면서 적절한 군집 중심점을 찾아 군집을 묶어주는 것이다. 위 그림은 4개 군집 개수를 지정하고 초기 중심점 기준은 가장 먼거리인 4개 점으로 학습을 시키는 것으로, 오른쪽 결과를 보면 4개의 색깔로 표시된 군집으로 자료가 묶여있는 그래프와 함께 군집별 중심값이 제공되는 것을 볼 수 있다. 똑같은 조건을 주고 같은 자료를 다시 모델링해도 군집 번호와 중심점이 달라지는 것을 볼 수 있다. 이것은 데이터를 학습할 때 학습용과 검증용의 구분이 달라져서 생기는 차이이다.



 3-3 엔트리 프로그래밍

1) 인공지능 군집 모델을 돌린 후, 엔트리봇 오브젝트에 다음과 같은 코드를 넣어 군집 차트가 보이도록 한다.


 


2) 모델 차트창이 실행된 다음의 그림을 보면 60여개의 과자들을 4개의 군집으로 묶은 것을 볼 수 있다. 3 개의 군집은 근처에 모인 반면, 군집4는 오른쪽 위에 위치한 것으로 보아 다른 과자에 비해 살찌는 성분이 매우 높은 것을 알 수 있다.


 

 

3) 가로 탭 중 맨 오른쪽의 속성 탭을 클릭하여 먹으려는 과자의 성분(당류, 지방)의 값을 입력받기 위한 변수를 각각 추가해서 만든다.


4) 변수 당류, 지방을 만들고 세로 아래부분의 자료를 클릭하면 다음과 같이 변수들의 블록들이 생긴다. 묻고 대답하기 블록을 이용하여, 분석하고자 하는 당류값과 지방값을 입력받고 그 값들을 각각 변수 당류와 변수 지방에 지정한다.


 

5) 입력 받은 당류값과 지방값에 해당하는 군집 번호에 따라서 과자류 군집을 알려주는 코드를 작성한다.


 

 

6) 코드가 다 완성된 다음에는 왼쪽 위에 생기는 모델이름과 변수들을 보이지 않도록 숨긴다.


7) 완성된 코드를 종합하면 다음과 같으며, 이를 실행시켜 내가 좋아하는 과자들의 당과 지방값을 입력하여 어떤 과자군집에 속하는지 확인해본다.