[머신러닝] 머신 러닝의 이해와 개념

2024. 9. 26. 21:27·Dev/머신러닝

머신러닝에 대한 이해

 

인간의 경험 = 머신의 데이터

데이터로 학습을 해서

 

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
'Dev/머신러닝' 카테고리의 다른 글
  • [머신러닝] 성능 평가
  • [머신러닝] Scikit-Learn 모델링 코드 구조 및 과정
#코딩 공부
#코딩 공부
tildacoding 코딩 공부
  • #코딩 공부
    tildacoding
    #코딩 공부
  • 전체
    오늘
    어제
  • 글쓰기 관리자
  • Personal

    • 홈
    • 태그
    • 방명록
  • link

    • GITHUB
    • 분류 전체보기 (51)
      • Dev (12)
        • python (0)
        • 웹크롤링 (2)
        • 머신러닝 (3)
        • 딥러닝 (4)
        • 언어지능 딥러닝 (2)
        • SQL (1)
        • Spring (0)
      • 코딩테스트 (16)
        • 백준 (3)
        • 프로그래머스 (7)
        • 기타 문제 (2)
        • 코딩테스트를 위한 정리 (4)
      • Study (4)
        • 알고리즘 (2)
        • 자료구조 (2)
      • 대외활동 (18)
        • 에이블스쿨 (18)
        • 공모전 (0)
  • 공지사항

    • 루틴 skrrrrr
  • 인기 글

  • 태그

  • 최근 댓글

  • hELLO· Designed By정상우.v4.10.0
#코딩 공부
[머신러닝] 머신 러닝의 이해와 개념
상단으로

티스토리툴바