5/23 Orange3 알아보기(1)
데이터에 대한 이해
관찰이나 실험, 조사로 얻은 사실이나 자료
역사적 기록물이나 측정을 통해 얻은 수치, 저장된 문서, 사진, 동영상 등이 모두 데이터
1) 평균의 함정
평균이 항상 집단을 대표할 수 있으므로, 평균을 보완하는 중앙값을 사용하는 것도 필요하다.
중앙값이란, 데이터들을 값이 작은 순서에서 큰 순서로 늘어놓았을 때 중앙에 오는 값을 의미한다.
데이터는 편차가 있으므로, 분포도를 봐야한다
2) 데이터 리터러시
리터러시) 문해력 글을 읽고 쓸 줄 아는 능력
데이터 리터러시) 데이터를 읽고 쓸 줄 아는 능력, 그리고 왜곡된 데이터가 만들어낸 가짜를 볼 줄 아는 능력
1. 자료 : 알맞을 자료를 모으는 능력
2. 사실 : 자료에서 쓸모있는 사실을 이끌어내는 능력
3. 판단 : 사실을 바탕으로 판단을 내리는 능력
4. 주장 : 판단을 토대로 최선의 주장을 만들어내는 능력
데이터는 한 부분, 한 수치만 보고 결정을 내리면 안 되고 전체적인 것을 보면서 결정을 내려야한다.
ex. 총 전환 수보다 전환율이 더 중요할 수 있다.
ex. 관광지의 숙박량은 많은데 체류시간이 적은 경우, SNS 언급량과 함께 방문자수(+전년 동월 방문자수)를 같이 본다.
데이터 활용사례) 프레드폴 - 범죄율이 높은 지역과 시간대 데이터를 기반으로 미리 예측해서 그 곳의 치안을 강화한 사례
상관관계를 볼 수 있는 툴 - 썸트렌드
썸트렌드(Sometrend)
사람들의 생각이 궁금할 때, 썸트렌드에서 빅데이터 인사이트를 찾아보세요.
some.co.kr
Orange3 실습
orange3 설치 사이트
Orange Data Mining
Orange Data Mining Toolbox
orangedatamining.com
Orange3를 열어보면 좌측에 Data, Transform, Visualize, Model, Evaluate 이런 탭들이 있는 섹션이 있다. 이 섹션들을 잘 봐두도록 하자.
1) 국영수사과 과목들 간 상관관계 분석
Orange3에서 데이터 파일을 불러오기 위해서는 우선 'File'이라고 되어있는 아이콘을 드래그한 후 빈 화면에 떨어뜨려 놓으면 된다(드래그 앤 드롭).
그리고 1번 동그라미를 클릭해서 데이터 파일을 컴퓨터에서 찾는다. 그다음 불러와지면 맨 하단 우측에 'Apply'를 누르면 된다.
cf. 여기서 'feature'는 Role이 변수라는 의미이다. feature를 클릭하면 Role을 다른 것(target)으로 바꿀 수 있다. 참고로 target의 경우, 예측 변수라는 의미이다.
상관관계와 상관계수
상관계수가 0일 경우 상관관계가 없다고 보면 된다. 상관계수는 0~1 사이의 값을 가지게 되며, 0.4까지는 '상관이 낮다', 0.4~0.6은 '다소 높다(현실에서 많이 나온다)', 0.6 이상은 '높다'라고 해석하면 된다.
국영수사과 과목들 관의 상관관계를 보기 위해 우선 scatter plot을 수행하고 싶다. 우선 Visualize 부분에서 Scatter Plot을 끌어와서 File에서 드래그 해온다. 그 다음, File의 선을 Scatter Plot에 연결시키면(drag & drop하는 과정에서 선이 나온다) 분석이 완료된다.
빈 화면에 마우스 우클릭하면 검색도 가능하다.
Scatter Plot을 클릭해서 들어가보면 다음과 같은 창이 뜬다.
show regression line의 check box에 체크하면, 추세선을 볼 수 있다. 0.81인 것으로 보아, 예측 모델이 예측을 잘 할 가능성이 높다고 볼 수 있다.
cf. 회귀분석(Regression Analysis) : 어떤 수치 값을 예측할 때 쓰는 머신러닝 모델. 상관분석이 높아야 회귀분석의 예측률이 높아진다.
검색에서 correlation을 검색해서 data와 연결하면 다음과 같은, 과목 간 조합들에 따른 상관계수값을 볼 수 있다.
2) 영화 제작비로 관람객 수 예측하기
영화 정보에 대한 exel file을 연 다음 scatter plot을 1)에서처럼 수행해준다. 그 다음, file 창을 열어서 관람객을 feature이 아니라 target으로 바꿔준다. 우리는 회귀분석을 통해 (제작비에 따른)관람객 수를 예측할 것이기 때문이다.
그 다음 Model에서 Linear Regression(선형 회귀)을 빈 화면에 끌어와준다. 그리고 File과 연결시켜준다.
여기서 끝이 아니다. 이것으로 예측을 하길 원하기 때문에 우리는 'prediction'이라는 친구를 좌측 Evaluate 섹션에서 끌어와줘야한다.
그리고 Linear Regression과 Predictions를 연결시켜준다.
여기서 끝이 아니다. 우리의 목표는, 개봉 예정작의 제작비 정보를 가지고 이 영화가 관람객 수가 얼마나 될 것인지를 예측하는 것이다.
따라서 새 File을 생성하여 개봉 예정작 파일을 연다(그림은 파일의 이름 'File (1)'을 '개봉예정작'으로 바꾼 상태이다).
File (1) 은 개봉예정작의 제작비 데이터 파일이다. 좌측 그림처럼 Predictions와 개봉 예정작의 제작비를 연결한다. 그러면 orange3가 학습한 예측 회귀 모델이 적용되어 우측처럼 개봉 예정 영화들의 제작비에 따라 관람객 수가 예측된 모습을 볼 수 있다.
인공지능
인공지능이란?
데이터를 바탕으로 추론, 학습을 하는 존재
Bach의 360곡을 토대로 나만의 음악을 만들 수 있게 한 사이트
https://doodles.google/doodle/celebrating-johann-sebastian-bach/
Celebrating Johann Sebastian Bach Doodle - Google Doodles
Learn more about the creation of Celebrating Johann Sebastian Bach Doodle and discover the story behind the unique artwork.
doodles.google
학습된 그림을 토대로, 사용자가 그리고 있는 그림이 무엇인지 맞추는 사이트
AutoDraw
Fast drawing for everyone. AutoDraw pairs machine learning with drawings from talented artists to help you draw stuff fast.
www.autodraw.com
그려진 그림을 통해 자동으로 애니메이션을 만들어주는 사이트
https://sketch.metademolab.com
Animated Drawings
sketch.metademolab.com
인공지능 : 컴퓨터가 사람처럼 생각하고 판단하게 만드는 기술
머신러닝 : 인공지능의 한 분야로, 인간의 학습 능력과 같은 기능을 컴퓨터에 부여하기 위한 기술
딥러닝 : 인공지능 신경망을 기반으로 한 머신러닝의 방법중 하나
Orange3는 머신러닝까지 가능하다. 딥러닝은 안 된다.
Rule-based의 머신러닝은 '빨갛고 동그란 물체는 사과이다' 라는 식으로 학습시켜서, 초록 사과(아오리사과)를 인식하게 만들려면 인간이 변수에 맞추어 규칙을 추가해야했다.
딥러닝을 바탕으로 내가 그린 그림이 무엇인지를 맞추는 사이트
https://quickdraw.withgoogle.com
Quick, Draw!
신경망이 학습을 통해 낙서를 인식할 수 있을까요? 내 그림은 얼마나 잘 맞추는지 확인하고, 더 잘 맞출 수 있도록 가르쳐 주세요. 게임을 플레이하기만 하면 됩니다.
quickdraw.withgoogle.com
딥러닝 : 인간의 뇌 신경구조를 모방한 인공 신경망-ANN-을 사용하여 더 복잡하고 추상화된 특징을 학습한다. 딥러닝은 형태가 일정하지 않은 데이터를 대상으로 학습 가능. 머신러닝과 달리, 인간이 데이터 분류 기준을 알려줄 필요가 없고, 데이터의 종류가 음성, 영상, 언어 등의 비정형 데이터이다.
머신러닝의 학습 방법
1. 지도학습 - 분류(스팸인지 아닌지) / 회귀(예측)
2. 비지도학습 - 군집화(기존에 있던 고객들의 특징을 파악해서, 이런 특징을 가지고 있는 고객이 관심을 가질 만한 상품을 보여줌) / 이상탐지(해외에서 로그인된 기록이 있습니다. 보통 쓰던 지역이 아닌 지역에서 결제되었다.)
3. 강화학습 - 사람이 피드백을 (계속 맞았다고 알려)줘서 학습함
cf. 분류 : 이진분류(예/아니오), 다중분류 : 셋 이상으로 분류 (ex. 사과/배/복숭아)
**전처리된 데이터를 Orange3에 가져오는 게 좋다**
데이터 전처리 : 데이터를 머신러닝에 적합한 데이터로 만드는 과정. 보통 exel로 전처리 해서 orange3로 가져오게 된다.
3) 은행 data를 기반으로 고객이 예금을 가입할지 안 할지 예측하기
File icon을 빈 화면에 생성한 후, file data를 불러온다. 이중, 쓰지 않는 독립변수들은 'skip'으로 바꿔놓고, 종속변수인 은행 예금 상품 가입 여부인 y는 'target'으로 바꿔준다(예측변수이므로).
data가 몇 개가 입력됐는지(missing data, 즉 '결측치'는 없는지)를 알아보기 위해 Data Table을 끌어와서 File과 연결해준다.
아래의 우측 그림을 통해 41188개의 data가 있으며, 10개의 독립변수가 있고, 예측변수는 2개의 값을 가진다는 것을 알 수 있다.
data를 전처리하기 위해 Transform 섹션의 Preprocess를 끌어와서 File과 연결해준다. 그다음 결측치를 평균or최빈값으로 바꾸는 대신 Remove rows with missing values('없앤다')로 선택한다. 그리고 data 내에 중복된 값이 있을 수 있으므로, Transform 섹션의 Unique 아이콘을 끌어와서 전처리 아이콘과 연결시켜준다. 그 후, Data Table 아이콘을 새로 만든 후(Data Table (1)) 연결시켜준다.
Uinique는 중복된 값이 있으면 삭제할 수 있게 해주는 기능이다. 모든 열의 중복된 값이 있으면 삭제할 수 있게 도와준다(실수로 중복돼서 들어간 data를 삭제할 때에 유용하다). Data Table(1)을 열어보면 34127개의 data가 있음을 알 수 있다.
인공지능 모델을 만들기 위해서는 데이터를 훈련 데이터(Train Data)와 테스트 데이터(Test Data)로 분류해야한다. Orange3에서는 이 기능을 Transfrom섹션의 'Data Sampler'로 구현할 수 있다. 보통 Train Data:Test Data를 7:3으로 나눈다. 더 작은 양의 데이타는 2:8, 더 큰 데이터는 6:4로 나누기도 한다. 지금 약 30000개는 많은 양의 데이터는 아니어서, 7:3 정도로 나누어 보겠다.
좌측의 그림처럼 Fixed proportion of data를 70%으로 설정해준다. 우측처럼 Unique와 Data Sampler를 직접 연결해주고 Data Table 2개를 생성해서 하나는 'train data', 다른 하나는 'test data'로 이름을 바꿔준다. 이 때 주의할 점이 있다.
Data Sampler와 test data 간의 선(link)를 더블클릭해서 이 링크가 data sampler 하고 남은 데이터(Remaining Data)가 test data로 들어가게 해야한다(30%의 data만 test data로 들어갈 수 있도록).
이제 우리는 train data를 인공지능 모델로 학습시킬 것이다. 이 예시(예금 상품을 가입할지 아닐지)는 분류학습에 해당한다. 분류학습은 기준에 따라 예시(instance)가 어떤 그룹에 속해있는지를 판별하는 학습이다. 이 학습방법에 해당하는 대표적인 모델로는 kNN, Logistic Regression, Tree, Random Forest가 있다. Orange3의 Model 섹션에서 (아래의 그림처럼) 이 네 가지를 흰 바탕에 끌어온다.
이후 각 모델들이 얼마나 학습을 잘 했는지 테스트하려면 Evaluate섹션에서 'Test and Score'을 아래 화면처럼 끌어온다. 그리고 각 선을 연결해준다. 그러면 우리의 인공지능이 각 모델들을 학습한 것이다. 그 다음, test data와 Test and Score도 연결시켜준다. 그러면 test data를 각 인공지능 모델들이 잘 테스트했는지(각 인공지능별 수행 정도)를 볼 수 있게된다.
아래 그림이 그 결과값이다. CA : 정확도. 1을 1이라고 예측하고, 0을 0이라고 예측한 정도를 의미한다. 이 수치를 보면, Logistic Regression이 가장 잘 평가하고 있다는 것을 볼 수 있다.
그 다음으로, Evaluate 섹션에서 Predictions를 끌어와서 검증용 데이터(test data), 그리고 각 모델과 모두 연결시킨다.
이 과정은 점수 말고, 1번 문제는 어떻게 풀었는지, 2번 문제는 어떻게 풀었는지를 보는 과정이다(predictions에 연결). Predictions를 클릭하면 아래와 같은 화면이 뜬다. 각 인공지능 모델들이 실제로 어떤 결정을 내렸는지를 알 수 있다.
만약, 새로운 데이터로 이 고객이 가입할지 안 할지를 알고 싶다면, 다음과 같이 수행하면 된다. Test Data와 Predictions 사이의 링크에 마우스 우클릭을 하여 'Insert Widget'을 클릭한다. 그후 Create Instance를 검색하여 이를 클릭한다.
만들고 싶은 예시를 age부터 정한다. 그리고 맨 마지막에 있는 종속변수 y는 반드시 그 값을 '?'로 설정한다.
그 결과는 다음과 같다. 아래의 그림을 보면 kNN을 제외하고 3개의 인공지능 모델은 no(예금 상품에 가입하지 않을 것이다)로 예측했다.