머신러닝에 대한 이해
인간의 경험 = 머신의 데이터
데이터로 학습을 해서
1. 학습에 따른 분류
2. 과제에 따른 분류
1) 지도 학습
a) 분류 문제 (Classification)
: 이미 분류된 데이터를 학습하여 분류 규칙을 찾음. 그 규칙 기반으로 새로운 데이터를 적절히 분류하는 것
b) 회귀 문제 (Regression)
: 이미 결과값이 있는 데이터를 학습하여 입력 값과 결과 값의 연관성을 찾음. 그 연관성 기반으로 새로운 데이터 값을
예측하는 것
**혼동하지 않게 주의!!!!**
2)비지도 학습
c) 클러스터링
: 주어진 데이터를 학습하여 적절한 분류 규칙을 찾아 데이터 분류 하는 것. 정답이 없어 성능 평가 어려움.
분류와 회귀 구분법
**원하는 결과 값(target)이 분류인지 회귀인지 구분하는 것이 중요! -> 알고리즘과 평가를 위한 함수가 달라짐
** 문제 유형 판단 -> 알고리즘/ 평가방법 선택 -> 관련 함수 사용해 모델링
분류 | 회귀 | |
정의 | 연속적인 숫자 예측 | 범주 값 예측 |
구분 방법 | - A인지 B인지 | - 두 값 사이에 중간 값이 의미가 있는 숫자 - 두 값에 대한 연산 결과가 의미 있음 |
알고리즘 함수 | - DecisionTreeClassifier - KNeighborsClassifier - LogisticRegression - RandomForestClassifier - XGBClassifier |
- LinearRegression - KNeighborsRegressor - DecisionTreeRegressor - RandomForestRegressor - XGBRegressor |
평가방법 함수 | - accuracy_score - recall_score - precision_score - classification_report - confusion_matrix |
- mean_absolute_error - mean_squared_error - root mean_squared_error - mean_absoulute_percentage_error - r2_score |
용어 정리
1. 모델 / 모델링
- 모델 : 데이터에서 패턴을 찾아 수학식으로 정리해 놓은 것
- 모델링 : 오차가 적은 모델을 만드는 과정
- 목적 : 샘플(표본, 부분집합,일부, 과거의 데이터)을 가지고 전체(모집단,전체집단, 현재와 미래의 데이터)를
추정(예측,추론)
2. 행,열
*초록색 : 행 / 빨간색 : 열
- 행(Row): 개체, 관측치, 기록, 사례, 경우
- 열(Column) : 특성, 속성, 변수, 필드
3. 독립변수, 종속변수
- 독립변수 : x , 독립적으로 변할 수 있음 / 원인
- 종속변수 : y, 종속적으로 변할 수 있음 / 결과
4.오차
- 오차 : 관측값(=실젯값)과 모델 예측갑의 차이 -> 이탈도(Deviance)
- 분류에서 : 최빈값이라는 모델보다 더 정확하게 맞추고 싶음
- 회귀에서 : 평균이라는 모델보다 더 가까이 맞추고 싶음
5. 데이터 분리
- 데이터 셋을 학습용/검증용/평가용 데이터로 분리
- 평가용 데이터는 한번!
1) x, y 분리
- target 변수를 명확히 지정, 이외의 변수는 x로 선언 -> df
- tager 변수 데이터 y로 선언 -> 시리즈
# target 확인
target = 'Ozone'
# 데이터 분리
x= data.drop(columns=target) #inplace = false가 기본값임 -> 결과값만 반환되고 데이터로 받지 않음
#우리의 목표는 데이터를 변경시키는 것이 아니라 x만 결과값을 가르키게 하는 것
#x=data.drop(target,axis=1)
y= data['Ozone']
#y= data.loc[:,target] 생략하지 않고 쓰는 법
2) 학습용 , 평가용 데이터 분리
- 적절한 비율로 분리
- 반복 실행시 동일한 결과를 얻기 위해 random_state 옵션을 지정
# 모듈 불러오기
from sklearn.model_selection import train_test_split
# 7:3으로 분리
x_train,x_test,y_train,y_test=train_test_split(x,y,test_size=0.3)
#x_train과 행수가 같은건 y_train
#train_test_split 은 랜덤하게 데이터를 섞고 자르는거임 - > 그래서 결과가 다 다름
#같은 평가 데이터로 보려면 randaom_state 사용해서 같은 숫자를 주면 됨
# x_train,x_test,y_train,y_test=train_test_split(x,y,test_size=0.3,random_state=1)
6. 과대적합 vs 과소적합
1) 과대적합 (Overfitting)
- 학습 데이터에 대해선 성능이 좋으나 평가데이터에 대해선 성능이 좋지 않은 경우
- 학습 데이터에 대해서만 잘 맞는 모델 -> 실전에서 예측 성능 꽝
2) 과소적합 (Underfitting)
- 학습 데이터보다 평가 데이터에 대한 성능이 좋거나, 모든 데이터에 대한 성능이 매우 안좋은 경우
- 모델이 단순해 학습데이터에 대해 적절히 훈련되지 않은 경우
'Dev > 머신러닝' 카테고리의 다른 글
[머신러닝] 성능 평가 (0) | 2024.10.04 |
---|---|
[머신러닝] Scikit-Learn 모델링 코드 구조 및 과정 (1) | 2024.09.26 |