코테이토를 하면서 또 머신러닝 스터디를 할 줄이야..😳
같이 하자고 연락해준 회장언니에게 고맙구
힘내보자 두두야⭐️
이번에 선정한 교재는 머신러닝 교과서 with 파이썬, 사이킷런, 텐서플로이다.
본 글은 해당 책을 정리한 것으로 모든 저작권은 책의 저자에게 있음을 밝힙니다.
그럼 시작!
머신러닝이란 데이터를 이해하는 알고리즘의 과학이자 애플리케이션이다.
우리는 데이터가 풍부한 시대에 살고 있다.
스스로 학습할 수 있는 머신러닝 알고리즘을 사용하면 이 데이터를 지식으로 바꿀 수 있다.
이 "데이터를 지식으로 바꿀 수 있는 알고리즘"이 내가 처음 인공지능에 관심을 갖게 된 계기 중 하나였다.. 잊고 있었는데 생각남ㅎㅅㅎ
아마도 대부분 데이터와 지식의 차이점은 많이들 들어봤을 것 같다.
그치만 한번 더 짚고 넘어가자면!
데이터
지식
현대 기술 시대에는 정형/비정형 데이터가 풍부하다.
20세기 후반에 데이터에서 지식을 추출하여 예측하는 자기학습 알고리즘과 관련된 인공지능의 하위 분야로 머신러닝이 출현했다.
사람이 수동으로 대량의 데이터를 분석하여 규칙을 유도하고 모델을 만드는 대신,
머신 러닝이 데이터에서 더 효율적으로 지식을 추출하여 예측 모델과 데이터 기반의 의사 결정 성능을 점진적으로 향상시킬 수 있다!
이번 절에서는 지도학습, 비지도학습, 강화학습에 대해 살펴볼 것이다.
다만 책에서는 지도학습 → 강화학습 → 비지도학습 순서지만
필자는 지도학습→ 비지도학습 → 강화학습 순서로 정리했다.
딱히 이유는 없다😁
주요 목적
레이블된 훈련 데이터에서 모델을 학습하여 본 적 없는 미래 데이터에 대해 예측을 만드는 것.
학습 데이터
레이블 되어 있음
즉, 개발자가 문제와 정답 둘 다 알려줌
➡️ 스팸 메일 필터링
학습 데이터셋은 스팸 또는 스팸이 아닌 이메일로 정확하게 표시(라벨링)되어 있음
훈련된 모델은 새로운 이메일이 두 개의 범주 중 어디에 속하는지 예측함
이러한 지도 학습에는 두 가지 하위 카테고리가 있다.
하나씩 살펴보자!
📌 분류
목적은 과거의 관측을 기반으로 새로운 샘플의 범주형 클래스 레이블을 예측하는 것!
클래스 레이블은 이산적(discrete)이고 순서가 없음
위의 스팸 메일 감지는 스팸O, 스팸X 두 가지 레이블만 가진
💡이진 분류(binary classification)이다.
위 그림은 30개의 훈련 샘플 중,
15개는 음성 클래스로 레이블(-) 되어 있고
나머지는 양성 클래스로 레이블(+) 되어 있는 이진 분류 작업의 개념을 보여준다.
각 샘플이 두 개의 x1, x2 값에 연관되어 있으므로 2차원 데이터셋이다.
✅ 지도학습 알고리즘을 사용해 두 클래스를 구분할 수 있는 규칙을 학습한다!
여기서, 규칙 = 결정 경계
새로운 데이터의 x1, x2 값이 들어오면 결정 경계에 따라 두 개 범주 중 하나로 분류함!
💡두개 이상의 클래스 레이블을 가졌다면 다중 분류!
ex) 손글씨 인식 - A, B, C, D .. Z 인식하기!
다음은 회귀!
📌 회귀
예측 변수(predictor variable)=설명 변수(explanatory variable)와
연속적인 반응 변수(response variable)=결과(output)가 주어졌을 때 출력 값을 예측하기 위해서 두 변수 사이의 관계를 찾음!
머신 러닝 분야에서는 예측 변수를 보통 특성(feature), 반응 변수는 타깃(target)이라 부름
- 예시) 학생의 수학 점수 예측!
시험 공부에 투자한 시간과 최종 점수 사이의 관계가 있다면, 두 값으로 훈련 데이터를 만들고 모델을 학습할 수 있음.
이 모델은 시험에 응시하려는 학생들이 공부한 시간을 이용해 시험 점수를 예측하는 것!
💡위의 그림이 선형 회귀!
특성 x와 타겟 y가 주어지면, 데이터 포인트와 직선 사이 거리가 최소가 되는 직선을 그을 수 있다.
(일반적으로 평균 제곱 거리를 사용)
✅ 이렇게 데이터에서 학습한 직선의 기울기와 절편을 사용해 새로운 데이터의 출력 값을 예측한다!
목적
알려진 출력 값이나 보상 함수의 도움을 받지 않고도
의미 있는 정보를 추출하기 위해 데이터 구조를 탐색 할 수 있다!
학습 데이터
레이블되지 않거나 구조를 알 수 없는 데이터
비지도 학습에는 다음과 같이 두가지가 있다.
1. 군집 Clustering
2. 차원 축소Dimensionality reduction
각각에 대해 자세히 살펴보자!
📌 군집
- 사전 정보 없이 쌓여 있는 그룹 정보를
❕의미 있는 서브그룹 or ❕클러스터 로 조직하는 탐색적 데이터 분석 기법
✅ 왜 비지도 분류인가?
분석 과정에서 만든 각 클러스터는 어느 정도 유사성을 공유하고,
다른 클러스터와는 비슷하지 않은 샘플 그룹을 형성한다!
➡️ 마케터가 관심사를 기반으로 고객을 그룹으로 나누어 각가에 맞는 마케팅 프로그램을 개발할 수도 있다!
위 그림은 군집이 어떻게 레이블되지 않는 데이터를 특성 x1과 x2의 유사도를 기반으로 세 개의 개별 그룹으로 조직화 하는지 보여준다
📌 차원축소
- 관련 있는 정보를 대부분 유지하면서 더 작은 차원을 가진 부분 공간(subspace)으로 데이터를 압축한다
➡️ 고차원의 데이터를 다루어야 하는 경우가 흔한데,
‼️ 이럴 때 머신러닝 알고리즘의 계산 성능과 저장 공간의 한계에 맞닥뜨릴 수 있다.
비지도 차원 축소는 잡음(noise)데이터를 제거하기 위해 특성 전처리 단계에서 종종 적용하는 방법이다!
➡️ 데이터 시각화에도 유용하다.
1차원 또는 2차원, 3차원 특성 공간으로 투영하여 3D와 2D 산점도나 히스토그램으로 시각화할 수 있다.
아래의 그림은 비선형 차원 축소를 적용해 3D 스위스롤 모양의 데이터를 2D 특성의 부분 공간으로 압축하는 예이다.
사실 차원 축소는 실습해본 적이 없어서 그런지 아직까지 잘 이해가 되진 않는다.
주요 목적
환경과 상호작용하여 시스템(에이전트_agent) 성능을 향상시키는 것
피드백
보상 함수로 얼마나 행동이 좋은지를 측정한 값
(정답레이블 or 값 X)
❗️지도 학습과 다름
✅ 에이전트는 환경과 상호 작용하여 보상(reward)이 최대화되는 일련의 행동을 강화학습으로 학습함!
➡️ 체스게임
에이전트는 체스 판의 상태=환경에 따라 기물의 이동을 결정!
그렇다면 여기서 보상은?
게임 종료시 승리하거나 패배하는 것!
이 예제를 조금 더 자세히 살펴보자!
➕체스판 위의 특정 상황이 승리로 이어질 가능성이 높은 상태와 연관 될 수 있다. (상대 기물 잡기 or 퀸 잡기 등등..)
➖어떤 위치는 게임에 질 가능성이 높은 상태와 연관 될 수 있다. (다음 차례에 상대한테 기물 잃기 등..)
하지만, 체스 게임에서 보상은 게임이 끝날 때까지 주어지지❌
또한, 최종 보상은 상대의 플레이 방식에 따라 다름.
즉 상대가 퀸을 잃어도 게임에서 이길 수도 있는 것!
✅ 강화 학습은 행동을 수행하고 즉시 얻거나 지연된 피드백을 통해 얻은 전체 보상을 최대화 하는 일련의 행동을 학습한다.