지금은마라톤중

멋사 AI스쿨 TIL - (18) 본문

멋쟁이사자처럼/Python

멋사 AI스쿨 TIL - (18)

달리는중 2023. 3. 7. 17:10
2023.03.07 
 
●  상관계수는 -1~1 사이의 값
 
피어슨 상관계수(r)
r이 -1.0과 -0.7 사이이면, 강한 음적 선형관계,
r이 -0.7과 -0.3 사이이면, 뚜렷한 음적 선형관계,
r이 -0.3과 -0.1 사이이면, 약한 음적 선형관계,
r이 -0.1과 +0.1 사이이면, 거의 무시될 수 있는 선형관계,
r이 +0.1과 +0.3 사이이면, 약한 양적 선형관계,
r이 +0.3과 +0.7 사이이면, 뚜렷한 양적 선형관계,
r이 +0.7과 +1.0 사이이면, 강한 양적 선형관계

 

질문🙋🏻‍♂️: 현실세계에서 양의 상관이 있는 것과 음의 상관이 있는것 무엇이 있을까요?
- 양의 상관
교육 수준과 소득 수준. 
기온과 아이스크림 판매량 회사규모와 평균연봉 
- 음의 상관 
체중과 운동량 
강수량과 관광객 수

 

질문🙋🏻‍♂️: 상관 계수를 볼 때 주의해야 할 점이 있다면? 어떤 점이 있을까요?
상관 계수를 계산할 때 주의해야 할 점은 다음과 같습니다.
1. 이상치(outliers)에 민감하다. 
상관 계수는 이상치(outliers)에 매우 민감합니다. 이상치가 있을 경우 상관 계수의 값이 크게 왜곡될 수 있으므로, 이상치를 먼저 확인하고 제거한 후 상관 계수를 계산하는 것이 좋습니다. 
2. 선형적인 상관관계만을 고려한다. 
상관 계수는 두 변수 간의 선형적인 상관관계만을 측정합니다. 만약 비선형적인 관계가 있는 경우에는 상관 계수를 계산하는 것이 의미가 없을 수 있습니다. 
3. 인과관계와 혼동하지 말아야 한다. 
상관 계수는 두 변수 간의 관계를 나타내기 때문에, 두 변수 사이에 인과관계가 있는지는 알려주지 않습니다. 따라서 상관 계수를 해석할 때는 반드시 인과관계와 혼동하지 말아야 합니다.
4. 샘플 크기에 따라 결과가 달라질 수 있다. 
상관 계수는 샘플의 크기에 따라 결과가 달라질 수 있습니다. 일반적으로 샘플의 크기가 작을 경우에는 상관 계수가 왜곡될 가능성이 높습니다. 
5. 다중공선성(multicollinearity)에 주의해야 한다. 
두 변수 사이에 강한 상관관계가 있는 경우에는 다중공선성이 발생할 수 있습니다. 이 경우에는 회귀분석 등 다른 방법을 사용하여 문제를 해결해야 합니다.

*다중공선성 문제는 통계학의 회귀분석에서 독립변수들 간에 강한 상관관계가 나타나는 문제이다. 독립변수들간에 정확한 선형관계가 존재하는 완전공선성의 경우와 독립변수들간에 높은 선형관계가 존재하는 다중공선성으로 구분하기도 한다. 이는 회귀분석의 전제 가정을 위배하는 것이므로 적절한 회귀분석을 위해 해결해야 하는 문제가 된다.

 

 

●  심슨의 역설(Simpson's paradox)

데이터의 세부 그룹별로 일정한 추세나 경향성이 나타나지만, 전체적으로 보면 그 추세가 사라지거나 반대 방향의 경향성을 나타내는 현상을 의미한다. 이 현상은 사회과학이나 의학 통계 연구에서 종종 발생한다. 심슨의 역설은 통계의 함정이 유발할 수 있는 잘못된 결과를 설명하는 데 쓰이기도 한다.

 

질문🙋🏻‍♂️: 머신러닝, 딥러닝에서 추상화된 도구(Scikit-learn, TensorFlow, PyTorch, Transformer, FastAI 등) 를 사용했을 때의 장점과 단점이 있다면?

장점

- 개발 시간 단축과 정확성 향상
- 재사용성 
- 하드웨어 가속 

단점 

- 빠르게 실행 할 수 있는 장점있는 방면에 어떻게 동작하는지 알 수 없다. (매커니즘 이해도 부족) 
- 사용법이 비교적 간단한 반면 내가 원하는 방식으로 사용하기 어렵다. 
- 일부 원하는 기능이 구현되어있지 않을 수 있으며 개발자가 구성할 수 있는 옵션이 적을 수 있다.
- 메모리 사용의 증가
- 특정 프레임워크나 라이브러리에 종속될 우려가 있어 일반성이 부족할 수 있다

 

●  ML 용어 정리

- 지도 학습 :  정답 (Label) 있는 데이터를 학습 

  분류 : 범주형 데이터를 각 class별로 나누는 것 (범주형 변수)

  회귀 : 하나의 가설에 미치는 다양한 수치형 변수들과의 인과성 분석 (수치형 변수)

 

- 비지도 학습 :정답 (Label) 없는 데이터를 학습 

  군집화 : 유사도가 높은 범주끼리 모아주는 것, 분류와는 다르게 정답이 없다. (범주형 변수)

  차원축소 : 고차원 데이터를 차원을 축소해서 분석할 특성을 줄이고 한눈에 볼 수 있게 해줌 (수치형 변수)

  강화학습 : 당근과 채찍을 번갈아 사용하면서 모델이 스스로 정답을 찾아가도록 하는 알고리즘

 

 

●  Pycaret 이란 ?

scikit-learn 패키지를 기반으로 개발된 자동으로 머신러닝을 수행하는 파이썬 라이브러리 (Auto-ML) classification(분류), regression(회귀), Clustering, Anomaly Detection 등 다양한 모델을 지원한다.

 

●  K-means 군집분석

주어진 샘플 데이터를 k개의 cluster로 묶는 iterative 한 알고리즘

각 클러스터 내 유사도는 높이고, 클러스터 외 유사도는 낮추는 것을 가정한다.

- 거리를 측정해서 해당 군집에 속하는지를 판단한다.

군집 간 거리 차이의 분산을 최대화시킨다

 

 

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

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

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

 

질문🙋🏻‍♂️: np.log 시 +1를 해주는 이유는?
x 값이 1보다 작을 때 마이너스 무한대로 수렴을 하기 때문에 가장 작은 값인 1을 더해줍니다.
np.log1p 를 사용하게 되면 1을 더하고 로그를 적용하는 것과 같습니다.

 

●로그 함수는 0보다 큰 값에 대해서만 정의되기 때문에 음수에는 적용할 수 없습니다. 음수 값에 로그를 적용하는 대안으로는 다음과 같은 방법들이 있습니다.

- 절댓값으로 변환 후 로그 적용

음수 값을 양수 값으로 바꾸기 위해 절댓값으로 변환한 뒤 로그를 적용하는 방법입니다. 이 방법은 데이터의 분포가 한쪽으로 치우쳐져 있을 때 효과적일 수 있습니다. 하지만 음수 값의 크기가 크게 작용하는 경우, 로그 변환 후 값의 차이가 크게 줄어들어 원래 데이터의 특성이 완전히 바뀔 수 있습니다.

- 적절한 상수를 더한 후 로그 적용

음수 값에 로그를 적용할 수 없지만, 0 이상의 값에 로그를 적용할 수 있습니다. 따라서 음수 값에 상수를 더해준 후 로그를 적용하는 방법이 있습니다. 상수는 1보다 크면서 음수 값의 절댓값보다 큰 값을 사용합니다. 이 방법은 음수 값이 상대적으로 작을 때 효과적일 수 있습니다.

- Box-Cox 변환

Box-Cox 변환은 데이터를 정규분포에 가깝게 만들기 위해 사용하는 방법으로, 양수와 음수 모두에 대해 적용할 수 있습니다. 이 방법은 데이터가 양수이거나 0일 때 적용 가능하며, 데이터가 음수인 경우에는 일반적으로 다른 방법을 사용합니다. Box-Cox 변환은 파이썬의 scipy.stats 모듈의 boxcox 함수를 사용하여 구현할 수 있습니다.

 

● 변수 스케일링

- Feature Scalingd

- Normalization - Standardization(Z-score scaling), Min - Max scaling, Robust scaling

- Scaling 특성을 나타내는 값은 빨간색 박스로 표시했습니다.

- standard Scaler는 평균이 0, 표준편차가 1인 모습을 확인할 수 있습니다.

- MinMax Scaler는 최소값이 0, 최대값이 1인 모습을 확인할 수있습니다.

- Robust Scaler는 중앙값을 0으로 만듭니다. IQR을 기준으로 scaling 합니다.

 

●  Scikit-laern API 사용법
- fit() : 학습(만약, StandardScaler 라면 주어진 데이터의 평균, 표준편차 등을 학습하게 됩니다.)
- transform() : 비지도 학습에서 변환
- fit_transform() : 학습과 변환을 한번에 합니다.
- predict() : 지도학습의 분류, 회귀 등의 예측

 

질문🙋🏻‍♂️: 왜 random_state 는 보통 42로 쓸까?
42라는 숫자는 과학 및 공상과학 커뮤니티에서 계속되는 내부 농담의 일종으로, 더글러스 애덤스의 전설적인 책 <은하수를 여행하는 히치하이커의 안내서>에서 딥 씽크라는 거대한 슈퍼컴퓨터가 750만 년 동안 "삶의 궁극적인 질문에 대한 답"을 계산하는 내용에서 유래했습니다. 원래는 농담으로 의도된 것이었지만 1979년에 발표된 이후 공상과학 팬과 괴짜들은 이 숫자에 의미를 부여하고 "삶, 우주, 모든 것에 대한 궁극적인 질문"에 대한 답을 구한다는 주장을 어느 정도 검증하려고 시도해 왔습니다. 42라는 숫자에 대한 대중문화의 다양한 언급은 전용 위키백과 페이지에서 확인할 수 있습니다.

 

● Within-Cluster Sum of Square

클러스터 내 제곱 합계는 각 클러스터 내 관측값의 변동성을 측정하는 척도입니다. 일반적으로 제곱합이 작은 클러스터는 제곱합이 큰 클러스터보다 더 콤팩트합니다

 

질문🙋🏻‍♂️: inertia가 그러면 군집의 개수에 따른, 군집 내의 데이터 일관성을 측정하는 지표라고 생각하면 될까요?
Elbow Method
 
Inertia : 각 군집별 오차의 제곱의 합, 군집 내의 분산 
k가 증가하면 inertia가 줄어들게 됨
 
inertia가 빠르게 변하는 지점이 최적의 k

 

 

팁❗️: 실루엣 계수 
계산하는 공식에 따라 -1 ~ 1 & 0~ 1 사이의 값을 가질 수 있습니다.

 

 

질문🙋🏻‍♂️: 데이터가 14GB 일때 통째로 불러오려고 했는데 30분째 안 불러와지고 있어요. 어떻게 해야할까요?
nrows 로 0~10,000,000 개까지 그 다음 10,000,000~20,000,000 팀원 별로 나눠서 가져오고 downcast => parquet 로 저장 => 하나의 parquet 로 합쳐서 저장
5G를 먼저 가져와서 처리하는 것을 추천
분석할 수 있는 크기로 먼저 가져와서 어떤 것을 분석할지를 결정하고 어떤 지표를 볼지 샘플데이터를 확인하고 데이터의 크기를 늘려서 확인해 보세요! 꼭 14G 를 다 분석할 필요는 없습니다
* 프로젝트 진행시 시간배분을 어떻게 할지도 고민해 보세요!!

 

질문🙋🏻‍♂️: 사이킷런은 딥러닝 알고리즘을 지원할까요?
사이킷런 사용자들이 사이킷런 개발자들에게 GPU를 지원해 달라고 해도 기존 머신러닝 알고리즘에 더 집중하겠다고 했습니다.
사이킷런에 인공신경망 모델이 있지만 파이토치나 텐서플로우에 더 잘 되어 있습니다.

 

 

● 정형 데이터일 경우 용어

X => 문제, 2차원, 독립변수, feature

y=> 정답, 1차원, 종속변수, target, label

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

'멋쟁이사자처럼 > Python' 카테고리의 다른 글

멋사 AI스쿨 TIL - (20)  (0) 2023.03.15
멋사 AI스쿨 TIL - (19)  (0) 2023.03.09
멋사 AI스쿨 TIL - (17)  (0) 2023.03.07
멋사 AI스쿨 TIL - (16)  (0) 2023.02.28
멋사 AI스쿨 TIL - (15)  (0) 2023.02.09
Comments