No sweet without sweat

[Machine Learning] - 이론 정리 본문

Machine Learning

[Machine Learning] - 이론 정리

Remi 2022. 9. 3. 01:24
728x90
반응형

머신러닝 종류

1. 지도학습(Supervised Learning) : 정답이 있음

1) 데이터에 대한 Label(명시적인 답)이 주어진 상태에서 컴퓨터를 학습시키는 방법

2) 사람이 직접 개입하기 때문에 정확도가 높은 데이터 사용가능

3) 사람이 직접 Label을 달아야 하므로 구할 수 있는 데이터의 한계가 있음

4) 분류(Classification)와 회귀(Regression)으로 나누어진다.

- 스팸 메일 분류, 집 가격 예측

 

*분류

- 미리 정의된 여러 클래스 레이블 중 하나를 예측( 정답의 종류가 정해져 있음)

- 속성 값을 입력, 클래스 값을 출력(정답을 예측)하는 모델

- 붓꽃(iris)의 세 품종 주 하나로 분류, 암 분류, 이진분류, 다중 분류 등이 있다.

(정답 -> 레이블, 정답의 종류- > class)

 

* 회귀 - 정답의 개수가 미정(집값)

- 연속적인 숫자를 예측하는 것

- 속성 값을 입력, 연속적인 실수 값을 출력하는 모델

- 어떤 사람의 교육수준, 나이, 주거지를 바탕으로 연간 소득 예측

- 예측 값의 미묘한 차이가 크게 중요하지 않다.

 

2. 비지도학습(Unsupervise Learning) : 정답이 없음, 정답을 찾지않음 대신 유사점, 특징을 찾음

 

- 데이터에 대한 Label(명시적인 답)이 업슨 상태에서 컴퓨터를 학습시키는 방법

- 데이터의 숨겨진 특성, 구조, 패턴을 파악하는데 사용

- 데이터를 비슷한 특성끼리 묶는 클러스터링(Clustering)과 차원축소(Dimensionality Reduction)등이 잇다.

 

강화학습( Reinforcement learning) :게임

1) 지도학습과 비슷하지만 완전한 답(Label)을 제공하지 않는 특징이 있다.

2) 기계는 더 많은 보상을 얻을 수 있는 방향으로 행동을 학습

3) 주로 게임이나 로봇을 학습시키는데 많이 사용

 

머신러닝(Machine Learning)이 유용한 분야

- 기존 솔루션으로는 많은 수동 좆어과 규칙이 필요한 문제

- 전통적인 방식으로는 전혀 해결 방법이 없는 복잡한 문제

- 새로운 데이터에 적응해야하는 유동적인 환경

- 대량의 데이터에서 통찰을 얻어야 하는 문제

 

 

 

[1] 머신러닝 과정 

1. Problem Identification(문제 정의)

- 비즈니스 목적 정의(모델을 어떻게 사용해 이익을 얻을까?

- 현재 솔루션의 구성 파악

- 지도 vs 비지도 vs 강화

- 분류 vs회귀

 

2. Data Collect(데이터수집)

- File (CSV,XML,JSON)

- Database

- Web Crawler(뉴스, sns, 블로그)

- IOT 센서를 통한 수집

- Survey

 

3. Data Preprocessing(데이터 전처리)

- 결측치, 이상치 처리

- Feature Engineering (특성공학)

: Scaling(단위 변환)

: Transfrom(새로운 속성 추출)

: Encoding(범주형 ->수치형)

: Binning(수치형 -> 범주형)

 

4. EDA(탐색적 데이터분석)

- 기술통계, 변수간 상관관계

- 시각화

: pandas, matplotlib, seaborn

Feature Selection (사용할 특성 선택)

 

5. Model 선택, Hyper Parameter 조정

- 목적에 맞는 적절한 모델 선택

- Hyper Parameter

: model의 성능을 개선하기위해 사람이 직접 넣는 parameter(직접조정)

 

6. Training(학습)

- model.fit(X_train,y_train)

- 데이터 수집 -> 학습 -> 예측(임의로{test})

: train 데이터(문제와 정답이 있음. 문제와 정답을 그대로 사용해 규칙찾음)와 test 데이터(문제와 정답이 있음)를 7:3 정도로 나눔

- train(data - 문제 ) 7 : 3(test data - 정답{훈련용 데이터}) 

- 훈련용 데이터를 통해 모델에 학습하고 규칙을 찾음. 그리고 규칙을 통해 새로운 값을 예측

- 7단계 예측을 test(data)를 활용

- 문제, 정답(일부러 정답이 있게 해놓음), 실제정답

- 모델들이 본인의 규칙을 가지고 있음. + 새로운 문제를 넣어 예측값을 만들고 많은 정답을 만들어야 함.(원래는 예측값은 정답이 없음) 이렇게 예측값과 실제 정답과 비교를 해 얼마나 예측값이 정확한가?(정확도 – 95%)

1.규칙 잘찾앗나? 2. 규칙ㅈ정확한가?

 

학습 – X_train, y-trai

평가 – predict(x_test), score X_test 

 

- > 

model.predict (X_test)

 

7. Evaluation(평가)

1) accuraacy(종확성)

2) recall(재현율)

3) precision(저밀도)

1fs core

 

[2] 일반화, 과대적합, 과소적합, KNN알고리즘, 하이퍼파라미터 튜닝

1. 일반화, 과대적합, 과소적합

 

ex) 공이라는 물체에 정보 입력할때

 

1) 과대적합(overfitting) : 너무 많은 조건을 줘버림

: 훈련 세트에 너무 맞추어져 있어 테스트 세트의 성능 저하

점이있다

: 둥글게 생겼따

등등

등등

 

2) 과소적합(Underfiting) : 너무 적은 조건을 줘버림

: 훈련 세트를 충분히 반영하지 못해 훈련세트, 테스트 세트에서 모두 성능이 저하

: 둥글게 생겼다.

 

3) 일반화(Genraliztion)

- 훈련 세트로 학습한 모델이 테스트 세트에 대해 정확히 예측하도록 하는 것

 

 
훈련score
예측score
과대적합
매우높음 1
훈련score에 비해 낮음 2
일반화
높음 2
가장높음 1
과소적합
다소낮음 3
매우낮음 3

 

 

train, test의 비율

7↑ 3↓ -> 과대적합 확률증가

↓ ↑ -> 과소적합 확률 증가

 

 

4) 데이터 칼럼의 수가 증가할수록 과대적합 확률 증가

 

5) 머신러닝 모델의 매개변수에 따라 과대, 과소 적합의 확률이 증가/감소할 수 있음

- 하이퍼파라미터 튜닝

 

해결방법

- 주어진 훈련데이터의 다양성이 보장되어야 한다. 다양한 데이터포인트를 골고루 나타내야한다.

- 일반적으로 데이터 양이 많으면 일반화에 도움이 된다

- 하지만 편중된 데이터를 많이 모으는 것은 도움이 되지 않는다.

- 규제(Regularization)을 통해 모델의 복잡도를 적정선으로 설정한다.

 

 

2. K-Nearest Neightbors(KNN)

1) k - 최근접 이웃 알고리즘

: 새로운 데이터 포인트와 가장 가까운 훈련 데이터셋이 데이터 포인트를 찾아 예측

2) k 값에 따라 가까운 이웃의 수가 

3) 분류와 회귀에 모두 사용

4) k 값이 작을수록 모델의 복잡도(결정 경계가 복잡)가 생대적으로 증가.(noise->이상치 값에 민감)

5) 반대로 k 값이 커질수록 모델의 복잡도가 낮아진다.

6) 100개의 데이터를 학습하고 k를 100개로 설정하여 예측하면 빈도가 가장 많은 클래스 레이블로 분류

(데이터 의수 = k, 정답클래스 많은 비율이 답)

 

파랑색으로 예측

같으면 거리에 기반해서 결정

 

분류 : 이웃중에서 많은 비율을 가지는 것을 예측값으로 선택

회귀 : 이웃들의 평균값 -> 예측값

KNN 

1) 주요 매개변수

- 거리측정 방법, 이웃의 수, 가중치 함수

scikit-learn의 경우

metric : 유클리디언 거리 방식

n_neightbors : 이웃의 수

weight : 가중치 함수

- uniform : 가중치를 동등하게 설정

- distance : 가중치를 거리에 반비례하도록 설정

2) 장단점

- 이해하기 매우 쉬운 모델

- 훈련 데이터 세트가 크면(특성, 샘플의 수) 예측이 느려진다.

- 수백 개 이상의 많은 특성을 가진 데이터 세트와 특성 값 대부분이 0인 희소(sparse)한 데이터 세트에는 잘 동작하지 않는다.

- 거리를 측정하기 때문에 같은 scale을 같도록 정규화 필요

#sort_values

#set_index

#예측

#predict

728x90
반응형
Comments