본문 바로가기

파이썬/전처리

(6)
차원축소 방법 PCA 외 LDA, SVD 등 차원이 커지거나 독립변수 간 강한 상관관계가 있는 경우(다중공산성) 모델의 정확도가 떨어질 수 있다. 차원축소는 여러 변수의 정보를 최대한 유지하면서 데이터 변수의 개수를 줄이는 통계 기법이다. PCA(주성분 분석) 1. LDA(선형 판별 분석) PCA와 유사하게 데이터셋을 저차원 공간으로 투영해 차원을 축소하는 기법이나 PCA와 달리 지도학습의 분류에서 사용된다. LDA는데이터를 최적으로 분류하여 차원을 축소하는 기법이고, PCA는 데이터를 최적으로 표현하는 관점에서 차원을 축소하는 방법이다. 투영 후 클래스 간 분산은 최대한 크게, 클래스 내부 분산은 최대한 작게 만들어 각 클래스 간 중심이 서로 멀어지도록 분류한다. 그렇기 때문에 SVM 같은 분류 알고리즘을 적용하기 전에 사용하면 성능을 높일 수 ..
라쏘와 엘라스틱넷, 선형회귀 과적합 방지를 위한 규제 방법 선형 회귀는 매개변수가 없다. 매개변수가 없기 때문에 모델링을 할 때 매개변수 조정이 필요 없지만 그만큼 오버피팅되기 쉽다. 이러한 선형회귀의 과대적합 문제를 해결하기 위해서 규제를 사용한다. 편향-분산 트레이드오프 선형회귀 오버피팅 방지 - 릿지 회귀 규제 방법에는 L2규제인 릿지와 L1규제인 라쏘, 그리고 이 둘을 결합한 엘라스틱넷이 있다. 이번 포스팅에서는 라쏘와 엘라스틱넷에 대해 자세히 다뤄보겠다. 릿지와 마찬가지로 라쏘도 비용함수에 규제항을 더한다. 다만 L2노름의 제곱을 2로 나누는 릿지와 달리 계수의 절대값의 합인 L1노름을 패널티로 사용한다. 라쏘의 가장 중요한 특징은 덜 중요한 특성의 가중치를 제거하려고 하는 것이다. 즉, 어떤 계수는 가중치가 0이 되어서 아예 모델에 사용되지 않는 것이..
파이썬 null 처리 방법, fillna()와 dropna()로 결측치 보정하기 데이터 전처리 과정에서 중요한 것 중 하나인 결측치 보정. null값이 전혀 없는 데이터라면 참 좋겠지만 현실의 데이터에는 null값이 있는 데이터가 더 많다. titanic 데이터셋으로 실습해보았다. import pandas as pd import numpy as np data = pd.read_csv("titanic.csv") data.info() 우선 info() 함수로 null값 확인을 할 수 있다. 전체 데이터가 891개인데 보면 age, embarked, deck, embark_town 컬럼은 non-null 개수가 891보다 작으므로 null값이 있음을 알 수 있다. info 함수는 결측치뿐만 아니라 컬럼 데이터타입 확인도 가능하다. data.isnull() data.isnull().sum(..
베이지안 최적화(optimization) 개념 Auto Ml로 하이퍼파라미터 튜닝하기 모델 성능 향상을 위해서 필요한 하이퍼파라미터 튜닝, Auto ML로 Hyperparameter Optimization이 가능하다. Hyperparameter Optimization은 크게 그리드서치, 랜덤서치, 베이지안 옵티마이제이션 3가지가 있다. ※참고 하이퍼파라미터 튜닝 방법1. - 그리드 서치 그리드 서치는 파라미터 값을 직접 지정해줘야 한다는 번거로움이 있어 실제로는 베이지안 최적화 방식을 많이 사용한다. 물론 베이지안 옵티마이제이션이 무조건 최고다! 라는건 아니지만 Auto ML 영역에서 소요 시간이나 성능 등을 고려하면 다른 하이퍼파라미터 튜닝 방법에 비해서 좋다고 할 수 있다. 베이지안 옵티마이제이션 개념 사실 파이썬 초보인 나에게 이 개념은 너무너무 어렵고 헷갈린다.. 그래서 틀린 부분..
원핫인코딩 파이썬 get_dummies 함수로 범주형 변수 전처리 원핫인코딩, 가변수(dummy variable)은 성별, 학력과 같은 범주형 변수를 0 또는 1값을 가진 하나 이상의 새로운 특성으로 바꾼 것이다. 이 때 변수의 특성 개수는 상관없다. 예를 들어 학력이라는 특성에 '학사', '석사', '박사' 3개 값이 있다고 가정해보자. 그러면 어떤 사람의 학력 값에 해당하는 특성은 1이 되고 나머지는 0이 된다. 즉 데이터 포인트마다 정확히 3개의 특성 중 하나는 1이 되고 나머지 2개는 0이 된다. 원핫 인코딩은 왜 하는걸까? 컴퓨터는 문자를 이해할 수 없기 때문에 컴퓨터가 알아들을 수 있는 숫자로 변환시켜주는 작업이 필요한 것이다. 많은 데이터에 문자값이 포함되어 있기 때문에 원핫인코딩은 전처리 과정에서 아주 흔하게 사용되며 머신러닝, 딥러닝뿐만 아니라 자연어처..
데이터 스케일링 반드시 필요한 전처리 과정! fit_transform과 transform의 차이 모델을 학습시키기에 앞서 데이터 전처리는 꼭 필요하다. 특성별로 값의 범위가 다 다르기 때문에 어떤 특성은 값이 너무 작고 어떤 특성은 값이 너무 크다면 알고리즘 학습 시 0으로 수렴하거나 무한으로 발산해버리면서 원하는 결과값이 나오지 않을 수 있다. 특히 SVM이나 신경망 알고리즘 같은 경우 데이터의 스케일에 매우 민감하기 때문에 알고리즘에 맞는 데이터 특성값 조정은 반드시 선행되어야 한다. 데이터 스케일링의 종류 1. StandardScaler 평균=0, 표준편차=1로 조정해서 모든 특성이 같은 크기를 갖게 한다. 2. MinMaxScaler 최대값=1, 최소값=0으로 조정, 아웃라이어에 취약 3. RobustScaler 중앙값=0, IQR(1분위~3분위값)=1로 조정, 아웃라이어 영향을 최소화하며 ..