본문 바로가기

728x90

Data Diary

(166)
2021-09-18(따릉이 프로젝트 완성하기 7) *주요 요약 1. hour_bef_ozone의 결측치 예측 2. 결측치 다수 존재하는 변수들은 미 사용하기로 판단함 * 본 내용 결측치가 많은 ozone, pm10, pm2.5를 예측하여 값을 채우려 시도하고 있습니다. 기존에는 각 시간, 변수 별 평균값으로 결측치를 채웠습니다. 하지만 이러한 방법은 정확성을 떨어뜨릴수 있습니다 게다가 그러한 결측치가 워낙 많다 보니까 새로운 방법을 찾아야 했습니다. ozone, pm10, pm2.5를 제외한 feature을 활용했습니다.(id, count 제외) 먼저, 사용될 X feature들의 결측치 먼저 처리해야 합니다. 결측치 수가 많지 않으므로 이는 기존에 만들어 사용했던 시간,변수별 평균값 함수를 사용하여 채웠습니다. 아래 step 1을 통해 상세하게 설명드..
2021-09-15(따릉이 프로젝트 완성하기 6) *오늘 얻어낸 것들 1. target의 log화는 성능을 떨어뜨린다. 2. 오늘 시도했던 잡다한 방법들 모두 성능에 영향을 주지 못하거나 떨어뜨린다 (자잘한게 많아서 뭘 했는지 조차 기억..) 3. 결측값을 평균값으로 일괄 적용X *현재 시도 중인 것 본래 결측치 값을 평균으로 싹 다 처리했습니다. 그런데 생각해 보니까 날씨 데이터가 있는데 평균값으로 대체 하면 말이 안되더라구요. 예를들어 비가 오는데 기온이 높으면 이치에 어긋나기 때문에 이를 수정하기로 했습니다. 특히, 마지막 3개는 결측값이 엄청 납니다. 가뜩이나 데이터도 많진 않아서 삭제하기 부담스럽습니다. 그래서 평균으로 대체 하는 것보다 예측값을 넣는게 차라리 낫지 않을까 하는 생각에 뒤에 이 3개 변수를 각각 예측모델링 짜고 있습니다. 전처리..
2021-09-14(딥러닝 수학15_multi-variate Linear Regression) 저번 포스팅까지는 X 변수가 하나라는 가정하에 진행해 왔습니다. 이제 부터는 X가 둘 이상인 multi을 다룹니다. 위 그림처럼, X들이 여러개 나뉘어 졌다. X1: 공부시간, X2: 등하교 시간으로 예를 들수 있겠습니다. 그래서 각각의 변수 데이터를 가지고 해당되는 target 값인 y를 예측하게 됩니다. X2가 추가가 되었음을 볼 수 있다. 각 theta, X에 대해서 벡터 형식으로 정리가 가능하다. X 벡터의 1인 dummy 변수를 넣어 줘야 dot product 했을때 계산이 가능합니다. Loss function에 th가 3개로 확장 되었으므로 더이상 평면이 아닌 공간 상에서 표현이 될 것입니다. 전에 배웠던 내용과 다른 점이 있다면 th2가 추가 되었다는 점 뿐이다. 각 th별로 미분을 하면 빨..
2021-09-13(따릉이 프로젝트 완성하기 5) 오늘 진도 나간 부분은 아래 순으로 진행했습니다. step 1) 피처중요도가 작았던 날씨 데이터를 활용한 새로운 파생변수 만들기 -> 처음에는 전체 데이터를 가지고 주말,평일을 나눠볼려고 시도했습니다. 그래서 군집분석을 해봤는데, 시도할수록 2개로 군집 분석해도 이 의미가 과연 주말과 평일을 나누는 기준인가? 를 모르겠다는 겁니다 ㅎ;; 시도해 보고 나니 깨달았네요, 그대신 얻은 게 있다면 중요도가 낮은 변수들을 가지고 군집 분석을 통해 파생변수를 시도 했다는 것입니다. 제가 알수 없는 날씨 데이터간의 의미를 알아보는 시간이었습니다. 제 생각이지만 예를들어, 해당 군집 변수를 통해서 비가 내렸는지 , 눈이 내렸는지, 매우 더웠는지 등 알수 있지 않을까 생각해 봅니다(뇌피셜ㅎㅎ;;) 아래는 제가 책 보면서..
2021-09-10(딥러닝 수학14_dataset 변화에 따른 th1,th0 학습 시각화) 이번 포스팅에서는 주로 weight 변화에 따라서 bias에 어떠한 영향을 미치는지를 중점적으로 살펴보도록 한다. weight, bias가 3,3인 것으로 부터 mu, sigma의 변화에 따른 영향을 살펴본다. *표준편차가 1이하 일 때 (0, std)를 따를 때, std가 0에 가까울수록 뽑히는 x의 값이 0에 가까운 값이 뽑히게 될 것이다. 예를 들어 x의 값이 0.1, 0.5처럼 1보다 작은 값들이 뽑히게 된다는 것이다. 저번 포스팅에서 배웠던 것처럼 x의 값이 1보다 작게 되면 weight가 학습되는 양 자체가 적어진다. 그리고 std =1 일때는 th1,th0이 균등하게 대각선 방향으로 학습이 된다. 위 왼쪽 그림의 보락색이 이에 해당 된다. th1의 loss grdient 양은 -2*x*lr(..
2021-09-09(따릉이 프로젝트 완성하기 4) 지난 포스팅에 이어서 오늘은 모델링을 만들어 봤습니다. #그리드 서치 models = [ ('ridge', lm.Ridge()), ('lasso', lm.Lasso()), ('elastic', lm.ElasticNet()), ('LassoLars', lm.LassoLars()), ('LogisticRegression', lm.LogisticRegression()), ('SGDRegressor', lm.SGDRegressor()), ('Perceptron', lm.Perceptron(n_jobs=-1)), ('xgboost', xgb.XGBRegressor()), ('lgb', lgb.LGBMRegressor()), ('knn', KNeighborsRegressor(n_jobs = -1) ), ('rf',..
2021-09-08(딥러닝 수학 13_ for Several Samples Theory & Implementation) 저번 포스팅까지는 하나의 데이터에 대한 학습과정을 공부했습니다. 이번 시간부터는 미니배치 즉, 여러개 샘플을 가지고 학습을 시키는 방법에 대해 공부한 내용을 포스팅하겠습니다. 2가지로 나눠서 진행할 예정입니다. 1. 두개의 sample에 대해서 cost function을 이용한 업데이트 방법 2. vector notation을 이용한 방법 (n개의 미니배치가 있을 경우의 업데이트 방법) *실습링크 2021.09.04 - [실습 note] - 딥러닝 수학 실습과제 모음 9~12 딥러닝 수학 실습과제 모음 9~12 실습파일이 없는 줄 알았는데 있더라구요 그래서 쌓여 있는 실습을 진행했습니다. 각 구분선에 따라 이론내용과 실습을 분리했습니다. 순서는 맨 위부터 아래 순입니다. 2021.08.19 - [Data..
2021-09-07(따릉이 프로젝트 완성하기 3) 저번 포스팅에서 언급했던 결측치 문제를 오늘 해결했습니다. 결과만 보면 이렇게 간단한데 그 과정을 알기까지가 힘드네요. 아래가 해결한 코드입니다. def nan_fill(dataset): #결측치가 있는 컬럼 nan_columns = [col for col in dataset.iloc[:,2:-1].columns.to_list() if col!='hour_bef_precipitation'] #for 문을 통해 결측치를 각 시간대별 평균값으로 대체 for col in nan_columns: hour_mean_value = dataset.groupby('hour').mean()[col] hour_mean_value.fillna(hour_mean_value.mean(),inplace=True) #회귀를 통해서..