파이썬 머신러닝_데이터 전처리_핵심정리

파이썬 머신러닝 강좌의 맛보기 강의입니다.

강의 대본

사이킷런으로 머신러닝 프로그램을 진행하기 전에 반드시 처리해야 되는 일이 있는데요. 그게 바로 데이터 전처리입니다. 데이터 전처리 과정은 굉장히 중요하죠. 왜냐하면 머신러닝 자체에 미치는, 성능평가에 미치는 영향이 굉장히 크고요. 데이터 전처리를 잘 하지 않고 저희가 머신러닝을 들어가서 아무리 좋은 성능을 내더라도 사실은 유의미한 해석이 되기가 쉽지가 않거든요 그래서 데이터 전처리 과정이 여러 가지 종류가 있는데 그 종류에 맞춰서 여러분의 데이터를 전처리 하셔야 돼요 사이킷런에서 제공되고 있는 예제 데이터셋은 저희가 로드로 불러오는 데이터셋들은 이미 정제가 다 끝난 아주 클린징한 데이터들이거든요 그래서 그 데이터를 가지고는 굉장히 좋은 성능 평가를 저희가 보일 수 있는데 여러분이 갖고 있는 데이터들은 그렇게 클린징한 데이터가 아닐 가능성이 굉장히 높기 때문에 지금 저희가 진행하는 데이터 전처리 과정에 해당되는 부분들을 충실하게 하신 다음에 머신러닝 알고리즘을 적용하시길 바랍니다 머신러닝 지도학습의 프로세스 과정을 잠깐 살펴보면요 처음에 저희가 데이터 전처리를 먼저 작업을 해요 그리고 나서 전처리된 데이터를 가지고 데이터 셋을 분리하는데요 이걸 거꾸로 하셔도 상관없어요. 데이터셋을 먼저 분리하시고 전처리를 하셔도 상관없습니다. 왜냐하면 정답 레이블은 건드릴 필요가 없다면 앞에 있는 트레인 데이터 있잖아요. 트레인 데이터만 가지고 저희가 건드릴 것이기 때문에 그래서 이 두 단계는 어느 게 먼저 와도 상관없어요. 대신에 이런 데이터 전처리 과정이 일단 끝나고 나서 저희가 얘기하는 머신러닝의 알고리즘을 적용시키는 핏 과정이 들어오셔야 돼요. 저희가 아까 얘기했던 지도학습인지 비지도학습인지 해당되는 이 알고리즘을 여기서 적용시키는 거고요. 그리고 나서 이 적용시키는 알고리즘 토대로 저희가 예측을 하는 거죠. predict를 해서 그걸 평가를 하는 과정을 전반적으로 가지고 있습니다. 그러면 앞에 있는 거를 다시 한번 살펴보시면 전처리 과정을 저희가 계속 공부를 하는 단원이기 때문에 전처리에 대해서 다시 한번 말씀드리면 전처리 종류는 굉장히 많아요. 굉장히 많고 이 단계를 다 거치셔도 여러분들이 좋은 데이터를 얻기 위해서는 굉장히 여러가지 과정을 거쳐야 되기 때문에 일단은 데이터 클렌징 작업이 있어야 돼요 그래서 데이터를 쳐다보시고 오류 상황이나 이런 것들 다 체크를 먼저 하시는 게 가장 중요하겠죠 두 번째는 이 사이킷런은 null 값을 안 받아요 다시 말하면 저희가 낫 어 넘버라고 해서 NaN 값이 있었잖아요 결측치 또는 결손값이라고 얘기하는 부분을 사이킷런이 받아들이질 않아요 그래서 저희가 이제 핏 하시려면 핏 하기 전에 반드시 null 처리를 하셔야 되거든요 이런 결손값 처리를 하시고 나서 사이킷런을 돌리셔야 정상적으로 돌아가요 안 그러면 돌아가지 않으니까 결손값 처리를 반드시 해주셔야 되고요 또 하나 해줘야 되는 게 데이터 인코딩이에요 또 사이킷런이 뭘 받아들이지 못하냐면 숫자는 받아들여서 나름대로 성능평가를 하는데요 알고리즘을 돌릴 수 있는데 문자인 경우에는 사이킷런 자체가 머신러닝 자체가 받질 않아요 그래서 해당이 안 되는 거죠 머신러닝을 돌릴 수가 없는 거죠 그럼 문자인 데이터는 어떻게 하느냐? 문자인 데이터는 카테고리컬한 데이터이면 즉 범주형 데이터면 코드값으로 저희가 바꾸는 거예요. 그게 바로 데이터 인코딩에 해당되는 부분이고 레이블 인코딩 또는 원핫 인코딩을 통해서 데이터 인코딩을 해주셔서 그러고 나서 머신러닝에 집어넣으셔야 되는 부분이 좀 있고요. 또 한 가지는 저희가 해줘야 되는 게 피처 스케일링과 정규화인데요. 저희들이 갖고 있는 피처, 다시 말하면 칼럼 또는 변수 이런 변수들이 여러 가지 변수를 가지고 저희가 머신러닝을 진행하기 때문에 그 피처들의 단위가 서로 달라요 예를 들면 키와 몸무게가 칼럼으로 들어가 있다고 생각할게요 피처로 그러면 키 같은 경우에는 cm가 단위고 그 다음에 몸무게 같은 kg이 단위잖아요 그러니까 두 개의 단위를 비교를 못하는 거예요 단위가 아예 다르니까 그래서 그런 걸 좀 맞춰주는 작업을 하셔야 돼요 범위를 그런 걸 저희가 이제 피처 스케일링과 정규화라고 얘기를 하는데 표준화라는 방법도 있고 정규화라는 방법도 있어요 그래서 두 가지 중에 하나에 해당된 데이터에 맞게 저희가 그 범위를 조정 좀 하셔야 되구요 그리고 데이터 전처리 과정에서 이상치 제거라 그래서 이상치는 정말 그 우리 범위에 벗어난 값이거든요 이상치가 굉장히 악영향을 많이 미쳐요 그래서 이상치가 있다면 이상치를 걷어내거나 또는 뭐 평균으로 대체하거나 이런 방법을 쓰셔서 이상치를 제거한 다음에 머신러닝을 진행하셔야 되구요 좀 더 적극적으로 저희가 데이터 전처리를 한다고 하면 여러분 업무에 대해서 여러분 업무 잘 아시니까 여러분 도메인이나 여러분 업무에서 피처들을 몇 개 받았어요 20개쯤 피처를 가지고 있는데 그중에 그 피처들을 가공해서 새로운 피처를 만드는 거죠 그거는 사실은 도메인 지식이 있으셔야 가능한 부분이긴 하지만 저희가 좀 잘 들여다보면 좀 유의미한 아주 의미가 있는 새로운 피처를 만들 수가 있거든요 그런 피처를 만드는 전반적인 가공처리를 피처 엔지니어링을 한다 라고 얘기하는 부분도 좀 있어요 또 필요없는 피처를 버리기도 하고요 가공처리 내지는 선택하는 것들을 피처 엔지니어링이라고 얘기도 합니다 이런 전처리 과정을 전반적으로 거치고 난 다음에 그리고 나서 저희가 이 핏을 다시 말하면 정확히 말하는 저희가 지도학습, 비지도학습에 해당되는 사이킷런이 준비하고 있는 모델 쪽으로, 알고리즘 쪽으로 집어넣으셔야 돼요. 그래서 지금 과정은 이 전처리를 어떻게 할지에 관한 부분들을 이 단원에서 공부하도록 하겠습니다. 데이터 전처리 과정은 머신러닝 알고리즘 만큼 중요한데요. 사실은 머신러닝 알고리즘은 사이킷런이 제공되고, 사이킷런이 제공하고 있는 패키지 안에 다 있잖아요. 사실은 저희가 지도학습, 비지도학습 이렇게 나눠서 알고리즘을 선택하는 거지 직접 만드는 게 아니에요. 그런데 데이터는 저희가 갖고 있잖아요. 저희가 갖고 있는 업무에 관련된 데이터를 가져다가 머신러닝에 집어넣어야 되는데 이 데이터 자체가 클린하지 않아요. 데이터 자체가 머신러닝에 적절한 데이터가 아니에요. 그런 경우에는 머신러닝에 아무리 좋은 알고리즘을 돌려도 저희가 원하는 그런 예측이나 이런 게 되기가 힘들다는 거죠. 그렇다면 결론은 뭐냐면 저희 입장에서 사이킷런은 머신러닝 알고리즘을 아예 제공해 주니까 머신러닝 알고리즘에 집어넣을 정도의 클린한 데이터가 저희가 필요한 거죠. 그렇게 보면 우리 입장에서는 사실 머신러닝을 배우고 또 머신러닝을 활용한다는 것은 데이터 전처리를 얼마만큼 잘 하느냐와 똑같다고 저는 생각을 하거든요 그래서 저희가 흔히 이제 컴퓨터 용어로 가비지 인 가비지 아웃이라고 얘기하는 부분이 있어요 그래서 가비지는 쓰레기란 뜻이죠 그래서 쓰레기 같은 데이터가 들어오면 쓰레기 같은 결과가 나올 수밖에 없어요 그래서 저희가 머신러닝이라는 알고리즘에 지도학습 비지도학습 알고리즘에다가 데이터를 넣을 때 정말 클린한 데이터 또는 그 저희가 의도하고자 하는 그런 그 알고리즘에 적절한 데이터를 넣으시는 굉장히 중요한 작업이에요. 전처리 과정들을 앞으로 머신러닝을 선택하시는 것보다 또 머신러닝 알고리즘 공부하시는 것보다 전처리 과정에 많은 시간을 아마 여러분이 분명히 쓰시게 되면 좋은 머신러닝의 전체적인 예측이 이루어질 수 있다고 저는 보거든요 그래서 데이터 전처리를 반드시 꼼꼼하게 하나 둘 보시고요 그리고 우리가 머신러닝 알고리즘을 선택해서 적용하셔야 된다고 저는 생각해요 데이터 전처리 종류는 크게 보시면 데이터 자체가 에러가 있고 오류가 있는 걸 그대로 집어넣지 마시고 잘 살펴야 되는 클렌징 작업이 있고요 두 번째는 아까 말씀드렸듯이 머신러닝 자체가 결손돼 있다 다시 말하면 결손 데이터를 처리하는 일을 해주셔야 돼요 0으로 대체하거나 아니면 결손값, 결측값이 있는 행을 아예 삭제를 하거나 이런 처리를 해주셔야 되는 거죠 처리를 해주시고 들어가셔야 되고요 그 다음에 해야 되는 또 전처리의 종류 중에 하나가 데이터 인코딩이에요 아까도 말씀드렸지만 머신러닝이 다 좋긴 한데 사이킷런이 뭐를 받아들이지 못하냐면 문자열을 문자열에 대한 처리를 못해요 그러면 저희가 갖고 있는 게 사실은 그 피처 자체가 문자열인 경우도 있잖아요 뭐 제품의 종류랄지 이런 것들은 뭐 냉장고 세탁기 이런 것들은 문자열이잖아요 그 문자열 처리를 어떻게 해야 되냐면 범주형 데이터 하면 코드로 바뀌어야 돼요 우리가 말하는 뭐 예를 들면 냉장고는 0번으로 할 거야 뭐 TV는 1번으로 할 거야 이런 식으로 범주형 코드로 바꾸셔야 돼요 그 작업을 저희가 이제 레이블 인코딩 한다라고 얘기를 하는 거고요 이 범주형을 바꾸는 이 레이블 인코딩도 좀 문제가 있거든요 사실은 조금 뒤에서 말씀드리겠지만 그래서 우리가 그런 문제점을 해결하려고 이제 원핫 인코딩 작업도 하게 되죠 그리고 해야 되는 전처리 종류 중에 하나가 피처 스케일링이거든요 피처 스케일링이라는 것은 피처의 단위를 맞춰주는 다시 말하면 범위를 맞춰주는 작업을 하는데 표준화하고 정규화 작업이 있습니다 그리고 이상치도 제거를 해야 돼요 이상치 제거라는 것은 범위에 저희가 이제 최솟값, 최댓값 이렇게 잡잖아요. 근데 그 범위에서 벗어난 값이에요. 근데 이상치가 전반적인 머신러닝의 성능에 굉장히 악영향을 미치고 있기 때문에 반드시 이상치를 쳐다보시고 이상치를 제거하고 조절하고 그러고 들어가셔야 돼요. 그런 부분도 전처리 종류 중에 들어가고요. 아까 말씀드렸듯이 좀 더 적극적으로 도메인을 좀 잘 아신다면 새로운 기존의 피처들을 이용해서 새로운 필요없는 피처는 지우시고 정말 필요한 것만 모으는 거예요 정말 중요한 피처들만 가지고 머신러닝을 돌리면 오히려 더 전체의 피처를 가지고 돌리는 것보다 효과가 더 좋을 수가 있거든요 그래서 중요한 걸 선택하는 거예요 선택하고 그리고 나서 또 필요하다면 기존의 피처들을 이용해서 새로운 피처를 만드는 거죠 가공 처리 과정도 저희가 거칠 수가 있어요 이 모든 과정들 저희가 전처리 과정이라 하는 거고요 전처리 과정을 반드시 거치셔야 우리가 말하는 머신러닝의 좋은 효과, 예측의 효과를 저희가 가져온다고 보장할 수 있기 때문에 전처리를 꼼꼼하게 다뤄 보셔야 됩니다

이 강좌의 강의

  • 머신러닝 실무 과정 설명
  • 파이썬 개발환경과 주요 패키지 소개
  • 파이썬 기본 개발환경 구축 및 환경테스트
  • 주피터 노트북 개발환경 구축
  • 주피터 노트북을 활용한 파이썬 프로그래밍 입문
  • 파이썬 프로그래밍 Overview
  • 파이썬 기본 지식 정리1맛보기
  • 파이썬 기본 지식 정리2
  • 파이썬 자료구조 핵심정리_설명
  • 파이썬 자료구조 핵심정리_실습1
  • 파이썬 자료구조 핵심정리_실습2
  • 파이썬 함수와 모듈 핵심정리
  • 파이썬 데이타분석 핵심 패키지 정리맛보기
  • 파이썬 고성능 수치 계산 패키지_Numpy 핵심정리
  • 파이썬 고성능 수치 계산 패키지_Numpy 활용_핵심실습1
  • 파이썬 고성능 수치 계산 패키지_Numpy 활용_핵심실습2
  • 파이썬 고성능 수치 계산 패키지_Numpy 활용_핵심실습3
  • 파이썬 데이터 핸들링 패키지_Pandas 핵심정리
  • 파이썬 데이터 핸들링 패키지_Pandas 활용_핵심실습1
  • 파이썬 데이터 핸들링 패키지_Pandas 활용_핵심실습2
  • 파이썬 데이터 핸들링 패키지_Pandas 활용_핵심실습3
  • 파이썬 데이터 핸들링 패키지_Pandas 활용_핵심실습4
  • 파이썬 데이터 핸들링 패키지_Pandas 활용_핵심실습5
  • 파이썬 데이터 핸들링 패키지_Pandas 활용_핵심실습6
  • 파이썬 데이터 핸들링 패키지_Pandas 활용_핵심실습7
  • 파이썬 데이터 시각화 패키지_Matplotlib Seaborn 활용_핵심정리
  • 파이썬 데이터 시각화 패키지_Matplotlib 활용_핵심실습
  • 파이썬 데이터 시각화 패키지_Seaborn 활용_핵심실습1
  • 파이썬 데이터 시각화 패키지_Seaborn 활용_핵심실습2
  • 파이썬 머신러닝을 활용한 문제해결_핵심정리
  • 파이썬 머신러닝_지도학습 비지도학습_강화학습_핵심정리
  • 파이썬 머신러닝_분류 추정 차원축소 군집화 연관성 규칙_핵심정리
  • 파이썬 머신러닝_지도학습 모델타입_핵심정리
  • 파이썬 머신러닝_지도학습_예시
  • 파이썬 머신러닝_비지도학습_예시
  • 파이썬 머신러닝_핵심 용어 정리
  • 파이썬 머신러닝_핵심 프로세스 정리맛보기
  • 파이썬 머신러닝_사이킷런의 지도 학습_실행 모델 정리
  • 파이썬 머신러닝_사이킷런의 비지도 학습_실행 모델 정리
  • 파이썬 머신러닝 패키지_사이킷런_소개와 특징
  • 파이썬_머신러닝 패키지_사이킷런_주요 모듈 및 기능 정리
  • 파이썬_머신러닝 패키지_사이킷런_Estimator 클래스 정리
  • 파이썬_머신러닝 패키지_사이킷런_비지도학습 프레임워크
  • 파이썬_머신러닝 패키지_사이킷런_실무 주요 모듈 정리
  • 파이썬 머신러닝 패키지_사이킷런_예제 데이터 셋 구조 정리
  • 파이썬 머신러닝_Model Selection 모듈_핵심정리
  • 파이썬 머신러닝_Model Selection 모듈 활용_핵심실습1
  • 파이썬 머신러닝_Model Selection 모듈_교차검증 핵심정리
  • 파이썬 머신러닝_Model Selection 모듈_교차검증 핵심실습
  • 파이썬 머신러닝_Model Selection 모듈_iris 데이타셋 교차검증_사례실습
  • 파이썬 머신러닝_일반화의 오류_UnderFitting 및 OverFitting 핵심정리
  • 파이썬 머신러닝_데이터 전처리_핵심정리재생 중
  • 파이썬 머신러닝_데이터 전처리_결측치 처리 핵심정리
  • 파이썬 머신러닝_데이터 전처리_결측치 처리 핵심실습
  • 파이썬 머신러닝_데이터 전처리_피처 스케일링과 정규화 핵심정리
  • 파이썬 머신러닝_데이터 전처리_피처 스케일링과 정규화 핵심실습
  • 파이썬 머신러닝_데이터 전처리_데이터 인코딩 핵심정리
  • 파이썬 머신러닝_데이터 전처리_레이블 인코딩 핵심실습
  • 파이썬 머신러닝_데이터 전처리_원핫인코딩 핵심정리
  • 파이썬 머신러닝_데이터 전처리_원핫인코딩 핵심실습
  • 파이썬 머신러닝_데이터 전처리_건강진단 데이터 실전사례
  • 파이썬 머신러닝_주요 알고리즘_Regression 핵심정리1
  • 파이썬 머신러닝_주요 알고리즘_Regression 핵심정리2
  • 파이썬 머신러닝_주요 알고리즘_단순선형회귀와 다중선형회귀 핵심정리
  • 파이썬 머신러닝_주요 알고리즘_회귀 모델 평가 핵심정리
  • 파이썬 머신러닝_주요 알고리즘_주택가격예측 회귀모델 사례실습
  • 파이썬 머신러닝_주요 알고리즘_statsmodels 라이브러리 활용 회귀모델 핵심실습
  • 파이썬 머신러닝_주요 알고리즘_Classification 핵심정리
  • 파이썬 머신러닝_주요 알고리즘_최근접이웃 Knn 핵심정리
  • 파이썬 머신러닝_주요 알고리즘_최근접이웃 Knn 핵심실습
  • 파이썬 머신러닝_주요 알고리즘_Decision Tree 핵심정리
  • 파이썬 머신러닝_주요 알고리즘_Decision Tree 핵심실습
  • 파이썬 머신러닝_주요 알고리즘_분류 앙상블 모형 핵심정리
  • 파이썬 머신러닝_주요 알고리즘_분류 앙상블 모형 핵심실습
  • 파이썬 머신러닝_주요 알고리즘_모델 평가방식 핵심정리
  • 파이썬 머신러닝_주요 알고리즘_모델 평가방식 핵심실습
  • 파이썬 머신러닝_주요 알고리즘_K Means Clustering 핵심정리
  • 파이썬 머신러닝_주요 알고리즘_K Means Clustering_와인데이터세트 실전사례
파이썬 머신러닝
파이썬 머신러닝강좌 자세히 보기