1. 머신러닝 모델링의 기본

 

머신러닝의 목적: 예측과 추론( 크게 두가지)

머신러닝 모델들을 사용할 때 유의할 점: 모델의 예측정확도와 모델해석사이에는 절충관계 (trade off)가 있다.

 

2. 매개변수와 비매개변수모델

 

본질적인 차이점은 매개변수모델은 f_추정 함수라 특정 함수꼴을 갖는 반면에 비매개변수모델은 엄격한 가정을 하지 않는다.

 

3. 지도학습과 비지도학습

 

본질적 차이는 목표변수의 유무이다.

 

지도학습의 방법은 회귀와 분류, 비지도 학습의 방법은 군집화와 차원축소가 있다.

주로 비지도 학습은 지도학습을 위해 훈련데이터를 편집하거나 입력특성을 이끌어 낼 때 사용한다.

 

3-1. 분류(classification)

 

분류는 분류기(classifier)를 사용해서 신규데이터가 어떤 버킷(계급)에 속하는지 예측하는 일을 말한다.

 

가장 간단한 예로 로지스틱 회귀 알고리즘을 들겠다!

왜 선형알고리즘인가? 결정경계선이 직선이다.

 

*서포트벡터머신(SVM, support vector machine): 선형과 비선형에 모두 사용, kernel을 이용해서 데이터가 존재하는 공간을 휘게 할 수 있는 수학적 구조를 갖고있어서 비선형에도 사용이 가능하다.

 

여러계급으로 분류를 할때? 

기본적으로 k 최근접 이웃 분류기 사용

 

*k 최근접 이웃 알고리즘(k-nearest neighbors algorithm)

모델을 빠르게 훈련시키나 예측 속도는 느린편

 

3-2. 회귀(regression)

 

회기는 회귀기(regressor)를 사용해서 신규데이터의 값을 예측하는 일을 말한다.

 

*선형회귀(linear regression)

회귀모델 중 가장 간단하고, 널리 사용되는 모델

강점: 선형 확장성 및 높은 수준의 해석 능력

 

그렇다면 복잡한 비선형 데이터에 대한 회귀분석 수행은 어떻게 하는가?

일부 데이터셋은 특성간의 관계가 선형 모델에 적합하지 않으며, 

 

*랜덤포레스트(random forest)

비선형문제를 다루는 이것은 분류와 회귀를 둘 다 수행할 수 있다.

 

기본 => 결정트리(decision tree)

 

 

 

모든 데이터 분석에 앞서 데이터 전처리 과정을 알아보자!

 

1. 범주형 특성 (categorical)

: 값을 분류할 수 있고 값에 순서가 없는 경우

 

함부로 범주형 특성을 수치형 특성으로 바꾸는 경우 '순서'의 의미가 들어갈 수 있음을 주의하자

하지만 2진 특성(1/0)으로 치환은 가능하다. : 이런식으로 처리된 변수를 가변수(dummy variable)이라고 한다.

 

2. 결측자료 다루기

 

- 결측의 두가지 사용

1)  없는 것이 의미가 있는 경우: informative 결측치

 

수치형인 경우 해결 방법 => 일반적인 열과 동일하게 사용하기 위해서 변환, 예를 들면, -1이나 -999와 같이 편향된 값을 사용해서 입력 (왜냐하면? 수치는 순서를 내포하기 때문에 값의 중간값을 쓰는것을 원치 않을 것이다.)

 

범주형인 경우 해결 방법 => 결측된 값을 위한 새로운 열을 만든다. 

 

2) 없는 것이 아무 의미가 없는 경우

해결 방법 => 적절한 값으로 imputation한다.

수가 매우 작을때는 무시하는 것이 좋다.

 

시간순으로 정렬된 데이터셋의 경우 해결 방법 => 이전 사례 값으로 바꾼다.

 

데이터가 단순한 분포를 따르는 경우 해결 방법 => 열의 평균으로 대체, 이와중에 이상점을 제외하고자하면 중위수로 대체

 

 

3. 간단한 특성추출

 

예를 들어, 타이타닉호의 객실번호 (ex. C134)가 승객들의 대피와 관련이 있다면 이를 문자는 => 범주형, 숫자는 => 수치형으로 추출을 하여 정보를 살릴 수 있다.

 

feature engeneering (특성공학)

 

4. 데이터 정규화

 

일부 머신러닝 데이터는 normalized(정규화되어)있어야한다.

한 특성에 가중치를 주고 싶지 않을 것이다.

해결 => 0~1이나 -1~1사이의 값으로 정규화를 해준다.

 

정규화하는 factor를 남기고, 정규화된 값을 동시에 남겨 어떤식으로 정규화를 했는지 기억하자!

 

5. 데이터 시각화

 

*훈련집합이 대표성을 띄는지 알 수 있고, 사례가 부족한 유형도 알 수 있다!

*시각화에서 특성과 반응변수간의 명확한 관계가 보이지 않는다고 쉽게 제거해서는 안된다.

 

1) 모자이크 분포도 (특성:범주형, 반응변수:범주형)

2) 상자 분포도 (수치형, 범주형)

3) 밀도 분포표 (범주형, 수치형)

4) 산점도 (수치형, 수치형)

 

 

 

 

데이터분석을 위해 데이터 입력 방법을 알려준다.

 

1. 어떤 특성의 데이터를 포함해야 하는가?

- 특성값이 예측할 때 알 수 있는 변수여야한다.

- 특성은 수치형 또는 문자형이어야한다.

- 목표변수와 관련있다고 생각되는 특성들만 입력하는 것이 좋다.

 

* 머신러닝의 정확도가 떨어지는 경우

- 상관 없는 변수라고 생각했지만 상관이 있는 변수를 제거하는 경우

- 관련있다고 생각하는 변수를 모두 넣어버려 잡음이 커지는 경우

- 목표변수와 관련이 있음을 이미 알고 그런 집합만 넣었을 때 예측에 도움되는 그밖의 변수들이 제거되는 경우

 

이런 문제의 해결 방법은

=> 목표 변수를 예측하는데 도움이 된다고 생각되는 모든 특성을 포함시켜 모델을 만들고 모델의 정확도가 충분하면 중단한다.

=> 그래도 정확도가 충분하지 않으면 목표와 관련성이 낮은 특성들까지 확장하여 모델을 제작하고 정확도를 평가한다. 충분하면 중단한다.

=> 아직도 충분치 않으면 그 상태에서 특성 선택 알고리즘을 사용해 가장 도움이 되는 부분집합을 선택한다. 

 

2. 훈련 데이터의 양은 어떻게 정하는가? 

=> 정확히 말하기 어렵지만 몇가지 요소를 고려해볼 수 있다.

 

- 문제의 복잡성: 입력특성과 목표변수의 관계가 단순선형인가 비선형인가

- 정확도를 위한 요구사항: 정확도가 높은 모델을 만들려고 할수록 많은 데이터가 필요하다.

- 특성 공간의 차원: 입력특성이 적으면 많은 것보다 적은 데이터가 필요하다.

 

원칙: 훈련집합이 클수록 평균적으로 모델이 정확해진다.

 

3. 훈련 집합이 충분히 대표성을 띄는가?

=> 시각화를 통해 대표성을 띄는지 검토해야 한다.

 

약한 관계 + 약한 관계 => 강력한 예측변수

 

로지스틱은 입력값과 출력값의 관계가 복잡하게 표현될때 제한될 수도 있다.

 

매개변수모델 , 비매개변수모델 ? 

 

매개변수모델은 예측값과 설명변수의 관계를 잘 알고 있을 때 사용하면 효율적이다. 

또 이러한 선형 알고리즘은 설명하기 쉽고 큰데이터셋을 다루기 유용하면서 작업속도가 더 빠른 모델이다.

비매개변수 머신러닝 알고리즘은 데이터에서 복잡한 경향과 구조를 자동으로 발견해낼 수 있는 더욱 유연한 모델이다.

 

데이터 처리: 결측치가 있다면 왜 결측치가 났는지 모르지만 결측치를 제거할 수 있어야하며, 최소한 오해의 소지가 있는 데이터에서 특정 알고리즘이 얼마나 잘 작동하는지 알아내야한다.

 

특정 알고리즘은 쓸데없는 특성을 알아서 제거하지만 대부분의 알고리즘이 그런 특성을 제거했을때 정확도가 더 높게 나온다. (그렇지만 귀중한 정보가 보기에 쓸데없어 보이는 특성으로 추출될 수 있다는 점도 명심해야한다.) 

 

feature engeneering (특성 공학): 수집된 데이터에서 값을 추출하고 실제로 모델을 구축하기 전에 모델의 특성을 추가하는 작업들

 

 

 

+ Recent posts