본문 바로가기
멋쟁이사자처럼 AI School 8기(fin)/TIL(Today I Learn)

[멋쟁이사자처럼 AI스쿨] TIL(23.3.7), 머신러닝

by #FF0000 2023. 3. 7.

 

 

 

 

 

Scikit-learn

 

 

지도학습 vs 비지도학습

지도 학습 

> 정답(Label) 있는 데이터를 학습

  • 분류 : 범주형 데이터를 각 class별로 나누는 것 (범주형 변수)
  • 회귀 : 하나의 가설에 미치는 다양한 수치형 변수들과의 인과성 분석 (수치형 변수)

 

비지도 학습 

> 정답(Label) 없는 데이터를 학습

  • 군집화 : 유사도가 높은 범주끼리 모아주는 것, 분류와는 다르게 정답이 없다. (범주형 변수)
  • 차원축소 : 고차원 데이터를 차원을 축소해서 분석할 특성을 줄이고 한눈에 볼 수 있게 해줌 (수치형 변수)

 

 

No Free Lunch Theorems for Optimization

> Wolpert와 Macready가 1997년에 발표한 논문,

> 어떤 최적화 알고리즘이든 모든 문제에서 효과적일 수 없음.

> 최적화 문제의 성격에 따라서 알고리즘의 성능이 다르게 나타난다

> 최적화 알고리즘을 선택할 때는 문제의 특성에 적합한 알고리즘을 선택해야 한다는 것이 중요.

 

 

 

 

머신러닝 > 비지도학습 > 군집화 > K-means

 

 

 

특정 알고리즘(특히 회귀, 군집화) 한쪽에 치우친 데이터의 경우 잘 학습하지 못함

-> cut을 사용하여 데이터를 구간화

-> 혹은 log를 사용하여 정규분포로 만들어줌

 

 

로그변환

 

 

로그 변환시 : x + 1.

> x 값이 1보다 작을 때 마이너스 무한대로 수렴을 하기 떄문에, 가장 작은 값인 1 합산.

> np.log1p 를 사용.

 

 

 

Q. 음수가 있는데 분포가 한쪽으로 너무 치우쳐져있어서 로그를 적용해서 변환하고자 합니다.

그런데 음수에 로그를 적용할 수가 없습니다. 이 때는 어떻게 해야 할까요?

 

A. 음수에 로그를 적용할 수 없는 경우, 일반적으로 다음과 같은 방법들이 사용됩니다.

1) Min-max scaling: 데이터를 최소값을 0으로, 최대값을 1로 변환합니다. 그 후, 변환된 값을 다시 로그를 적용합니다.

 

2) Box-Cox 변환: Box-Cox 변환은 양수 데이터에 대해 사용되는 데이터 변환 방법 중 하나입니다. 음수 값을 변환하기 위해서는 먼저 상수를 더해서 모든 값이 양수가 되도록 만들어줍니다. 그 후에 Box-Cox 변환을 적용하고, 변환된 값을 다시 원래 상수를 빼서 원래 음수 값을 얻어낼 수 있습니다.

 

3) Yeo-Johnson 변환: Yeo-Johnson 변환은 Box-Cox 변환과 비슷한 방법으로 음수 값을 처리합니다. Box-Cox 변환에서는 음수 값을 처리하지 못하는데 비해 Yeo-Johnson 변환은 모든 값을 처리할 수 있습니다.

위의 방법들은 모두 데이터 분포를 변환하여 좀 더 대칭적이고 정규성을 가진 분포로 변환하여 분석할 수 있도록 도와줍니다.

 

 

Elbow Method


Inertia : 각 군집별 오차의 제곱의 합, 군집 내의 분산 k가 증가하면 inertia가 줄어들게 됨


inertia가 빠르게 변하는 지점이 최적의 k

 

 

실루엣 계수

- EM알고리즘만으로는 "적당한" K를 찾기 모호하다는 한계점을 보안하기 위해 발전된 방법 (Silhouette Method)

- 각 데이터가 해당 데이터와 같은 군집 내의 데이터와는 얼마나 가깝게 군집화가 되었고, 다른 군집에 있는 데이터와는 얼마나 멀리 분포되어 있는지를 나타내는 지표

- 실루엣 계수 점수가 크다는 건 군집 간의 거리가 멀다는 의미로 잘 군집화 돼 있다고 볼 수 있다.

- 각 군집별 데이터의 수가 고르게 분포되어야 하며, 각 군집별 실루엣 계수 평균값이 전체 실루엣 계수 평균값에 크게 벗어나지 않는 것이 중요.

- 계산하는 공식에 따라 -1 ~ 1 & 0~ 1 사이의 값을 가질 수 있다

 

 

 

 

 

Q&A

 

 

Q. pariplot을 그리는 이유?

A. scatter > 시간 소요 多. 샘플만 추출 > 시각화 -> 빠르게 출력.

 

 

Q. 현실세계에서 양의 상관이 있는것과, 음의 상관이 있는 것?

A. 양의 상관 : 교육 수준과 소득 수준, 기온과 아이스크림 판매량

    음의 상관 : 체중과 운동량, 강수량과 관광객 수

 

Q. 상관계수를 볼 때 주의해야 할 점?

A. 

1. 이상치(outliers)에 민감. 이상치가 있을 경우 상관 계수의 값이 크게 왜곡될 수 있으므로, 이상치를 먼저 확인하고 제거한 후 상관 계수를 계산.

2. 선형적인 상관관계만을 고려. 만약 비선형적인 관계가 있는 경우에는 상관 계수를 계산하는 것이 의미가 없을 수 있습니다.

3. 인과관계와 혼동하지 말아야 한다. 상관 계수는 두 변수 간의 관계를 나타내기 때문에, 두 변수 사이에 인과관계가 있는지는 알려주지 않습니다. 

4. 샘플 크기에 따라 결과가 달라질 수 있다. 일반적으로 샘플의 크기가 작을 경우에는 상관 계수가 왜곡될 가능성이 높습니다.

5. 다중공선성(multicollinearity)에 주의해야 한다. 두 변수 사이에 강한 상관관계가 있는 경우에는 다중공선성이 발생할 수 있습니다. 이 경우에는 회귀분석 등 다른 방법을 사용하여 문제를 해결해야 합니다.

 

심슨의 역설(Simpson's paradox)

> 데이터의 세부 그룹별로 일정한 추세나 경향성이 나타나지만, 전체적으로 보면 그 추세가 사라지거나 반대 방향의 경향성을 나타내는 현상을 의미.

 

 

 

Q. 머신러닝, 딥러닝에서 추상화된 도구(Scikit_learn, TensorFlow, PyTorch,Transformer, FastAI)를 사용했을 때의 장단점?

A.  장점

- 개발 시간 단축과 정확성 향상

- 재사용성

- 하드웨어 가속

단점

- 빠르게 실행 할 수 있는 장점있는 방면에 어떻게 동작하는지 알 수 없다. (매커니즘 이해도 부족)

- 사용법이 비교적 간단한 반면 내가 원하는 방식으로 사용하기 어렵다.

- 일부 원하는 기능이 구현되어있지 않을 수 있으며 개발자가 구성할 수 있는 옵션이 적을 수 있다.

- 메모리 사용의 증가

- 특정 프레임워크나 라이브러리에 종속될 우려가 있어 일반성이 부족할 수 있다.