목록전체 글 (408)
오답노트
Partial Dependence Plots 관심 Feature의 값이 변할때, 모델에 미치는 영향을 시각화한다. 데이터 셋의 모든 row에 관심 Feature 모든 값을 돌면서 하나로 통일하고 예측한다. 그 값들의 평균을 계산한다. from sklearn.inspection import plot_partial_dependence var = 'rm' plt.rcParams['figure.figsize'] = 12, 8 plot_partial_dependence(model, features = [var], X = x_train, kind = 'both') plt.grid() plt.show() 예측할 모델과 관심 Feature 그리고 데이터 셋을 입력해 Partial Dependence Plots를 출력한..
Permutation Feature Importance SVM 과 KNN 같은 알고리즘은 Feature Importance를 알 방법이 없다. 하지만 Permutation Feature Importance를 활용하면 알고리즘의 상관없이 변수 중요도를 파악할 수 있다. Feature 하나의 데이터를 무작위로 섞고 예측했을 때, model의 Score가 섞기 전과 섞은 후 얼마나 감소되는지 계산하는 방식이다. 특정 Feature에 대해서, 여러 번 시도해서 나온 Score의 평균 계산하여 그것을 원래 model 의 Score와 빼 변수 중요도를 판별하는 방법이다. 하지만 다중 공성성이 있는 변수가 존재할 때, 관련된 변수는 그대로 존재하므로 Score가 줄어들지 않을 수 있다. from sklearn.ins..
모델에 대한 설명 모델을 통해 예측하고 예측한 결과를 통해 비즈니스 문제를 해결한다. 하지만 인공지능이 예측한 결과라는 근거는 아무런 설득이 되지 않는다. 그 인공지능이 예측을 할 때, 어떤 변수를 고려하여 예측했는지가 중요하다. 이 모델들은 설명하기 쉬울 수록 White Box Model, 설명하기 어려울수록 Black Box Model 이라고 한다. 경향을 봤을 땐 White Box Model에 가까울 수록 성능이 낮다고 볼 수 있다. Tree 기반 모델의 변수 중요도 Tree 기반의 모델들은 feature importance라는 변수에 해당 모델의 변수 중요도가 입력되어 있다. 이 feature importance는 어느 한 노드에서 정하는 것이 아닌 모델 전체에 노드에서 봤을 때, 평균적으로 가장..
미니프로젝트 2차 미니프로젝트 2차는 데이터의 전처리에서 모델링까지 개인 실습후 동일한 내용을 가지고 캐글에서 자신의 모델에 대한 성능을 평가하여 등수를 매기는 경쟁 구도 였다. 사실 전부터 캐글이 정확히 어떻게 하는 곳인지 몰랐는데. 이렇게 미니프로젝트로 기회가 생겨서 너무 좋았다. 그런데 실제 데이터는 결측치가 너무 많았다. 그러나 이 결측치들의 행을 없애면 안됐고, 열을 날리면 모델링의 학습을 다시 해야 했는데, 이 때 분반의 어떤 구원자께서 knnimputer 라는 것을 알려주셨고, 덕분에 나는 좋은 성과를 거두게 되었다. 그리고 이번 팀 프로젝트는 미세먼지 농도 예측이였는데, 처음으로 시계열 데이터를 모델링하는 것이라 기대됐다. 교안에서는 선형회귀나 앙상블을 사용하고 나머지는 자유롭게 알고리즘을..
머신러닝 드디어 내가 제일 관심있던 머신러닝을 배우게 되었다! 사실 배우기전에 조금 걱정되었던 부분은 수학이였다. 알고리즘은 수학적으로 설명 가능한 것들을 프로그램으로 만드는 것인데, 강의를 들어보니, 강사님 께서는 최대한 수학적인 내용을 배제하고 그림으로 설명하려고 노력해주셨다. 그리고 왜 파이썬으로 인공지능 분야를 해야하는지도 코딩을 하면서 깨닫게 되었다. 아직 많은 라이브러리를 사용해본것은 아니지만, 내 예상보다 더 잘 되어 있다. 선언하고 객체에 함수를 호출하고 그러면 예측하고 심지어 모델을 평가할 때도 수학적으로 좀 귀찮은 과정을 거쳐야 하는데, 전부 함수로 이미 구현되어 있다. 강의는 마치 내가 머신런닝에 재능이 있는거 아닐까? 라는 착각할 정도로 이해를 너무 잘되게 설명해주셨다. 최대한 그림..
미니프로젝트 1차 에이블 스쿨이 시작하고 나서 첫 번째 미니프로젝트다. 총 4일로 진행되는데 개인적으로 주어진 과제를 먼저 해결하고 팀원들 끼리 모여 과제의 결과에 대해 토의하여 결과를 ppt 로 만들어 제출한다. 그리고 마지막에는 위 과정을 하루에 모두 한다. 에이블 스쿨에서 교육을 위해 클라우드 서비스를 만들었는데, 이번에 처음 서비스를 하느라, 수강생들이 동시에 접속하니 서버가 견뎌내지 못했다. GPU를 할당 받아서 쓸 수 있으면 좋겠다고 생각했는데, 많이 아쉬웠다. 더 개선해서 접근성이 용이하고 많은 트래픽에도 견뎌낼 수 있는 서비스로 제공 받을 수 있으면 좋겠다. 분반 분들과는 매일 팀즈에서 얼굴을 봤지만 대화를 할 수 있는 기회가 있어서 좋았다. 서로 소통도 하고 시시콜콜한 수다도 떨면서 과제..
데이터 분석 및 의미 찾기 Python 라이브러리를 강의하셨던 강사님께서 강의를 해주셨다. 계획하신대로 주기적으로 AI 트랙에서 강의를 하신다고, 강사님 자체적으로 정체성을 AI트랙의 담임선생님이라고 하셨는데, 아주 찰떡인 비유라고 생각했다. 비록 비대면이지만 학생들의 아주 수준 높은 질문부터 기초적인 질문까지 모두 대답해주신다. 데이터 분석은 pandas와 matplotlib를 적극적으로 활용하여 데이터를 시각화하거나 새로운 데이터프레임을 만들어 데이터를 분석하는데 더 용이하게 하고, 더 나아가 비즈니스 관점으로 데이터를 볼 수 있는 방법에 관한 내용이였다. 하지만 어떤 라이브러리던 그러겠지만 함수가 너무 많아서 원하는 기능을 사용하고 싶어도 그에 대한 함수가 잘 떠오르지 않는다. 역시 정답은 여러번 ..
전처리 import pandas as pd import numpy as np import matplotlib.pyplot as plt import seaborn as sns import scipy.stats as stats import statsmodels.api as sm from statsmodels.graphics.tsaplots import plot_acf, plot_pacf from sklearn.metrics import * # 검증 함수 def residual_diag(residuals, lags = 20) : print('* 정규성 검정(> 0.05) : ', round(stats.shapiro(residuals)[1],5)) print('* 정상성 검정(< 0.05) : ', round(..
전통적 시계열 모델링 y데이터의 이전 시점 데이터들로 부터 흐름의 패턴을 추출하여 예측한다. (feature는 사용하지 않음) AR (Auto Regressive) target을 자기자신으로 하고 이전 시점의 데이터를 feature로 갖는 모델이다. AR의 hyper parameter는 p로 얼마나 과거의 데이터를 볼 것인지 나타낸다. (차수) y가 정상(Stationary)데이터야 한다. MA (Moving Average) target을 자기자신으로 하고 해당 시점과 그 과거의 예측 오차들을 feature로 갖는 모델이다. MA의 hyper parameter는 q로 얼마나 과거의 데이터를 볼 것인지 나타낸다. (차수) y가 정상(Stationary)데이터야 한다. ARIMA AR 과 MA 모델을 결합하..
시계열 데이터 시간의 흐름에 따른 패턴 분석 흐름을 어떻게 정리할지에 따라 모델링 방식이 달라진다. 전통적인 시계열 데이터 분석 target 데이터만으로 예측하는 것을 의미한다. ML 기반 시계열 데이터 분석 전통적인 시계열 분석은 target 뿐만 아니라 feature 데이터도 사용하여 데이터의 특정 시점과 예측 대상 시점과의 관계로부터 패턴을 추출하여 예측 시점이므로 데이터는 1차원이다. DL 기반 시계열 분석 데이터의 특정 구간과 예측 대상 시점과의 관계로 부터 패턴을 추출하여 예측한다. 구간이므로 데이터는 2차원이다. 사전확인 오류 특정 시점에서 알 수 없는 데이터를 분석 단위로 묶어서 분석 및 예측하는 오류 feature들의 시점과 Target의 시점은 달라야한다. NaN 조치 이전 값 또는 이..