데이콘 대회 참여 - 08 세개의 모델

공지

제 수업을 듣는 사람들이 계속적으로 실습할 수 있도록 강의 파일을 만들었습니다. 늘 도움이 되기를 바라며. 참고했던 교재 및 Reference는 꼭 확인하셔서 교재 구매 또는 관련 Reference를 확인하시기를 바랍니다.

사전작업

!pip install https://github.com/pandas-profiling/pandas-profiling/archive/master.zip
Collecting https://github.com/pandas-profiling/pandas-profiling/archive/master.zip
  Using cached https://github.com/pandas-profiling/pandas-profiling/archive/master.zip
.
.
.
Successfully built pandas-profiling

I. 빅쿼리 연동

  • 지난 시간에 데이콘에서 내려받은 데이터를 빅쿼리에 넣는 작업을 진행하였다.
  • 빅쿼리에 저장된 데이터를 구글 코랩으로 불러오려면 다음과 같이 진행한다.

(1) 사용자 계정 인증

구글 코랩을 사용해서 인증 절차를 밟도록 한다. 아래 소스코드는 변경시키지 않는다. 아래 절차대로 진행하면 된다. Gmail 인증 절차와 비슷하다.

Pandas Data Handling 1편

강의 홍보

I. Kaggle에서 타이타닉 데이터 가져오기

  • 캐글 데이터 가져오는 예제는 본 Kaggle with Google Colab에서 참고하기를 바란다.
  • 먼저 kaggle 패키지를 설치한다.
!pip install kaggle
Requirement already satisfied: kaggle in /usr/local/lib/python3.6/dist-packages (1.5.6)
Requirement already satisfied: urllib3<1.25,>=1.21.1 in /usr/local/lib/python3.6/dist-packages (from kaggle) (1.24.3)
Requirement already satisfied: six>=1.10 in /usr/local/lib/python3.6/dist-packages (from kaggle) (1.12.0)
Requirement already satisfied: python-dateutil in /usr/local/lib/python3.6/dist-packages (from kaggle) (2.8.1)
Requirement already satisfied: tqdm in /usr/local/lib/python3.6/dist-packages (from kaggle) (4.41.1)
Requirement already satisfied: python-slugify in /usr/local/lib/python3.6/dist-packages (from kaggle) (4.0.0)
Requirement already satisfied: certifi in /usr/local/lib/python3.6/dist-packages (from kaggle) (2020.6.20)
Requirement already satisfied: requests in /usr/local/lib/python3.6/dist-packages (from kaggle) (2.23.0)
Requirement already satisfied: text-unidecode>=1.3 in /usr/local/lib/python3.6/dist-packages (from python-slugify->kaggle) (1.3)
Requirement already satisfied: chardet<4,>=3.0.2 in /usr/local/lib/python3.6/dist-packages (from requests->kaggle) (3.0.4)
Requirement already satisfied: idna<3,>=2.5 in /usr/local/lib/python3.6/dist-packages (from requests->kaggle) (2.9)
  • kaggle 인증키를 업로드 하여 권한 부여 한다.
from google.colab import files
files.upload()
Saving kaggle.json to kaggle.json





{'kaggle.json': b'{"username":"j2hoon85","key":"5a23c8dba5a151100b483a587eafdac8"}'}
!mkdir -p ~/.kaggle # 파일 생성
!mv kaggle.json ~/.kaggle/ # kaggle.json 파일 이동
!chmod 600 ~/.kaggle/kaggle.json # 권한 부여
!kaggle competitions list
Warning: Looks like you're using an outdated API Version, please consider updating (server 1.5.6 / client 1.5.4)
ref                                            deadline             category            reward  teamCount  userHasEntered  
---------------------------------------------  -------------------  ---------------  ---------  ---------  --------------  
tpu-getting-started                            2030-06-03 23:59:00  Getting Started      Kudos        125           False  
digit-recognizer                               2030-01-01 00:00:00  Getting Started  Knowledge       2958           False  
titanic                                        2030-01-01 00:00:00  Getting Started  Knowledge      22881            True  
house-prices-advanced-regression-techniques    2030-01-01 00:00:00  Getting Started  Knowledge       4985            True  
connectx                                       2030-01-01 00:00:00  Getting Started  Knowledge        673           False  
nlp-getting-started                            2030-01-01 00:00:00  Getting Started      Kudos       1455            True  
competitive-data-science-predict-future-sales  2020-12-31 23:59:00  Playground           Kudos       7626           False  
halite                                         2020-09-15 23:59:00  Featured              Swag        534           False  
birdsong-recognition                           2020-09-15 23:59:00  Research           $25,000        244           False  
landmark-retrieval-2020                        2020-08-17 23:59:00  Research           $25,000         53           False  
siim-isic-melanoma-classification              2020-08-17 23:59:00  Featured           $30,000       1672           False  
global-wheat-detection                         2020-08-04 23:59:00  Research           $15,000       1353           False  
open-images-object-detection-rvc-2020          2020-07-31 16:00:00  Playground       Knowledge         45           False  
open-images-instance-segmentation-rvc-2020     2020-07-31 16:00:00  Playground       Knowledge          9           False  
hashcode-photo-slideshow                       2020-07-27 23:59:00  Playground       Knowledge         50           False  
prostate-cancer-grade-assessment               2020-07-22 23:59:00  Featured           $25,000        765           False  
alaska2-image-steganalysis                     2020-07-20 23:59:00  Research           $25,000        869           False  
m5-forecasting-accuracy                        2020-06-30 23:59:00  Featured           $50,000       5558            True  
m5-forecasting-uncertainty                     2020-06-30 23:59:00  Featured           $50,000        909           False  
trends-assessment-prediction                   2020-06-29 23:59:00  Research           $25,000       1047           False  
  • 캐글에서 데이터를 내려받는다.
!kaggle competitions download -c titanic
Warning: Looks like you're using an outdated API Version, please consider updating (server 1.5.6 / client 1.5.4)
gender_submission.csv: Skipping, found more recently modified local copy (use --force to force download)
test.csv: Skipping, found more recently modified local copy (use --force to force download)
train.csv: Skipping, found more recently modified local copy (use --force to force download)
!ls
chloevan_key.pem  gender_submission.csv  sample_data  test.csv	train.csv
  • 이제, 판다스를 활용해서 데이터를 불러온다.
import pandas as pd

titanic_df = pd.read_csv(r'train.csv')
titanic_df.head(3)
print('titanic 변수 type:', type(titanic_df))
titanic 변수 type: <class 'pandas.core.frame.DataFrame'>

II. 데이터 핸들링을 위한 주요 함수 소개

  • 본 장에서는 데이터 핸들링을 위한 몇가지 주요함수를 소개한다.

(1) value_counts()

  • value_counts()는 해당 칼럼값의 데이터 유형과 건수를 반환함
val_count = titanic_df['Embarked'].value_counts()
print(type(val_count))
print(val_count)
<class 'pandas.core.series.Series'>
S    644
C    168
Q     77
Name: Embarked, dtype: int64

(2) 데이터프레임 일부 삭제

  • drop()axis의 기준에 따라서 행과 열의 데이터를 삭제한다.
  • 이 때, 주요 파라미터는 labels, inplace, axis에 따라 구분된다.
    • labels: 컬럼명 또는 행의 인덱스
    • inplace: 데이터 업데이트
    • axis: 0은 행 방향, 1은 컬럼 방향
  • axis=1를 활용하여 우선 컬럼명을 삭제한다.
data = titanic_df.copy()
data_drop = data.drop(labels = 'Age', axis=1)
data_drop.head()

<

ch 08 - SmartPLS 소프트웨어 소개

I. SmartPLS 설치

  • SmartPLS는 구조방정식모델링을 위한 전용 통계분석 프로그램으로 다양한 학문 분야에서 광범위하게 사용됨.
  • 편이성, 친숙성, 안정성 면에서 매우 우수함.
  • 매우 적은 소표본에서도 활용할 수 있음.
  • 정규분포 등의 엄격한 가정 조건에 구애받지 않고 사용할 수 있음.
  • 프로그램 설치는 아래 링크를 클릭한다.
  • 학생용 버전은 평생 무료이며, 약간의 사용상 제약이 존재한다.

II. SmartPLS 관련 자료

  • 교제 추천

    • 원서 - A Primer on Partial Least Squares Structural Equation Modeling(PLS-SEM) (2013)
    • 번역서 - PLS 구조모델의 이해 (2014)
    • 국내저서 - 석박사학위 및 학술논문 작성 중심의 SmartPLS 3.0 구조방정식모델링 (2018)
  • 온라인 강의도 존재하지만, 무료는 아니다.

데이콘 대회 참여 - 07 두개의 모델

공지

제 수업을 듣는 사람들이 계속적으로 실습할 수 있도록 강의 파일을 만들었습니다. 늘 도움이 되기를 바라며. 참고했던 교재 및 Reference는 꼭 확인하셔서 교재 구매 또는 관련 Reference를 확인하시기를 바랍니다.

사전작업

!pip install https://github.com/pandas-profiling/pandas-profiling/archive/master.zip
Collecting https://github.com/pandas-profiling/pandas-profiling/archive/master.zip
  Using cached https://github.com/pandas-profiling/pandas-profiling/archive/master.zip
.
.
.
Successfully built pandas-profiling

I. 빅쿼리 연동

  • 지난 시간에 데이콘에서 내려받은 데이터를 빅쿼리에 넣는 작업을 진행하였다.
  • 빅쿼리에 저장된 데이터를 구글 코랩으로 불러오려면 다음과 같이 진행한다.

(1) 사용자 계정 인증

구글 코랩을 사용해서 인증 절차를 밟도록 한다. 아래 소스코드는 변경시키지 않는다. 아래 절차대로 진행하면 된다. Gmail 인증 절차와 비슷하다.

데이콘 대회 참여 - 06 교차검증과 파라미터 튜닝

공지

제 수업을 듣는 사람들이 계속적으로 실습할 수 있도록 강의 파일을 만들었습니다. 늘 도움이 되기를 바라며. 참고했던 교재 및 Reference는 꼭 확인하셔서 교재 구매 또는 관련 Reference를 확인하시기를 바랍니다.

사전작업

!pip install https://github.com/pandas-profiling/pandas-profiling/archive/master.zip
Collecting https://github.com/pandas-profiling/pandas-profiling/archive/master.zip
  Using cached https://github.com/pandas-profiling/pandas-profiling/archive/master.zip
.
.
.
Successfully built pandas-profiling

I. 빅쿼리 연동

  • 지난 시간에 데이콘에서 내려받은 데이터를 빅쿼리에 넣는 작업을 진행하였다.
  • 빅쿼리에 저장된 데이터를 구글 코랩으로 불러오려면 다음과 같이 진행한다.

(1) 사용자 계정 인증

구글 코랩을 사용해서 인증 절차를 밟도록 한다. 아래 소스코드는 변경시키지 않는다. 아래 절차대로 진행하면 된다. Gmail 인증 절차와 비슷하다.

ch 07 - 데이터 검토

개요

  • 수집된 데이터에 대해 정규성 검증을 하는 것은 중요하다.
  • 그런데, CB-SEMPLS-SEM의 기준 조건은 조금 상이하다.

정규성 분포 확인

  • Kolmogorov-Smirnov Test 또는 Shapiro-Wilk Test를 통해서 검증한다.
    • 귀무가설: 데이터분포를 정규분포를 이룬다, p-value > 0.05
  • 데이터가 치우쳐 있는 정도를 나타내는 왜도(skewness: S)와 첨도(Kurtosis: K)를 검토한다.
    • 첨도와 왜도가 -1보다 작거나 또는 +1 보다 크지 않으면 변수는 정규분포를 하고 있다고 판단한다.
  • 그러나, 이 부분은 분석 방법에 대해 조금 상이하다.
    • 회귀 분석: 엄밀하게는 2, 관용적으로 3을 사용함. (이일현, 2014)
    • SEM: 왜도가 2 이상이고, 첨도가 7 이상이면 비졍규분포로 봄 (West, Finch & Curran, 1995)

결측치

  • 설문문항에 의도적으로 혹은 부주의로 하나 이상의 문항에 대한 답을 하지 않았을 때 발생함.
  • PLS-SEM에서는 (1) 평균값대체(mean value replacement)와 (2) 사례별 제거 등이 있다.
    • 측정변수(지표변수)별로 5% 미만인 경우에는 평균값 대체를, 5% 초과시에는 사례별 제거방법을 사용한다.
    • 사례별 제거 방법은 권장하지 않는다. 설문지가 많으면 상관이 없지만, 대개의 경우 그렇지 못하기 때문에, 가급적이면 삭제는 권장하지 않는다.
    • 단, 결측치가 사례별로 15%를 초과하는 경우에는 데이터 파일에서 삭제하는 것이 좋다.

이상치

  • 이상치는 특정 설문 혹은 모든 설문에 대한 극단적인 응답값을 말한다.
    • 일반적인 기준으로는 표준화 변량값인 Z값과 표준편차가 $\pm$ 3 이상인 경우는 극단치에 해당한다.
    • 마할라노비스 거리 통계량$D^2$을 이용하여 판단할 수 있음. 만약, $D^2$값이 유의수준 0.01보다 작으면 해당 관측변수는 다변량 이상치로 판단할 수 있다.
    • 이상치는 PLS-SEM을 시행하기 전에 반드시 확인하고 문제가 되는 응답치가 포함되어 있는 경우네느 데이터 파일에서 삭제해야 한다.
    • 가장 일반적인 경우는 이상치가 소수인 경우로 이 때는 해당 이상치를 데이터 파일에서 제거한다.
    • 영향력이 큰 이상치가 있는 경우에는 PLS-SEM에서 OLS 회귀에 영향을 미치기 때문에 면밀한 검토와 평가가 필요하며 조치해야 한다.

다중공선성

  • 측정변수(지표)들 간에 다중공선성(Multicollinearity)가 있는지를 확인한다.
  • 완벽한 공선성(Collinearity)가 나타나는 경우는 거의 없으며 일반적으로 높은 공선성이 나타난다.
  • SmartPLS에서는 분산팽창인자(Variance Inflation Factor: VIF)를 이용하여 평가한다.
    • 모든 측정변수에 대해 VIF값이 임계치인 5보다 작으면 공선성은 존재하지 않는다.
    • VIF값이 5 이상인 경우 잠재적인 공선성 문제(Collinearity Problem)를 지니게 된다.

PLS-SEM vs. CB-SEM

  • PLS-SEMCB-SEM의 차이점은 아래와 같이 서술 할 수 있다.
구분PLS-SEMCB-SEM
사용목적예측이론 검증
표본 수30-100개 가능200-800개
데이터 파일CSV 파일모든 파일 가능
분포 가정분포 가정이 없음, 비모수적 기법엄격한 분포 가정(다변량 정규성이 있어야 함)
모델 복잡성수백 개의 측정 변수 있어도 가능측정변수의 수가 100개 미만
잠재변수당 측정변수 의 수1개 이상3~4개 이상
반영적 지표 + 형성적 지표매우 용이(모두 사용)주로 반영적 지표 사용
반영적 지표 + 형성적 지표매우 용이(모두 사용)주로 반영적 지표 사용
모델 적합도모델 적합도 보고 없음상세한 모델 적합도 보고 필요
오차항의 고려모델 구축 시 오차항(측정오차와 구조 오차)를 표시하지 않음오차항(측정오차와 구조오차)을 모델 구축 시 표시함
재귀모델과 비재귀모델재귀모델(일방향 인과관계)만 가능재귀모델과 비재귀모델 가능
잠재변수 산출잠재변수 점수의 산출 가능, 이 점수를 후속연구에 사용잠재변수 점수의 직접적인 추정이 불가능
모델 평가측정모델과 구조모델 동시에 설정하고 평가(동시분석법)측정모델을 이용해 개별 측정변수와 잠재변수의 신뢰도와 타당도를 분석한 후 구조모델을 통해 가설검증을 시행 (2단계 분석법)

Reference

신건권. (2018). 석박사학위 및 학술논문 작성 중심의 SmartPLS 3.0 구조방정식모델링. 서울: 청람.

데이콘 대회 참여 - 05 GBM 파라미터 튜닝

공지

제 수업을 듣는 사람들이 계속적으로 실습할 수 있도록 강의 파일을 만들었습니다. 늘 도움이 되기를 바라며. 참고했던 교재 및 Reference는 꼭 확인하셔서 교재 구매 또는 관련 Reference를 확인하시기를 바랍니다.

사전작업

!pip install https://github.com/pandas-profiling/pandas-profiling/archive/master.zip
Collecting https://github.com/pandas-profiling/pandas-profiling/archive/master.zip
  Using cached https://github.com/pandas-profiling/pandas-profiling/archive/master.zip
.
.
.
Successfully built pandas-profiling

I. 빅쿼리 연동

  • 지난 시간에 데이콘에서 내려받은 데이터를 빅쿼리에 넣는 작업을 진행하였다.
  • 빅쿼리에 저장된 데이터를 구글 코랩으로 불러오려면 다음과 같이 진행한다.

(1) 사용자 계정 인증

구글 코랩을 사용해서 인증 절차를 밟도록 한다. 아래 소스코드는 변경시키지 않는다. 아래 절차대로 진행하면 된다. Gmail 인증 절차와 비슷하다.

데이콘 대회 참여 - 04 데이터셋 분리

공지

제 수업을 듣는 사람들이 계속적으로 실습할 수 있도록 강의 파일을 만들었습니다. 늘 도움이 되기를 바라며. 참고했던 교재 및 Reference는 꼭 확인하셔서 교재 구매 또는 관련 Reference를 확인하시기를 바랍니다.

사전작업

!pip install https://github.com/pandas-profiling/pandas-profiling/archive/master.zip
Collecting https://github.com/pandas-profiling/pandas-profiling/archive/master.zip
  Using cached https://github.com/pandas-profiling/pandas-profiling/archive/master.zip
.
.
.
Successfully built pandas-profiling

I. 빅쿼리 연동

  • 지난 시간에 데이콘에서 내려받은 데이터를 빅쿼리에 넣는 작업을 진행하였다.
  • 빅쿼리에 저장된 데이터를 구글 코랩으로 불러오려면 다음과 같이 진행한다.

(1) 사용자 계정 인증

구글 코랩을 사용해서 인증 절차를 밟도록 한다. 아래 소스코드는 변경시키지 않는다. 아래 절차대로 진행하면 된다. Gmail 인증 절차와 비슷하다.

ch 06 - 표본의 크기

개요

  • PLS-SEM작은 표본 크기에 의해 식별 문제가 발생하지 않으며 모델이 복잡하고 표본크기가 작은 상황에서도 높은 수준의 통게적 검증력을 가짐

  • 일반적으로 CB-SEM의 경우 표본 크기가 200개 이상이 필요한 것으로 알려짐

  • 반대로 PLS-SEM30-100개 정도의 소표본인 경우에도 적용할 수 있다.

    • 표본크기를 증가시키면 모델 추정의 정확성이 높아지나 표본이 250개 이상이 넘어가면 CB-SEM과 차이점이 없어진다.

최소 표본 크기

Chin(1988)Barclay, Higgins & Thompson(1995)는 최소표본크기 결정에 있어서 10배수 규칙(10 times rule)을 제안함.

  • 단일 잠재변수(구성개념)을 측정하는 데 사용된 형성적 지표 최대수의 10보다 커야 함
  • 구조모델에서 특정 잠재변수(구성개념)로 향하는 경로 최대수의 10배 보다 커야 함
  • 이러한 10배수 규칙에 의하면 PLS-SEM을 사용하는 데 있어서 최소한의 표본크기는 형성적 측정 모델과 반영적 측정모델이 모두 구조모델 속에 포함되어 있는 경우에는 두 기준 모두 적용해 판단한다.

데이콘 대회 참여 - 03 데이터 샘플링과 종속변수 로그변환

공지

제 수업을 듣는 사람들이 계속적으로 실습할 수 있도록 강의 파일을 만들었습니다. 늘 도움이 되기를 바라며. 참고했던 교재 및 Reference는 꼭 확인하셔서 교재 구매 또는 관련 Reference를 확인하시기를 바랍니다.

사전작업

!pip install https://github.com/pandas-profiling/pandas-profiling/archive/master.zip
Collecting https://github.com/pandas-profiling/pandas-profiling/archive/master.zip
  Using cached https://github.com/pandas-profiling/pandas-profiling/archive/master.zip
.
.
.
Successfully built pandas-profiling

I. 빅쿼리 연동

  • 지난 시간에 데이콘에서 내려받은 데이터를 빅쿼리에 넣는 작업을 진행하였다.
  • 빅쿼리에 저장된 데이터를 구글 코랩으로 불러오려면 다음과 같이 진행한다.

(1) 사용자 계정 인증

구글 코랩을 사용해서 인증 절차를 밟도록 한다. 아래 소스코드는 변경시키지 않는다. 아래 절차대로 진행하면 된다. Gmail 인증 절차와 비슷하다.