728x90
Machine Learning
25

[앙상블] 배깅(bagging)과 부스팅(boosting)

앙상블 기법은 여러 개의 분류 모델을 조합해서 더 나은 성능을 내는 방법이다. 크게 배깅(bagging)과 부스팅(boosting)으로 나눌 수 있다. 배깅(bagging) 배깅은 비유하자면 한 명의 중급자보다 두세 명의 초급자가 나누어서 수행하는 것이 더 나은 것과 비슷하다. 여기서 중급자를 과대적합된 모델이라고 할 수 있는데 이런 과대적합이 쉬운 모델에 상당히 적합한 것이 배깅이라고 할 수 있다. 배깅은 한 가지 분류 모델을 여러 개 만들어서 서로 다른 학습 데이터로 학습(부트스트랩)시킨 후, 동일한 테스트 데이터에 대한 서로 다른 예측값들을 투표(어그리게이팅)를 통해 가장 높은 예측값으로 최종 결론을 내리는 앙상블 기법이다. 여기서 부트스트랩과 어그리게이팅에 대해 좀 더 자세히 살펴보자. 부트스트랩..

[실습] 다항분포 나이브 베이즈(Multinomial Naive Bayes)

다항분포 나이브 베이즈는 앞서 실습한 베르누이 나이브 베이즈와 비슷하다. 하지만 베르누이는 데이터의 특징이 0 또는 1로 표현되고 다항분포는 데이터의 특징이 출현 횟수로 표현된다. Import import numpy as np import pandas as pd from sklearn.feature_extraction.text import CountVectorizer from sklearn.naive_bayes import MultinomialNB from sklearn.metrics import accuracy_score 데이터 생성 영화 감상평을 데이터로 생성하여 실습해보았다. review_list = [ {'movie_review' : 'this is great great movie. I will ..

[실습]Bernoulli Naive Bayes(베르누이 나이브 베이즈)

Import import numpy as np import pandas as pd from sklearn.feature_extraction.text import CountVectorizer from sklearn.naive_bayes import BernoulliNB #베르누이 나이브 베이즈 from sklearn.metrics import accuracy_score 'CountVectorizer'에 대한 것은 사용할 때 설명하겠다. 데이터 생성 #임의의 데이터 생성 email_list = [ {'email title' : 'free game only today', 'spam' : True}, {'email title' : 'cheapest flight deal', 'spam' : True}, {'ema..

[실습] Gaussian Naive Bayes(가우시안 나이브 베이즈)

Import 다음과 같이 필요한 라이브러리를 임포트한다. import pandas as pd from sklearn.datasets import load_iris from sklearn.model_selection import train_test_split #가우시안 나이브 베이즈 from sklearn.naive_bayes import GaussianNB from sklearn import metrics from sklearn.metrics import accuracy_score 데이터 불러오기 각 데이터 속성의 뜻은 다음과 같다. sepal length : 꽃받침 길이 sepal width : 꽃받침 너비 petal length : 꽃잎 길이 petal width : 꽃잎 너비 target : 붓꽃의..

나이브 베이즈(Naive Bayes)

나이브 베이즈 알고리즘은 대표적인 확률 기반 머신러닝 분류 알고리즘이다. 나이브 베이즈는 데이터를 독립적인 사건으로 보고 이 사건들을 베이즈 이론에 대입시켜 가장 높은 확률의 레이블을 분류해낸다. 베이즈 이론은 다음과 같은 공식으로 표현된다. P(A|B) : 어떤 사건 B가 일어났을 때 사건 A가 일어날 확률 P(B|A) : 어떤 사건 A가 일어났을 때 사건 B가 일어날 확률 P(A) : 어떤 사건 A가 일어날 확률 P(A|B)와 같이 어떤 사건 B가 일어났을 때 사건 A가 일어날 확률을 조건부 확률이라고 한다. 조건부 확률의 공식은 다음과 같다. 머신러닝에서의 나이브 베이즈 공식 P(레이블 | 데이터 특징) = P(데이터 특징 | 레이블) * P(레이블) / P(데이터 특징) 어떤 데이터가 있을 때 그..

[실습]의사결정 트리(Decision Tree)

의사결정 트리를 사용하여 데이터 분류를 수행할 것이다. 데이터는 서울의 시군구, 읍면동을 사용하였고 강서, 강동, 강북, 강남으로 분류하는 작업을 실습해보았다. 데이터 불러오기 서울의 시군구 데이터는 시군구 데이터, 읍면동 데이터는 읍면동 데이터에서 가져올 수 있다. 2021.07.16부터 제공되지 않는다고 한다. import pandas as pd train_df = pd.read_csv('./drive/MyDrive/district_dict_list.csv') test_df = pd.read_csv('./drive/MyDrive/dong_dict_list.csv') train_df.head() [출력] district_dict_list.csv, dong_dict_list.csv 파일은 미리 정제(cl..

의사결정 트리(decision tree)

의사결정 트리는 데이터 분류 및 회귀에 사용되는 지도학습 알고리즘이다. 간단하게 의사결정 트리가 무엇인지 비유하자면 스무고개 놀이와 비슷하다고 말할 수 있다. 즉, 여러 질문을 하여 답을 도출해내는 방법이라고도 할 수 있다. 다음과 같은 데이터를 예시로 설명을 이어가겠다. 이름 군대를 다녀왔는가 긴 생머리인가 성별 김덕수 네 아니요 남자 이쁜이 아니요 아니요 여자 박장군 네 아니요 남자 최빛나 아니요 네 여자 최강민 네 아니요 남자 지화자 아니요 아니요 여자 위 데이터를 바탕으로 각 사람이 남자인지 여자인지를 구별하는 질문을 만든다고 해보자. 먼저 군대를 다녀왔는지를 먼저 물어보면 한 번에 남자와 여자가 분류된다. 하지만 긴 생머리인지 먼저 물어보게되면 정확하게 남자와 여자를 구분할 수 없으므로 이후 군..

[실습]SVM(Support Vector Machine)

먼저 csv파일을 불러오고 train 데이터와 test 데이터를 나눠주겠다. 데이터 불러오기 import pandas as pd df = pd.read_csv("./drive/MyDrive/basketball_stat.csv") #구글 드라이브 내에 있는 파일을 불러옴 df.head() 데이터 분리 from sklearn.model_selection import train_test_split #80%는 학습 데이터, 20%는 테스트 데이터로 분리 train, test = train_test_split(df, test_size=0.2) #학습 데이터, 테스트 데이터 개수 확인 print(train.shape[0]) print(test.shape[0]) 최적의 SVM 파라미터 찾기 이제 불러온 데이터를 RB..

SVM(Support Vector Machine)

우선 SVM에 대해서 간략하게 설명하자면 SVM은 '마진'이라는 값을 최대로 하는 결정 경계선을 찾는 것을 목표로하는 분류 알고리즘이다. 결정 경계선이라는 것은 예를 들어서 한강을 기준으로 강북과 강남으로 나뉘어진다고 했을 때 한강이 결정 경계선이 되는 것이다. 이제 다음과 같은 용어들의 개념을 하나씩 알아보겠다. 서포트 벡터(support vector) 마진(margin) 비용(cost) 커널 트릭(kernel trick) 서포트 벡터 서포트 벡터는 결정 경계선과 가장 가까이 맞닿은 데이터 포인트를 의미한다. 결정 경계선하고 가장 가까운 데이터의 위치라고도 할 수 있겠다. 마진 서포트 벡터와 결정 경계 사이의 거리를 마진이라고 한다. 위에서도 언급했듯이 이 '마진'을 최대로..

[실습] k-최근접 이웃(k-Nearest Neighbor, kNN)

[https://github.com/wikibook/machine-learning]에서 다운로드 받은 농구선수에 대한 데이터를 사용하여 kNN 알고리즘을 적용해보는 실습을 하였다. 목표는 임의의 농구선수의 포지션을 예측하는 것이다. 데이터 획득 import pandas as pd df = pd.read_csv(./data/basketball_stat.csv) df.head() colab에서 실행하였고 파일을 드라이브에 넣었기 때문에 경로를 "./data/basketball_stat.csv"로 지정해준 것이다. [출력] 각 데이터 속성 값의 의미는 다음과 같다. Player = 선수 이름 Pos = 포지션 3P = 한 경기 평균 3점슛 성공 횟수 2P = 한 경기 평균 2점슛 성공 횟수 TRB = 한 경기..

728x90