My Blog for coding and note

https://github.com/hesthers

0%

What I watched yesterday (movie)

  • Title: A man called Ove
  • This movie was impressive. This movie shows life of a man called Ove, is not much kind man to his neighbors. However, after meeting the new neighbor family, he changes a lot. His life is also changed. He realizes what the better and beautiful life is.

  • 삶이란 아름답다. 인생에서 소소한 행복을 느끼는 것. 그것이 진짜 나의 행복이라 할 수 있을 것이다. 누구나 저마다의 사연이 있고 그 사연에서 숨겨진 이야기가 나를 때로는 변화시키기도 한다. 사람이 사람에게 상처를 주기도 하지만 사람으로부터 치유를 받는다. 누구나 받은 그 상처를 사람으로 하여금 치유받으며 그 속에서 기쁨과 행복을 느끼는 것은 아닐까…
    그래서 이 영화를 추천한다.

Machine Learning Project (END!!!) with feedback

드디어 어제부로 머신러닝 그룹 프로젝트가 끝이 났다.. 피드백과 함께 프로젝트를 앞으로 할 때 어떠한 부분들이 필요할 지를 정리했다.

  • 질문에 대하여 연쇄 작용이 일어날 수 있도록 해주는 것이 좋음 (청중들이 계속해서 다음 내용을 궁금해 하고 다음에 뭐가 나올지 바로 판단할 수 있도록 ppt를 구성하는 것이 좋다)
  • 너무 많은 내용을 한 페이지에 담지 않게 해당 페이지의 내용이 명확하게 눈에 딱 들어올 수 있도록..
  • EDA라면 raw data에 대한 분석을 목적으로 하는 것이기 때문에 이 부분에 초점을 두고 진행해야 함.
  • 단순히 시각화만 표현한다고 되는 것이 아님. 시각화에 담겨있는 내용이 무엇인지 나타낼 수 있어야 함.
  • 플로우 진행사항이 보일 수 있게 ppt 진행사항이나 방향을 명확하게 해둘 필요가 있음.
  • 서론 부분이 너무 길지 않게 표현하기 (배경)
  • 내용의 핵심이 무엇인지… (발표의 방향이 흩어져 보이지 않도록 주의하기 = 플로우의 방향이 유지될 수 있도록 하기)
  • 직접 수집한 데이터를 사용한 점 (크롤링 등의 노동량을 투입한 것)은 좋았으나 발표 시 표현하지 않았다는 점에서 아쉬움.
  • 배우지 않은 모델을 적용했다는 점도 좋았음.

앞으로의 프로젝트 시 확인해야하는 부분들

  • 데이터를 가져와서 그 안의 파생 변수를 만들어본 시도가 필요함.
  • GUI 환경에서 구현하여 실행해보는 시도가 필요함.
  • 데이터 전처리와 모델링에서 많은 노력을 투입하는 것이 필요함 (체계적으로 수행하는 것이 필요함.)
  • 새로운 파생변수를 추가하면서 비교해나가는 것이 필요함.
  • 최적의 파라미터를 통해 가장 좋은 파라미터를 가진 모델들끼리 비교하고 최적의 결과를 내는 그 과정이 의미있으므로 필요함.
  • 수상작 그대로 clone하는 것이 프로젝트가 가치가 있는가는 생각하지 말기
  • 그대로 레퍼런스를 참고할 수 없는 경우도 존재함.
  • 저품질 사양의 컴퓨터로 한 프로젝트를 통하여 만든 질이 낮은 성과물을 무조건으로 나쁘다고 볼 수 없음
  • 레퍼런스를 스터디하고 어떻게 카피할 것인지가 중요함.
  • 개선해야 하는 부분들을 공부하고 찾아나가야 함.

Machine Learning Project Process with 4th feedback

  • 관광지와 상권은 분리할 것.
  • 상권밀집지수는 관광지와 하나로 보고 계산한 것이 잘못된 방향.
  • 관광지와 상권은 다른 분류로 구분해야함.
  • 지수 선정에 대한 명확한 근거가 필요함.

project 관련된 필요 사항들

  1. 프로젝트 시 해결하고자 하는 문제들(정의한 문제들)과 그에 따른 해결방안 제시할 것. (설득력이 있어야 함.)
  2. 상대방의 공감을 살 수 있어야하고 대중적인 문제를 가지고 프로젝트하는 것이 좋음.
  3. 명확하고 분명한 해당 그룹만의 방향과 색깔을 드러내줄 수 있어야 함.
  4. 내용전달을 명확하게 해야하고 프로젝트에 대한 이해가 우선시 되어야 함.
  5. 기대효과를 마지막에 나타내줄 필요가 있음. (문제 정의 및 제시한 문제들에 연관지어야 함.)
  6. 발표자가 발표하는 데 있어서 주도권을 가지고 있으므로 질문을 유도할 수 있도록 해야함. 청중들의 관심을 계속해서 가질 수 있도록 해줄 필요가 있음.

(위의 사항들은 특강을 듣고 난 다음 간단하게 정리해본 내용으로 불펌 금지합니다.)

Things to do today

  • 입지 선정지수 선형회귀로 학습해서 찾아보기 (결과: 컬럼 간의 상관관계 문제로 인해 상관계수가 상당히 낮게 나옴.. 통계상으로 볼 때 여러 문제점들이 보여짐. 컬럼들 간의 상관관계 또한 낮음.)
  • 중국어 (빅분기 시험이 끝났으니 HSK 6급 준비 다시 시작)

machine learning project process

  • Finished EDA and preprocessing related to accomodation data
  • Began improving the index regarding developable area for EV station

Things to do

  • alread found saving geojson file problem => made geojson file
  • merge two dataframe and began making the new score for machine learning

데이터 분석 결과

  • 숙박에 대한 별점과 게시확인 수의 상관관계는 보이지 않음 (수치상 -0.15로 나옴 스캐터 플롯을 그려보면 상관관계가 없어보임)
  • 별점은 대체로 9.4에서 10점 이 쪽으로 몰려있으며 전반적으로 9점이상인 점수에 몰려있는 모양을 하고 있다.
  • 가중치 범위로 정할 수 있는 피벗 테이블을 만들어 보면 4가지로 구분될 수 있음 (추천해요 부분이 대체로 많은 편)
  • 게시확인수는 편차가 큰 편 그래서 MinMaxScaler를 통해 스케일링을 한 번 해주고 가중치 계산을 해줄 필요가 있음. (혹은 RobustScaler를 이용하거나)
  • 숙박업소에 대한 카테고리별 추천도 여부는 큰 차이는 없어보이나 대체로 호텔/콘도를 더 많이 좋게 추천하는 편.
  • 호텔/콘도의 경우 대기업에서 운영하는 경우가 많아서 입지도 넗고 상가업소 번호도 많음.

생각해볼 문제

  • 이상치로 보여지는 데이터들이 있어보이나 과연 이 데이터들을 삭제하거나 고려사항에서 배제하는 것이 맞는가
  • 별점에서 보여지는 편차들을 어떻게 고려해서 가중치를 부여할 것인가
  • 호텔/콘도 쪽 추천도가 높은 이유는 여행 시 대체로 호텔이나 콘도를 많이 선택하며 호캉스 등의 여부로 선택을 하는 것은 아닌가..
  • 호텔/콘도에 대한 추천도가 높다는 것은 많이 이용했다는 것.. 사람들이 이용했을 때 좋았고 앞으로도 자주 이용할 것. (뇌피셜)
  • 숙박업소에 경우 평가부분에서 편차가 큰 편..
  • 기존 추천도의 경우 구간이 4개의 구간으로 나누어지기 때문에 가중치에 대한 구간도 4개로 나누면 되지 않을까

빅분기 실기 시험 후

오늘 빅분기 실기 시험을 봤다.. 일단은 나쁘지 않았다. 전체적으로 충분히 도전해볼만한 문제들이였던 것 같다. 물론 단답형이랑 작업형 1유형 1번 문제가 고민을 좀 많이 했던 문제였다.

작업형 2유형 문제는 분류 문제였고 머신러닝으로 xgboost, 랜덤 포레스트, 그래디언트 부스팅, 로지스틱 회귀 모형을 썼는데 그래디언트 부스팅이 성능이 가장 좋게 나와서 최종 예측결과를 이걸로 사용해서 답안을 제출했다.

결측치가 전혀 없는 깔끔한 데이터여서 의외로 뭐지? 싶었던 것 같다. 스케일링은 수치형 데이터는 robust scaler, 명목형 데이터는 원핫인코딩으로 해서 전처리 해줬다.

단답형 1번은 어제 전날 밤에 봤던 문제였다. 향상도.. 나오겠다 싶어서 우상향 이렇게 외웠는데 1번에서 바로 나왔다..

인공신경망 가중치 편향을 포함한 계산 문제는 0.13?으로 적은 것 같다.. 내 기억엔..

작업형 1유형 1번 문제는 이미 틀린 것 같고 단답형에서도 점수가 좀 깎일 것 같다.. 합격하고 싶다 ㅠㅠㅠ (12/31 발표 실화??? 불합격하면 새해를 우울하게 보내라는 건가요….)

보면서 나쁘지 않다라고 느꼈는데 과연 점수가 괜찮을런지…

Machine Learning Example

한국데이터산업진흥원(KDATA/dataq.or.kr)에서 제시해준 예시 문제 답안 만들어봤다. 머신러닝 연습하면서 파이썬 코드 작성했다. (분류문제)

xgboost, lightgbm은 시험환경에서 먹히지 않아서 패쓰…

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
import pandas as pd
pd.set_option('display.max_columns', None)
X_test = pd.read_csv("data/X_test.csv")
X_train = pd.read_csv("data/X_train.csv")
y_train = pd.read_csv("data/y_train.csv")

# 사용자 코딩
## 결측값 확인하기
# print(X_test.isnull().sum()/len(X_test)) #1611개 결측값 존재
# print(X_train.isnull().sum()) #2295개 결측값 존재
# print(y_train.isnull().sum()) #0개 결측값 존재

## 결측값 처리하기
# print(X_test.describe()['환불금액'])
# print(X_train.describe()['환불금액'])
# print(X_test.corr()['환불금액'])
# print(X_train.corr()['환불금액'])

# X_test.fillna(0, inplace=True)
# X_train.fillna(0, inplace=True)
# print(X_test.describe()['환불금액'])
# print(X_train.describe()['환불금액'])
from sklearn.impute import KNNImputer
X_test['환불금액'] = KNNImputer(n_neighbors=5).fit_transform(X_test[['환불금액']])
X_train['환불금액'] =KNNImputer(n_neighbors=5).fit_transform(X_train[['환불금액']])

# print(X_test.isnull().sum())
# print(X_train.isnull().sum())
# print(X_test.describe()['환불금액'])
# print(X_train.describe()['환불금액'])

## 데이터 유형 확인하기
# print(X_test.info())
# print(X_train.info())
# print(y_train.info())

## EDA -- object형 데이터 스케일링
# print(X_train['주구매상품'].value_counts()) ## 라벨 인코딩
# print(X_train['주구매지점'].value_counts()) ## 라벨 인코딩

from sklearn.preprocessing import LabelEncoder
X_train['주구매상품'] = LabelEncoder().fit_transform(X_train['주구매상품'])
X_train['주구매지점'] = LabelEncoder().fit_transform(X_train['주구매지점'])
X_test['주구매상품'] = LabelEncoder().fit_transform(X_test['주구매상품'])
X_test['주구매지점'] = LabelEncoder().fit_transform(X_test['주구매지점'])

# print(X_test.describe())
# print(X_train.describe())

## 총구매액, 최대구매액, 환불금액, 내점일수, 구매주기 => MinMax scaler
from sklearn.preprocessing import MinMaxScaler
X_test[['총구매액', '최대구매액', '환불금액', '내점일수', '구매주기']] = MinMaxScaler().fit_transform(X_test[['총구매액', '최대구매액', '환불금액', '내점일수', '구매주기']])
X_train[['총구매액', '최대구매액', '환불금액', '내점일수', '구매주기']] = MinMaxScaler().fit_transform(X_train[['총구매액', '최대구매액', '환불금액', '내점일수', '구매주기']])

# print(X_test.describe())
# print(X_train.describe())

## train 데이터 셋에서 훈련, 검증 데이터 분리하기
# print(2482/3500) #70.9%
y_train = y_train['gender']
from sklearn.model_selection import train_test_split
X_train, X_val, y_train, y_val = train_test_split(X_train, y_train, test_size = 0.3, shuffle=True, random_state = 2021)

print(X_train.shape, X_val.shape, y_train.shape, y_val.shape)

## 분류 모델 사용하기 (앙상블 - 에이다, gradient boost, random_forest)
from sklearn.ensemble import AdaBoostClassifier
from sklearn.ensemble import GradientBoostingClassifier
from sklearn.ensemble import RandomForestClassifier

abc = AdaBoostClassifier(random_state = 2021).fit(X_train, y_train)
gbc = GradientBoostingClassifier(random_state = 2021).fit(X_train, y_train)
rfc = RandomForestClassifier(random_state = 2021).fit(X_train, y_train)

## 검증 데이터 성능 확인하기
# print(abc.score(X_val, y_val))
# print(gbc.score(X_val, y_val))
# print(rfc.score(X_val, y_val))

## 예측 데이터
pred_abc = abc.predict(X_val)
pred_gbc = abc.predict(X_val)
pred_rfc = abc.predict(X_val)

from sklearn.metrics import classification_report, roc_auc_score
# help(classification_report)
# print(classification_report(y_val, pred_abc, digits=2))
# print(classification_report(y_val, pred_gbc, digits=2))
# print(classification_report(y_val, pred_rfc, digits=2))

prob_abc = abc.predict_proba(X_val)[:, 1]
prob_gbc = gbc.predict_proba(X_val)[:, 1]
prob_rfc = rfc.predict_proba(X_val)[:, 1]

# print(roc_auc_score(y_val, prob_abc)) #0.649317286036036
print(roc_auc_score(y_val, prob_gbc)) #0.6513388388388388
# print(roc_auc_score(y_val, prob_rfc)) #0.6418703860110111

##### GradientBoosting 모델로 답안
pred = gbc.predict_proba(X_test)[:, 1]

# 답안 제출 참고
# 아래 코드 예측변수와 수험번호를 개인별로 변경하여 활용
pd.DataFrame({'cust_id': X_test.cust_id, 'gender': pred}).to_csv('003000000.csv', index=False, encoding='utf-8')

Machine Learning Project Process

What I did for this project

  • Crawling best places in Sokcho, Gosung in Gangwon, S.KR

Things to do tomorrow

  • After crawling, perhaps analyze the result data to find the best place to install EV station

2nd Feedback

  • 유동량을 고려할 수 있는 다른 요인들을 찾아보기
  • 고려할 수 있는 1차 피쳐들을 확인하기
  • 다른 보조 지표가 있으면 그것을 활용해볼것. 보조지표로서의 가치가 있는 데이터의 확보 가능성 확인하기
  • 어디로 설정해야 가장 fit한지.. 이를테면 머무는 시간 고려하기
  • 동일 시간대에 몰리는 전기차 수 대비 충전소 수 값 => 임계값
  • 수치화할 수 있는 데이터가 몇 안되므로 정성적으로 갈 수 밖에 없어보임.
  • 교통량 대신 할 수 있는 데이터: 충전소 수 => 격자별 충전소 수 & 상가 수 (기존 충전소는 배제..)
  • 격자별 필요한 충전소 수를 예측. 예측값을 뽑고 기존 충전소 수를 비교(기존 개수가 포화일 때 더이상 추가 설치가 필요가 없기 때문)
  • 평점이 비슷한 경우나 차이가 큰 경우도 있기 때문에 스케일링이 필요함.
  • 평점으로 유동량 예측해야 하므로 사람이 몰릴 수 있는 지역 쪽에 가중치를 좀 더 부여
  • 사람들이 몰리는 곳이나 오래된 지점들에는 가중치를 더 많이 부여
  • 0점을 상점으로 주는 경우 마이너스값을 가중치로 부여 (리뷰 평점으로 줄 때)
  • 관광 명소 데이터를 요인으로 고려해볼 수 있고 충전을 많이 할 수 있는 곳은 명소나 숙박 업소 주변(머물수 있는 시간 기준으로 판단가능함.)

The Process of Machine Learning Project Day 7

  • Finish researching data
  • Begin executing python codes by the unit of cells
  • Have to find why the errors occur referred to my codes

Difficulties

  • It is difficult to represent the codes precisely on the map.
  • In the geometry column, it is difficult to separate both codes respectively when the coordinates are multipolygon or polygon.

빅데이터 분석기사 실기시험을 준비하면서 풀어본 연습문제들 괜찮아서 공유해볼까 싶다. 문제 저작권 문제가 있을 수 있으므로 여기서는 문제보다는 링크를 공유하려 한다.

kaggle bigdata 실기 연습 문제들

작업형 1유형 문제들은 나름 고민하면서 풀어볼만한 막상 시험에 나오면 코드를 어떻게 써야하지 싶은 그런 문제들이 나름 존재했다. 여기 문제들만 충분히 풀어볼 수 있다면 실기에서는 무난하게 풀 수 있지 않을까 싶다. 꽤 나름 고퀄의 문제들이다.

빅분기 단답형 공부할(복습) 개념들 정리 목록 (개인적인 용도의 기록용)

  • 실루엣 지표 (군집분석)
  • 의사결정나무 가지치기 & 정지규칙
  • 인공신경망 오차역전파 (역전파), 손실함수 정의
  • 지지도, 신뢰도, 향상도 개념(설명을 보고 무엇을 나타내는지) 및 계산
  • 혼동행렬 계산
  • 텍스트 마이닝 전처리 과정
  • 이상값 검출 (방법들)
  • 데이터 베이스 (하둡 에코시스템 포함, 에코시스템에 있는 프로그램들)
  • 시계열 성질(특징) 및 모형(AR, MA, ARIMA)
  • 개인정보 관련 부분들
  • 인공신경망 관련 활성화 함수들
  • 교차검증 기법들
  • 변수 거리 (연속형: 유클리드, 맨하탄, 민코프스키& 범주형: 마할라노비스)
  • 지니계수 계산

중간 Feedback

  • 주제 특성상 포트폴리오에서 왜 속초, 고성군을 선택했는가
  • 설득력이 떨어지면 포트폴리오의 가치가 떨어질 수 있음
  • 주장에 대한 근거를 데이터 수치, 자료로 보여주는 것이 훨씬 설득력이 있음.
  • 정량적인 자료를 통해 논리적 결함이 없어야함.
  • 데이터 역량 — 마케팅 분석, 디지털 마케팅 등을 통한 인사이트를 얻을 수 있음..
  • 이쪽 도메인에서 경쟁우위를 가지고 있다는 경험을 보여주기 위한 것.

data

  • 공모전 수상작 데이터 참고해서 새로운 원본 데이터 다운받아서 전처리

Machine Learning Project

  • data preprocessing
  • 속초시, 고성군 교통량 데이터 수집 (고속도로 관련 데이터)

Difficulties

  • 생각보다 데이터를 수집하기 어려웠고 원하는 내용이 없었음. (There are not much enough data to collect as I expected.)
  • data is the raw data as it is, so it is difficult to combine another data.