다시 이장래 강사님이 오셨습니다!!
🤔무조건 많은 양을 학습시키는 게 좋은 걸까?
아니요
일정양을 벗어나면 의미가 없습니다.
🤖머신러닝 분류
1️⃣학습 방법에 따른 분류
지도 학습 (Supervised Learning) |
학습 대상이 되는 데이터에 정답을 주어 규칙성, 즉 데이터 의 패턴을 배우게 하는 학습 방법 |
비지도 학습 (Unsupervised Learning) |
정답이 없는 데이터 만으로 배우게 하는 학습 방법 |
강화 학습 (Reinforcement Learning) |
선택한 결과에 대해 보상을 받아 행동을 개선하면서 배우게 하는 학습 방법 |
2️⃣과제에 따른 분류
분류 문제 (Classification) |
이미 적절히 분류된 데이터를 학습하여 분류 규칙을 찾고, 그 규칙을 기반으로 새롭게 주어진 데이터를 적절히 분류하는 것 을 목적으로 함(지도 학습) |
회귀 문제 (Regression) |
이미 결과값이 있는 데이터를 학습하여 입력 값과 결과 값의 연관성을 찾고, 그 연관성을 기반으로 새롭게 주어진 데이터에 대한 값을 예측하는 것을 목적으로 함(지도 학습) |
클러스터링 (Clustering) |
주어진 데이터를 학습하여 적절한 분류 규칙을 찾아 데이터를 분류함을 목적으로 함. 정답이 없으니 성능을 평가 하기 어려움 (비지도 학습) |
에이블스쿨에서는 지도 학습에 대해 배우고, 분류와 회귀 문제를 다룹니다.
⭐분류와 회귀
분류 |
설명 |
정답 |
분류(Classification) |
범주형 (ex. 20시간 공부히면 합격, 14시간 공부하면 불합격, 10시간 공부하면 ?) |
0과1 |
회귀(Regression) |
연속적인 숫자를 예측 (ex. 20시간 공부하면 90점, 14시간 공부하면 70점, 10시간 공부하면 ?점) |
비슷한 값 |
문제가 다르면, 다른 알고리즘과 평가 방법을 선택해야 합니다
모델(Model)
패턴을 찾아 수학식으로 정리해 놓은 것
모델링(Modeling) : 오차가 적은 모델을 만드는 과정
모델의 목적 : 샘플을 가지고 전체를 추정
독립변수, 종속변수
x = 독립변수
y= 종속변수
오차(Error)
실제값(관측값)과 모델의 차이
실제값 ~ 평균값 사이(오차를 평균값보다 줄이는 게 회귀모델의 목적)
과대적합 vs 과소적합
과대적합 (Overfitting) |
학습데이터가 너무 적어 공부량이 부족하다 |
과소적합 (Underfitting) |
학습데이터를 너무많이 공부시켰다 실전에선 성능이 바닥친다 |
설명과 예측에따라
알고리즘이 바뀌는데
예측이 높은것은 설명하지 못하는 알고리즘이 많고
설명이 높은 것은 예측정확도가 떨어지는 것이 많다
이에 적당한 알고리즘선택을 잘하기위해 목적성이 설명인지 예측인지 명확히 하고 다음단계로 진행하자
모델링 코드 구조
Scikit-Learn
# 1단계: 불러오기
from sklearn.linear_model import LinearRegression
from sklearn.metrics import mean_absolute_error
# 2단계: 선언하기
model = LinearRegression()
# 3단계: 학습하기
model.fit(x_train, y_train)
# 4단계: 예측하기
y_pred = model.predict(x_test)
# 5단계: 평가하기
print(mean_absolute_error(y_test, y_pred))
분류
from sklearn.neighbors import KNeighborsClassifier
from sklearn.metrics import accuracy_score
회귀
from sklearn.linear_model import LinearRegression
from sklearn.metrics import mean_absolute_error
성능을 결정 짓는건 데이터의 양이 아니라 적절한 파라미터다
어떻게 평가할 것인가?
정확도를 높이고, 오차를 줄여라!