정말 쉬운 코딩 강의를 만들었습니다. (머신러닝)

정말 쉬운 코딩 강의를 만들었습니다. (머신러닝)

안녕하세요!

새로운 파이썬 강의를 만들게 되어서 글을 쓰게 되었습니다.

이번 강의 주제는 인공지능 중에서도 '머신러닝' 이라는 건데요.

앞서 공부하신 분들의 반응이 다행히 현재까지는 괜찮은 것 같아서 자신 있게 소개 드립니다 ㅎ

 

머신러닝 궁금하신 분들은 한 번쯤 보시면 개념 이해에 도움되실거에요 ^^16593357432594.webp

 

 

 

머신러닝은 인공지능의 한 분야로 우리 말로는 기계학습이라고 하는데요. 일반적으로 프로그래밍을 할 때는 어떤 규칙이 있는 함수를 만들어서 입력값을 넣으면 함수 내의 동작을 통해 출력값을 얻게 됩니다.

 

16593357432977.webp

 

이 함수에는 5 를 입력으로 받으면 15 를 출력하게 되지요.

 



반면에 머신러닝은 양질의 데이터를 주면 그 데이터를 가지고 스스로 학습을 해서 '모델'이라는 것을 만드는데요. 이 모델을 이용하면 새로운 입력값이 들어왔을 때 출력값을 예측하는 식으로, 그러니까 함수를 직접 만드는 거라고 이해하시면 됩니다.

 

16593357433335.webp

 

 

 여기에 이런 점들이 뿌려져 있습니다.

 

16593357433741.webp

 

이 때 이 점들을 가장 잘 표현하는 직선을 딱 하나 찾으라면 무엇일까요?

 

16593357434119.webp

 

 

그렇죠! 바로 3번입니다. 왜 그렇게 생각하셨나요?

 

16593357434529.webp

 

 

그렇습니다. 딱 봐도 그냥 그렇게 보이죠?

 




우리는 방금 기계가 스스로 학습을 통해 모델을 만드는 과정을 경험했습니다. (언제??)


이러한 모델 (여기서는 직선) 이 만들어지고 나면 이제 '예측'이란 걸 해볼 수가 있습니다.

 

16593357434887.webp

 

 

이 그래프가 캐럿에 따른 다이아몬드의 가격 데이터이고 x 축이 캐럿, y 축이 가격이라고 하면, 새로운 1.7 캐럿 다이아몬드가 있을 때 대략 얼마 정도의 가격일지를 가늠해볼 수 있는거죠.



이와 같이 연속적인 숫자 데이터를 통해 예측을 하는 것을 '회귀 모델' 이라고 합니다.



회귀 모델은 경우에 따라 더 복잡해질 수도 있어요. 가령 공부 시간에 따른 시험 점수를 예측하려고 한다면, 당연히 공부를 많이 하면 시험 점수가 올라가겠지만 점수에 영향을 끼치는 게 꼭 공부 시간 하나만 있는건 아니겠죠? 친구랑 놀기도 해야 되고, 수업시간에도 선생님 말씀 열심히 들어야 되고, 시험 전날에 잠도 푹 자야되고, 잠자기 전에 게임도 한 판 해야 되고 ...

 

16593357435479.webp

 

 

이렇게 시험 점수라는 결과에 영향을 미치는 요소들을 '독립 변수' 라고 하며, 그 때의 결과를 '종속 변수' 라고 합니다. 캐럿에 따른 다이아몬드의 가격은 캐럿이 유일한 독립 변수였지만 시험 점수에 영향을 미치는 독립 변수는 여러개가 있을 수 있지요. 그리고 독립 변수가 많아지면 조금 더 복잡한 형태의 ‘다중 선형 회귀’ 모델이 필요해집니다. 그냥, 이렇게 차원이 늘어나면서 그래프가 조금 복잡해진다고 생각하시면 됩니다.

 

16593357435935.webp

 

 

 

 

 그리고 지금같은 여름철에는 오래동안 에어컨을 사용하기가 무서워지는데요. 가정용 전기에는 누진 구간이 있어서 조금 사용하다 보면 전기료가 확 뛰고, 또 사용하다 보면 뛰고, 그러다보면 수십만원을 훌쩍 넘는 경우도 생기지요. 누진 구간에 따라 막막 증가하는 데이터처럼, x 의 변화에 따라 y 가 급격히 증가하거나 왔다갔다 하는 등의 경우라면 직선 하나만으로 표현하기에는 다소 무리가 있습니다. 이 때는 '다항 회귀' 모델을 이용해볼 수 있어요.

 

16593357436305.webp

 

 

 파란색 점들의 데이터를 표현하기 위한 2개의 모델이 있을 때, 직선의 하늘색 보다는 곡선 형태의 주황색이 훨씬 낫지요!

 



그런데 이런 예측 모델들을 만들었을 때 정말 이게 잘 예측을 하는지는 어떻게 장담할 수 있을까요? 공부 시간에 따른 시험 점수 모델이 만들어져서 '응 너 이번에 4시간만 공부하면 100점 받겠더라' 라고 했는데 막상 시험을 쳐보니 50점만 나온다면 속상하겠지요?

 

16593357436822.webp

 

 

그래서 모델을 만들고 나면 이 모델의 성능이 얼마나 좋은지 평가를 해야 합니다. 그렇게 하기 위해서 데이터 세트 전체를 둘로 나눠서 하나는 훈련용으로, 하나는 테스트용으로 쓰는데, 보통 80:20 의 비율로 나눠서 훈련용 세트로만 학습을 시킨 다음에 모델이 괜찮은지를 테스트 세트로 검증을 해봅니다. 그리고 경우에 따라 세트를 막 섞어가면서 교차로 검증을 하기도 하지요.



이 과정에서 훈련 세트에 대해서는 정말 잘 예측을 하는데 테스트 세트에 대해서는 형편 없는 예측을 하는 것을 '과대적합' 이라고 하며, 훈련 세트조차 예측을 잘 못하는 경우를 '과소적합' 이라고 합니다. 결국 모델을 만들 때 과대적합 또는 과소적합이 발생하지 않도록 하는 게 중요하지요.

 

 

대략 할머니 데이터에 과대적합된 꼬마

 

 

뭔가 보긴 했는데 2% 부족한 꼬마

 




이런 연속적인 데이터 말고 범주형 데이터라고 하는 것도 있습니다. '회귀' 가 아니라 '분류' 에 해당하는 내용인데요. 공부 시간에 따른 시험 점수가 아니라, 이번에는 자격증 시험으로 바꿔서 '합격/불합격' 으로 나뉘는 것으로 보시면 됩니다. 그래서 2시간, 4시간 공부했을 때는 불합격, 6시간, 8시간 공부했을 때는 합격했다는 데이터가 있을 때 7시간을 공부하면 합격일까 ?불합격일까? 를 나누게 되는 거지요.

 

(공무원 시험 합격 후 설날의 모습이래요 ㅋㅋ)

 



머신러닝에서 대표적인 분류 알고리즘은 '로지스틱 회귀' 입니다. 이름은 회귀이지만 실제로는 분류를 위해 사용되는 모델이며, 예를 들어 어떤 환자의 몸에 종양이 있을 때 그 환자의 나이와 종양의 크기 등을 미루어봤을 때 이 종양이 악성인지 아닌지를 판단할 수 있게 됩니다. 그런데 의사 선생님이 '당신은 암이에요' 라고 했다가 정밀 검사를 해보니 암이 아닌 경우와, '당신은 암이 아니에요' 라고 했다가 암으로 드러나는 경우가 있을 때, 전자가 결과적으로는 훨씬 낫겠지요? 그래서 분류 모델은 필요에 따라 기준을 조금 조정하기도 합니다. 즉 모델에서는 '너 4시간 공부하면 합격하겠더라' 라고 나온다고 해도 보수적으로 접근해서 '너 6시간은 공부해야겠더라' 라고 말을 하는거죠.




지금까지 설명된 내용은 머신러닝 중에서 '지도학습'에 해당하는 부분이었습니다. 지도학습은 정답을 알려주면서 학습시키는 걸 말합니다. 그러니까 '2시간 공부하면 20점, 4시간 공부하면 40점, 6시간 공부하면 60점' 과 답을 알려주고 나서 학습을 시키는 방법이지요.




반면에 머신러닝에는 정답을 알려주지 않는 '비지도 학습' 이란 것도 있습니다. 

비지도 학습은 기계가 스스로 데이터 내에서 유의미한 패턴이나 구조를 찾아내는 건데, 이런 유사한 패턴을 가지는 데이터들끼리 무리를 지어주는 군집화라는 게 있습니다. 하루에도 수없이 쏟아져나오는 뉴스 기사들을 과학/기술, 스포츠, 건강 등의 카테고리로 나눠주는 것도 군집화의 한 가지 예시입니다.



군집화의 대표적인 알고리즘으로 'K-평균'이라는 게 있는데요. 

여러분이 과수원에서 처음으로 사과를 따서 상품으로 판매하기 위해 나눈다고 할 때, 어떻게 나누면 가장 좋을까요? 그냥 크기에 따라 큰 것과 작은 것, 이렇게 둘로 나눌 수도 있고 대/중/소 3개의 분류로, 또는 예쁜 것과 못난 것으로 나누어서 못난 것들은 싸게 파는 식으로 할 수도 있을 거에요.

 

16593357437287.webp

 

 

이 때 '몇 개의 그룹' 에 해당하는 게 바로 K 인데요. 사과가 아닌, 굉장히 복잡하고 많은 양의 데이터를 군집화한다면 '몇 개' 를 정하는 게 아주 어려워질 수 있어요. 다행히 최적의 K 를 찾기 위해 참고할 만한 방법이 있습니다. 팔꿈치 모양을 닮아서 엘보우 방법이라 불리는 것인데, 간단히 설명드리면 K 의 변화에 따른 각 데이터들로부터 각 클러스터 (그룹) 의 중심점까지의 거리 평균을 계산해서, 그래프 상에서 경사가 완만해지기 시작하는 그 시점을 K 로 보는 것입니다.

 


16593357437674.webp

 

 

 

이렇게 K 가 정해지면 우리는 아무렇게나 흩어져 있는 데이터로부터 아래와 같이 K 개의 클러스터 (그룹)로 나눠진 결과를 얻을 수 있게 되지요. 이 예시가 시험 공부 시간에 따른 점수라고 한다면 각 그룹에 있는 친구들에게 서로 다른 공부 전략을 제공해줄 수도 있겠구요.

 

16593357438195.webp

 

위에서 다룬 머신러닝의 기본적인 내용들은 자세한 이론 설명과 실습을 통해 공부하게 되구요. 

 

끝나면 퀴즈를 통해서 지금까지 배운 내용을 복습합니다.



퀴즈에서는 데이터 세트만 달랑 주어지고 그 데이터를 가지고 해야 하는 7가지 작은 미션들이 있는데요. 기본 내용을 잘 공부하셨다면 충분히 소화해내실 수 있습니다. 그리고 퀴즈를 스스로 풀 수 있다는 말은, 여러분이 스스로 데이터 분리, 훈련 세트를 통한 학습, 데이터 시각화, 평가 및 예측까지 할 수 있게 된다는 의미에요. 

굉장하죠?





퀴즈를 풀고 나면 이제 뭔가 써먹어봐야겠죠!


다른 모든 활용편 강의들도 그랬듯이, 머신러닝 편에서도 프로젝트를 진행합니다. 프로젝트 주제는 '영화 추천 시스템' 인데요. 약 5,000 개의 영화 관련 데이터 세트를 가지고 분석 및 학습을 통해 추천 영화 10개를 뽑는 내용을 공부합니다. 추천의 방법에도 몇 가지가 있는데, 간단히 다음 3개에 대해서 공부해봅니다.


1. 많은 사람들이 좋아하는 영화 추천

2. 어떤 특정 영화와 아주 비슷한 영화 추천

3. 개인의 영화 취향에 따른 맞춤형 추천


이 과정에서 텍스트 분석 방법에 대해서도 어느 정도 배우게 될 거구요.


그리고 코드만 보면 지겨우니까 streamlit 이라고 하는, 몇 줄 안되는 코드로 예쁜 웹페이지를 만들 수 있는 패키지를 통해 영화 추천 시스템 사이트를 직접 만들어봅니다.


여기에서는 어떤 영화를 선택하면 그 영화의 장르, 감독, 출연 배우 등의 정보를 토대로 추천 영화 10개를 뽑아서 한국어로 된 포스터 이미지를 짠~ 하고 보여준답니다. 그럴듯하죠?

 

 

 특히 마지막의 개인 영화 취향에 따른 맞춤형 추천은 Surprise 라는 패키지를 이용하는데, 지금까지 쌓인 판매 이력 데이터를 통해서 어떤 고객에게 어떤 상품을 추천하면 좋을지, 어떤 물건들을 세트로 판매하면 더 잘 팔릴지 등에 대한 전략을 세우는데 어쩌면 큰 도움이 될 수도 있을거라 생각합니다.

 

 

 

 

 

 

이 강의는 파이썬 기본 문법은 모두 알고 계시다는 가정 하에 진행하므로 ,파이썬을 처음 접하시는 분이라면 아래 기본편 강의를 먼저 공부하시길 권해드립니다. 그리고 주피터 노트북이라는 환경에서 진행되므로 아나콘다 - 주피터 노트북의 사용법도 알아두시면 더욱 좋습니다.

 

 

 

 

본문에 소개 드린 머신러닝 강의는 이 영상입니다. 총 7시간이 조금 안되는 분량이구요. 

 

실습과 병행 하신다면 아마 1-2 주 정도면 완강 가능할거라 봅니다.

 

 

 

상대적으로 짧은 시간에 쉬운 예제로 핵심만 쏙 뽑으려고 노력을 많이 했습니다. 

 

머신러닝을 처음으로 공부하고자 하시는 분들께 도움 되었으면 하는 바람입니다.


긴 글 읽어주셔서 감사합니다. ^^

16593357439977.com

16593357441589.com

16593357443285.com

16593357444957.com

실시간 인기글
노사연이 못 먹는다는 것
종저택은 애초에 길용이 처음부터 안 좋아하더만
호불호 갈리는 컵라면 레시피
우유 ㅋㅋㅋ
PC방 게임점유율 순위 (최신판)
넷플릭스 '스파이더맨 노웨이홈' 이번 달 공개
몸매까지 보면 얘가 장원영보다 훨 낫지 ㄹㅇ
사장님 여기 냉면좀 주세요~

댓글

번호 제목 날짜 조회
93987 "시장이 반찬이다" 뜻 몰라서 논란중인 미주 12:26 38177
93986 금토드라마 이번주 시청자 수 12:25 32389
93985 역시 서울에서 제일 살기좋은 동네는 방배동 12:25 35826
93984 8월 기준 국내 OTT 서비스 사용자 순위 12:24 36420
93983 핫팬츠 입은 지수 각선미 ㅗㅜㅑ 12:23 38304
93982 대한민국 고등학생 전국구 레벨 가능요? 12:23 34749
93981 개봉도 하기도 전에 망한영화.jpg 12:11 32008
93980 와.. 이렇게 예쁜 아나운서가 있었네 12:01 31789
93979 끝말잇기 할 줄 모르는 김동현 12:01 36724
93978 뭉찬에서 박지성이 보여준 골키퍼 실력 11:58 35694
93977 일본 드라마 현지화 수준 ㄷㄷ 11:50 34520
93976 르세라핌에서 ㅈㄴ 예쁜 2명 11:49 32671
93975 임창정이 만든 걸그룹으로 드립치는 김구라 11:48 31034
93974 친구새끼때문에 진짜 화가안풀린다 12:21 38279
93973 자기 목소리 녹음하고 처음 들었을때 12:20 34365
93972 쌀값 폭락인데 햇반은 가격올림 12:20 34266
93971 2022년 미스춘향 결과.jpg 12:19 39391
93970 아파트 급매한 사람때문에 빡친 주민 12:18 35272
93969 야간 행군중 먹는 컵라면.gif 12:17 34124
93968 성별마다 극혐하는 패션 대참사 12:16 34012
93967 진짜 밥에 미쳐버린 나라 11:56 37963
93966 물 찬 주차장... "엄마 사랑해" 아들 목소리도 잠겼다 11:55 38720
93965 붉은사막, 도깨비 추후 모바일로도 출시예정 11:54 35656
93964 연애가 끝났다는 기분을 느끼는 순간 11:53 34714
93963 오늘 패션계에서 진짜난리난 보테가베네타 패션쇼 11:51 32918
93962 연애가 끝났다는 느낌을 받을때.jpg 12:30 198
93961 통장팔아서 감옥가게된 판녀 12:13 21108
93960 위클리 지한 09.25 28914
93959 에미상 찢어버린 오일남 할아버지 09.17 831
93958 일본순사가 되어 덕수궁을 걸어보아요 12:31 2171
93957 일침 날리는 6억 체납자 11:46 38558
93956 나는솔로 10기 최고의 미녀 10:56 31667
93955 19군번 이후로는 멸공의 횃불을 안배운다는 제보 11:45 35035
93954 오늘자 바둑세계대회 결승올라간 여자 10:49 38877
93953 상남자의 주말 11:30 158
93952 르세라핌 채원 카즈하 09.24 25664
93951 연대 응원가 부르는 김채원 09.25 29526
93950 09.24 21518
93949 최초 공개된 북한 김정은 딸 얼굴 08:17 21319
93948 尹대통령 미국 시스템 받아들이는 것 국익에 도움 10:52 24468