전체보기 106

머신러닝 프로젝트 - 6.나만의 변환기, 변환 파이프라인

들어가며 사이킷런의 설계철학을 다루면서 추정기, 변환기, 예측기 등을 설명했습니다. 이번에는 직접 나만의 변환기를 만들어 볼 시간입니다. 설계철학에서 언급하는 변환기의 특징을 준수하면서 3. 데이터 탐색 글에서 언급했던 3.4 새로운 특성 추가에서 수동으로 진행했던 것을 별도의 변환기로 만들어 진행하고 변환 파이프라인을 통해서 지금까지 수동으로 정제했던 과정들을 한번에 실행할 수 있도록 하겠습니다. 수동으로 정제했던 과정들 1. 누락된 데이터 정제 2. 새로운 특성 추가 3. 텍스트와 범주형 특성 다루기 나만의 변환기 사이킷런은 기본적으로 유용한 모듈들을 제공하지만 특별하게 데이터를 정제하거나 특성을 조합하기 위해서는 나만의 변환기를 만들어야 합니다. 사이킷런은 클래스 상속을 사용하지 않고 *duck t..

Machine Learning 2020.03.04

머신러닝 프로젝트 - 5. 텍스트와 범주형 특성 다루기

들어가며 지난 글 4. 데이터 정제에서는 누락된 값을 처리하는 방법에 대해서 다루어 보았습니다. 이번에는 숫자형 데이터가 아닌 텍스트 형식의 데이터 및 범주형 특성을 정제하는 방법에 대해서 설명하도록 하겠습니다. 텍스트와 범주형 특성 다루기 대부분의 머신러닝 알고리즘은 숫자형을 다루므로 우선 카테고리를 숫자에 매핑하여 표현하도록 합시다.pandas의 factorize() 메서드는 문자열 범주형 특성을 머신러닝 알고리즘이 다루기 쉬운 숫자 범주형 특성으로 변환시켜 줍니다 https://colab.research.google.com/drive/1wWaPMCEb3ewf3CNKIeu262vQaCG36apw#scrollTo=y3BZex4cO67p&line=1&uniqifier=1 Google Colaborator..

Machine Learning 2020.03.04

머신러닝 프로젝트 - 사이킷런의 설계철학

들어가며 지난 글에서 데이터 정제구간에서 사이킷런의 imputer를 사용하여 데이터셋을 갱신했습니다. 여기서 잠깐동안 사이킷런의 설계철학에 대해서 짚고 넘어가도록 하겠습니다. 1. 일관성 모든 객체가 단순하고 일관된 인터페이스를 제공합니다.(대부분 같은 함수나 파라미터를 사용합니다.) 추정기(estimator) : 데이터셋을 기반으로 일련의 모델 파라미터들을 추정하는 객체를 추정기라고 합니다. (ex.imputer는 데이터셋을 기반으로 누락된값을 추측하는 추정기입니다.) 추정자체는 fit() 메서드에 의해 수행되고 하나의 매개변수로 하나의 데이터셋만 전달합니다.(단, 지도학습에서는 레이블 때문에 두 개의 파라미터를 받습니다.) 변환기(transformer) : 데이터셋을 변환하는 추정기를 변환기라고 합니..

Machine Learning 2020.03.04

머신러닝 프로젝트 - 4.1 데이터 정제(누락된 데이터 다루기)

들어가며 지난 글까지 우리는 데이터를 탐색하는 과정을 거쳐 데이터를 정제할 필요성을 몇가지 알아보았습니다. 이번에는 실제로 데이터를 정제해보도록 하겠습니다. 데이터 준비하기과정에서 데이터 타입을 알아보며 total_bedrooms특성에 일부 null값이 존재하여 누락된 경우가 있습니다. null값을 모델에 그대로 학습시키면 오류가 발생하기에 이를 정제하는 방법에 대해서 알아봅시다. 4.1.1 해당 구역 전체 제거 dropna() 메서드를 사용하면 null값이 포함된 구역을 간단하게 제거 할 수 있습니다. https://colab.research.google.com/drive/1wWaPMCEb3ewf3CNKIeu262vQaCG36apw#scrollTo=bQghNsmruBUG&line=2&uniqifier=..

Machine Learning 2020.03.04

머신러닝 프로젝트 - 3. 데이터 탐색(피어슨의 상관계수),시각화, 특성 조합

들어가며 지난 글에서 데이터 스누핑이 일어나지 않기 위해 테스트 데이터를 추출하는과정을 진행했습니다. 이번에는 모델을 구상하기위해서 훈련 데이터만을 가지고 데이터에 대해 깊게 탐색해보도록 합시다. 훈련 데이터만을 가지고 탐색하는 것 또한 데이터 스누핑을 피하기 위해서 입니다. 만약 테스트 세트로 탐색을 할 경우 개발자는 데이터에 최적화된 알고리즘을 적용하려고 하므로 과대적합이 발생할 수 있기 때문입니다. 3.1 지리적 데이터의 시각화 경도와 위도에 대한 정보를 바탕으로 데이터를 산점도로 표현하여 지리적 데이터를 시각화 해봅시다. https://colab.research.google.com/drive/1wWaPMCEb3ewf3CNKIeu262vQaCG36apw#scrollTo=aroTxF3Ja5mD&lin..

Machine Learning 2020.03.01

머신러닝 프로젝트 - 계층적 샘플링(stratified sampling)

들어가며 지난 글에서는 최종적으로 해쉬를 이용해서 테스트 세트를 추출하는 방법을 알아보았습니다. 훈련이 잘 진행되기 위해서는 샘플링(추출)된 데이터의 분포가 기존의 데이터 분포와 유사해야 합니다. 이를 위해 계층적 샘플링을 사용할 수 있습니다. 계층이란? 계층은 전체모수를 동질의 그룹으로 나누는 기준입니다. 계층적 샘플링이 필요한 이유? 모델을 학습시키거나 테스트를 할 때 사용되는 데이터가 편향적으로 전체 모수에서 추출된 경우 학습의 일반화가 제대로 진행되지 않기 때문에 전체 모수를 계층에 따라 나누고 추출된 데이터가 각 계층을 대표하도록 하여 편향을 방지하기 위해서입니다. 예시 기존의 설루션을 담당하는 전문가가 주택 중간 가격은 중간 수입과의 관계가 중요하다고 합니다. 중간수입과의 관계에 대해서 잘 학..

Machine Learning 2020.02.29

머신러닝 프로젝트 - 2. 테스트 세트 추출하기

들어가며 지난 글에서는 모델을 구축하기 위한 주택 관련 데이터들을 다운로드하고 간단하게 데이터를 살펴보고 어떻게 데이터를 다룰지 알아보았습니다. 이번에는 데이터를 훈련 세트와 테스테 세트로 나누는 다양한 방법과 장단점에 대해서 설명하도록 하겠습니다. 2.1 테스트 세트를 만드는 이유 모델에 데이터를 훈련시키기 전에 주어진 데이터에서 테스트 세트를 추출하는 이유는 두 가지입니다. 첫째, 훈련 데이터로 학습된 모델을 평가하기 위해서입니다. 훈련 모델로만 학습된 모델이 얼마나 일반화되어있는지 평가하기 위해서는 훈련 데이터와 다른 데이터가 필요합니다. 둘째, 데이터 스누핑 편향(data snooping bias)을 방지하기 위해서 입니다. 만일 개발자가 모든 데이터를 이용해서 모델을 학습시키고 평가하여 정확도를..

Machine Learning 2020.02.29

머신러닝 프로젝트 - 1. 데이터 준비하기

들어가며 앞서 머신러닝을 위한 기본적인 상식과 구조에 대해서 알아보았습니다. 이번에는 실제 데이터를 이용해서 모델을 구축하는 과정에 대해서 설명하겠습니다. 이제부터 여러분이 머신러닝 개발자로서 주식회사에서 투자를 위한 캘리포니아 주택 가격 예측모델 제작 의뢰를 받았다고 가정하고 진행해보도록 하겠습니다. 1. 기본적인 준비 앞으로 모델을 구축하기 위해서는 colab을 사용할 것입니다. colab은 클라우드 기반으로 작업을 수행하기 때문에 공유하기도 쉽고 각자 컴퓨터의 기능에 구애받지 않기에 선택했습니다. colab을 사용하기 위한 방법은 구글링을 하시면 쉽게 알 수 있습니다. 1.1 설정 모델 구축을 위해서 공통 모듈을 임포트 하는 등 기본적인 설정을 위한 코드입니다. 제일 먼저 실행하시면 됩니다. 1 2..

Machine Learning 2020.02.28

머신러닝 프로젝트 개발 과정 - 0. 문제 정의

1. 비즈니스 목적 정의 첫 번째로 생각해야 할 것은 완성된 시스템의 비즈니스 목적이 무엇인지 알아야 합니다. 목적에 따라서 문제를 어떻게 구상할지, 어떤 알고리즘을 선택하고 어떤 성능지표를 사용할지 결정할 수 있기 때문입니다. 예를 들어 캘리포니아 구역의 데이터(인구수, 위치, 중간소득 등)를 받아서 해당 구역의 주택 가격을 예측하는 프로그램을 작성한다고 생각해봅시다. 파이프라인이란? 데이터 처리 컴포넌트(하나의 시스템)들이 연속되어 있는 것을 데이터 파이프라인이라고 합니다. 각각의 컴포넌트들을 결괏값을 도출하는데 소비되는 시간이 다릅니다. 따라서 각 컴포넌트는 비동기적으로 작동하게 되는데 이를 해결하기 위해서 파이프 라인을 사용합니다. 각 컴포넌트 사이에는 컴포넌트들의 결과값을 출력하여 DB에 저장하..

Machine Learning 2020.02.18

머신러닝 시스템의 종류( 지도, 비지도, 준지도, 강화, 배치/온라인, 사례/모델기반)

지도학습(supervised learning) 정의 머신러닝을 통해서 프로그램을 만들기 위해서 데이터의 샘플과 레이블(부가정보)을 주어 학습시키는 것을 의미합니다. 레이블을 쉽게 설명하자면 샘플의 부가정보이자 추후 새로운 데이터에서 알아내고 싶은 목표치입니다. 예를 들어 신발 매장에 가면 신발들(샘플)에는 가격표(레이블)가 하나씩 달려있는 것처럼 말이죠. 레이블에는 가격뿐만 아니라 신발의 사이즈, 바코드 등이 적혀있듯이 하나의 샘플에도 여러개의 레이블을 표시할 수 있습니다. 지도학습의 목표는 수많은 샘플&레이블 정보를 머신러닝 모델에 학습시켜 추후, 모델에 새로운 샘플 데이터가 들어왔을 때 레이블 정보를 예측하는 것입니다. 위와 똑같이 신발을 통해서 예시를 들자면 사람(머신러닝 모델)에게 수많은 샘플(신..

Machine Learning 2020.02.15