Supervised Learning - 특정 input에 대해 정답(Label) output이 있는 데이터 셋이 주어지는 경우. Regression : continuous(연속) output을 추정하는 문제 집값 예측의 예시에서, input은 집의 넓이 output으로 집값이다. 사전에 집의 넓이와 그 집의 가격을 조사해서 그 정보를 사용하므로 supervised learning이고 output에 해당하는 집값을 연속값을 가지므로 regression 문제 종양이 악성인지 양성인지 진단하는 문제. 사전에 종양의 크기와, 진단 결과(악성/양성)정보를 이용하므로 supervised learning. output에 해당하는 진단 결과가 악성/양성으로 discrete category이므로 classfication..
머신러닝 검색 결과
이전에 포스팅에서도 봤듯이, 적절한 회귀 계수를 가지는 것이 매우 중요하다. 회귀 계수가 너무 낮다면, 데이터들을 충분히 표현하지 못하는 회귀선이 만들어지게 되고, 회귀 계수가 지나치게 높다면, 학습 데이터에만 너무 치중이 되어 과적합 문제를 일으킨다. 그렇다면, 적절한 회귀 계수를 어떻게 찾을 수 있을까? 그렇다면, 어느 회귀선이 데이터를 가장 '적절하게' 표현하는 지에 대한 기준이 명확하게 존재해야 한다. 하지만, 일반적인 통념에 의존하여 우리는 '적절하다'를 표현하고, 어느 회귀선이 다른 회귀선들보다 절대적으로 더 낫다.라는 개념은 없다. 그렇기 때문에, 우리는 '적절한' 회귀선을 찾을 수 있는 방안에 대해서 여러가지(여기에서는 3가지 - 릿지, 라쏘, 엘라스틱넷)가 존재하는 것이다. 다시 앞으로 ..
(카테고리는 Kaggle이지만, 데이터를 분석하는 과정을 실습하는 과정이므로, 해당 카테고리에 포스팅하게 되었다.) 데이터 다운로드 주소는 https://archive.ics.uci.edu/ml/datasets/Human+Activity+Recognition+Using+Smartphones UCI Machine Learning Repository: Human Activity Recognition Using Smartphones Data Set Human Activity Recognition Using Smartphones Data Set Download: Data Folder, Data Set Description Abstract: Human Activity Recognition database buil..
회귀 이전 포스팅에서 설명한 회귀의 형태는 y = w_0 * x_0 + .... + w_n * x_n 이었다. 이것은 점들의 관계를 직선으로 표현하는 식이다. 하지만, 모든 현상을 직선으로 표현하는 것이 최선은 아니다. 어느 경우에는 조금 더 복잡하게 하는 경우에 최적의 회귀선을 나타내는 것일수도 있다. 이런 것을 표현하기 위해 다항회귀를 사용한다. 여기에서 "독립변수"가 단항식(x_0 ... x_n)이 아닌 2차, 3차로 표현되는 것을 다항(Polynomial) 회귀라고 한다. 다항이라는 것은 x_0, x_1, x_0 * x_1, (x_0)^2, (x_1)^2 .... 이라고 생각하면 된다. "독립변수"라는 것을 강조한 이유는 다항회귀면 비선형회귀여야 하는 것이라는 것에 대한 오해를 풀기 위해서이다. ..
캐글에 있는 데이터로 피마 인디언 당뇨병 데이터 세트를 이용해 당뇨병 여부를 판단하는 머신러닝 예측 모델을 수립하고, 평가 지표를 이용해서 성능을 측정하며 튜닝할 것이다. 데이터는 https://www.kaggle.com/uciml/pima-indians-diabetes-database에 들어가서 다운받을 수 있다. 데이터를 다운받은 다음 성능 지표들을 임포트하고, 정규화(StandardScaler) , 로지스틱 회귀 모델을 사용할 수 있는 LogisticRegression 클래스를 임포트한다. (Numpy, Pandas, Matplotlib.pyplot은 지난 포스팅과 동일하므로 생략) import numpy as np import pandas as pd import matplotlib.pyplot a..
회귀 지도학습은 2가지 유형, 분류와 회귀로 나뉜다. 분류 - 예측값이 카테고리와 같은 이산형 값 회귀 - 예측값이 연속형 숫자 회귀는 그 중에서도 선형회귀가 가장 많이 사용된다. 선형 회귀는 직선형 회귀선을 예측값과 실제값의 차이가 가장 작게 산출되도록 가중치들을 최적화하여 찾아내는 방식을 의미한다. 단순 선형 회귀 단순 선형 회귀는 독립변수(X) 하나, 종속변수(Y)도 하나인 선형 회귀를 의미한다. 독립변수와 종속변수가 갑자기 나와서 헷갈릴 수도 있지만, 쉽게 말해 독립변수는 피처를, 종속변수는 레이블 값을 의미한다. 따라서 단순 선형 회귀는 피처가 하나인 데이터를 가장 잘 나타내는 회귀선을 찾는 기법이라고 생각하면 된다. X, Y를 좌표평면에 찍고, 그 점들을 가장 잘 표현할 수 있는 직선을 찾아내..
지난 포스팅에서는 주요 칼럼이라고 생각되는 것들과 레이블 데이터인 생존(Survived)의 관계를 시각화하는 과정까지 했다. 레이블 인코딩 이번에는 문자열로 되어있는 데이터, 즉, DataFrame에서는 object 형이라고 표현되어있는 데이터를 숫자형으로 바꿔주는 작업을 할 것이다. 이런 과정을 LabelEncoding이라고 하고, Scikit learn에서는 LabelEncoder 클래스를 통해서 구현할 수 있다. LabelEncoder 객체를 통해서 fit / transform 과정을 거치면 0 ~ (카테고리 유형 수 -1) 까지의 숫자 값으로 변환된다. from sklearn import preprocessing def encode_features(dataDF): features = ['Cabin..
캐글은 세계적인 ML 기반 분석 대회이다. 그 중에서도 타이타닉 생존자 예측은 처음 입문하는 사람들이 하는 튜토리얼이다. 캐글 사이트에서 Titanic을 검색하거나, https://www.kaggle.com/c/titanic에 들어가면 Data 카테고리에서 학습 데이터(train.csv)와 테스트 데이터(test.csv)를 다운 받을 수 있다. 다운받기 전에 로그인을 해야하니 회원가입을 먼저하고 데이터를 다운받으면 된다. 오른쪽에는 해당 데이터에 관한 간략한 정보들이 나와있는 것을 확인할 수 있다. 다운받은 파일은 파이썬 코드 파일( 주피터 노트북일 경우, 해당 .ipynb파일)이 있는 디렉토리에 csv 파일을 저장한다. 이후에 다른 파일들도 train.csv 파일들이 많이 존재하기 때문에, 구별할 수 ..
스태킹 스태킹(Stacking)이라는 기법은 전체적인 면에서는 앙상블 러닝과 같은 원리이지만, 기존의 앙상블 러닝과 조금 다른 면을 가지고 있다. 스태킹은 복수 개의 기반 학습기들이 학습 - 예측을 진행하고, 예측 데이터들을 학습 데이터로 입력 받는 메타 모델(최종 학습기라고 생각하면 이해하기 쉽다.)이 한번 더 학습 - 예측하는 방식이다. 아주 많이 사용되는 기법은 아니지만, 성능을 최대한으로 향상시키기 위해서 쓰이는 기법이다. 교차 검증 기반의 스태킹 일반 스태킹의 경우, 최종 메타 모델이 학습하는 데이터가 학습 데이터가 아닌, 테스트 데이터를 예측한 값들을 학습하기 때문에, 과적합의 문제가 발생한다. 과적합을 완화시키기 위해서 스태킹 기법과 교차검증 기법을 동시에 적용한다. CV 교차 검증에서는 여..
정렬 DataFrame과 Series를 정렬하는 데에는 .sort_values() 함수를 사용한다. 해당 함수는 DataFrame과 Series에서 특정 칼럼의 값으로 정렬을 하는 경우에 사용한다. 파라미터 : by / ascending / inplace by : 어떤 칼럼의 데이터 값을 기준으로 정렬을 할 것인지에 대해서 해당 열의 이름을 인자로 넣어준다. ascending(= True) : 디폴트 값이 True이고 True로 한다면 오름차순으로, False는 내림차순으로 정렬한다. inplace : 이전의 함수들과 동일한 역할을 하는 파라미터이므로 별도의 설명을 생략한다. import pandas as pd import numpy as np titanic_df = pd.read_csv('train.c..
최근댓글