Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
31 |
Tags
- join
- ASAC
- 파이썬
- DFS
- cnn optuna
- YouTube
- sql eda
- 백준
- ASAC5기
- pandas
- JSON
- 머신러닝
- 프로그래머스
- 크롤링
- text summarization
- Python
- BFS
- CCP자격증
- selenium
- 파이썬 이미지 처리
- ML
- Machine learning
- 뷰티 광고
- deep learning
- Crawling
- EDA
- Shorts
- 데이터분석
- ASAC14일차
- SQL
Archives
- Today
- Total
낼름낼름 동동이
[ASAC 26일차] Machine learning 이론 본문
4월 30일의 기록
머신 러닝을 하는 이유에 대해서 우선적으로 이해하면서 이론적인 공부를 하니 왜 이렇게 해야하는지, 수학적인 관점에서 왜 이런 계산식을 쓰는지 더 명확해진다. 내가 이해한 흐름대로 최대한 블로그를 쓰면서 제대로 이해했는지 검증해야겠다.
목차
- 수, 벡터, 행렬, 텐서(3차원 이상)
- 데이터의 분리
- Learning이란?
- Learning : Parameter Estimation
- 모델 평가 방법
수, 벡터, 행렬, 텐서
- 수(Scalar) : 0차원
- 벡터(Vector) : 1차원
- 행렬(Matrix) : 2차원 행렬
- 텐서(Tensor): 3차원 이상의 값
머신러닝에서는 기본적으로 2차원의 행렬(Matrix)을 사용하게 된다.
- 1개의 sample data → 여러 개의 측정값 → 여러 개의 값을 모아두는 Vector 표현
- N개의 sample data → 여러 개의 측정값을 가진 데이터가 여러 개 → 2차원의 Matrix로 표현
데이터의 분리
- X : 독립 변수, 예측 변수, 입력(Input) 변수라고 부른다.
- Y : 종속 변수, 반응 변수, 출력(Output) 변수라고 부른다.
- f(x) : 모델, 예측 함수를 의미한다. 즉, X값을 넣었을 때 Y값이 무엇인지 예측, 정의 하기 위한 머신러닝 함수를 의미
- Training Data : 모델 f(x) 구축 시 사용되는 데이터
- Testing Data : 구축된 모델을 검증하는데 사용되는 데이터
데이터 셋 분리 방법
일반적으로 데이터 셋은 이렇게 분리 한다.
- Training : 모델을 학습하기 위한 데이터
- Validation : 추정한 모형이 적합한지 확인하기 위한 데이터
- Test: 모델의 예측도가 얼마나 정확한지 평가하기 위한 데이터
다음으로 수집한 데이터 셋을 구분하는 비율을 결정한다.
- Overfitting(과적합)을 피하기 위해 Training/Validation/Test를 5:3:2정도로 나누어서 사용을 한다.
여기서 모델 및 결론이 잘 나오려면 중요한 점
- 절대적인 데이터의 수가 많아야 한다.
- 데이터와 모델에 따라서 Training/Validation/Test
Learning 이란?
- 간단하게 바라보면 함수를 예측하는 과정이라고 말할 수 있다.
- x값과 y값(주어진 데이터) 만 알고 있고 이를 통해 실제 파라미터는 무엇인지 관측하는 것이 머신러닝에 있어서 중요한 문제이다.
- 즉, 러닝이란 x값과 y값을 보면서 둘의 관계를 설명하는 함수를 만들어 내는 과정이다.
- 현실에서도 1개의 변수만 있다면 영향을 주는 파라미터를 결정하기 쉽지만 우리가 하는 모든 예측에는 변수가 많을 수 밖에 없다.
- 위 이미지처럼 파라미터가 2개 이상이 되면 w1과 w2는 서로의 값에 따라 y 값이 달라지는 것을 알 수 있다.
- 우리가 선택한 모델에 따라 각 파라미터를 결정되기 때문에 모델을 바꿔가며 더 설명이 잘되는 모델을 선택해야 한다.
모델을 업데이트하는 프로세스
- x값을 모델에 넣었을 때 적절한 y값을 예측
- 실제 결과값을 손실함수에 넣었을 때의 에러값을 확인하며 업데이트 한다.
Learning : Parameter Estimation(파라미터 예측)
그렇다면 어떻게 파라미터를 최적화 할 수 있을까?
우선, 실제값과 예측값의 차이가 가장 작은 것을 목표로 해야 한다.
예측 값은 각 변수에 따른 파라미터에 따라 결정되며 실제 값과 예측값의 차이를 모두 더했을 때 그 값이 얼마인지 확인이 필요하다.
그러기 위해 표준 편차를 알아보자.
실제값과 예측값의 차이를 어떻게 최소화 할까
개별 데이터의 에러(실제값과 예측값 차이)를 계산하고 그 에러를 모두 더해야 한다.
단, 실제 편차는 음수값도 존재할 수 있으므로 이를 제곱하여 모두 양수로 만들어서 더해준다.
위에서 구한 값을 최소화 하는 W1, W2를 찾는 것을 목표로 해야 한다.
즉, 예측의 에러를 최소화 할 수 있도록 함수를 여러가지 모델로 돌려 보면서 잘 맞는 F의 모양을 선택해본다.
- F의 모양은 내가 수집한 데이터에 종속되며,
- 최신 연구 동향을 추가로 함께 보는 것이 중요하다.
전통적인 머신 러닝의 한계점
- 단, 우리가 예측한 값은 X와 Y라는 2차원의 선형 관계에서만 동작하는 것을 알 수 있다.
- 현실에서의 문제는 3차원 이상의 문제로 넘어갈 때가 많다.
- 이러한 한계점으로 인해 3차원 이상의 비선형 함수를 최적화(Deep Learning) 하는 것이 필요해졌다고 할 수 있다.
'데이터분석' 카테고리의 다른 글
[ASAC 29일차] KNN 모델 (0) | 2024.05.07 |
---|