Programming

Python for loop example

강의 홍보

I. 개요

  • 지난 시간에 for_loop의 기본적인 개념에 대해 살펴봤다.
  • 이번 시간에는 for_loop의 실제 다양한 활용 방안에 대해 살펴본다.

II. 데이터 시각화

  • 변수의 개수에 상관없이 for-loop를 활용하면 무한대로 시각화를 작성할 수 있다.
  • 빠르게 코드로 확인해본다.
  • IRIS 데이터를 수집하는 코드를 작성한다.
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
from sklearn import datasets

iris = datasets.load_iris()
df = pd.DataFrame(iris.data, columns=iris.feature_names)
print(df.head())
   sepal length (cm)  sepal width (cm)  petal length (cm)  petal width (cm)
0                5.1               3.5                1.4               0.2
1                4.9               3.0                1.4               0.2
2                4.7               3.2                1.3               0.2
3                4.6               3.1                1.5               0.2
4                5.0               3.6                1.4               0.2
  • 변수별로 시각화를 작성하기 위해, 우선 변수명을 List에 포함한다.
feature_names = iris.feature_names
print(feature_names)
['sepal length (cm)', 'sepal width (cm)', 'petal length (cm)', 'petal width (cm)']
  • 다음 코드는 시각화 작성을 위한 기본 환경설정이다.
  • figsizeJupyter Notebook에 맞게 최적화 되어 있기는 하지만, 수정할 수 있다.
%matplotlib inline
import matplotlib.pylab as plt

plt.rcParams["figure.figsize"] = (14,4)
plt.rcParams['lines.linewidth'] = 2
plt.rcParams['lines.color'] = 'r'
plt.rcParams['axes.grid'] = True 
  • 그리고 마지막으로 for-loop 활용하는 시각화를 작성한다.
for fea in feature_names:
  data = df.copy()
  # iris.sepal_length[:20].plot(kind='bar', rot=0)
  data[fea].plot(kind='hist', rot=0)
  plt.xlabel(fea)
  plt.title(fea)
  plt.show()

png

데이콘 대회 참여 - 02 GBM을 활용한 머신러닝 예제

공지

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

개요

  • 본 예제에서는 제주 빅데이터 경진대회에서 제공하는 베이스라인 코드를 살려서 작성하였다.
  • 처음 대회를 입문하는 데 있어서, 빠르게 제출하는 것에 의미부여를 하기 바란다.
  • 다만, 데이터를 불러오는 영역 및 머신러닝 모형 알고리즘만 조금 수정하였다.
  • 향후 매일 업데이트 하면서 일종의 가이드라인이 되었으면 좋겠다.

I. 빅쿼리 연동

(1) 사용자 계정 인증

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

ch 03 - PLS-SEM 주요 개념

개요

  • PLS-SEM의 주요 개념 및 유사용어에 대해 살펴본다.
  • 영어로 논문을 써야하기 때문에, 한국어와 영어를 같이 표기했다.

주요개념

  • 잠재변수(Latent Variable): 직접 측정되지 않는 비관측변수(Unobserved Variable)로 측정변수를 통해 간접적으로 측정.
    • 잠재변인, 구인, 구성개념(construct), 차원(dimension), 요인, 이론변수라고도 하며 경로도에는 circle로 표시됨
  • 측정변수(Measured Variable): 직접 측정되는 관측변수(Observed Variable)로 잠재변수를 측정하기 위해 사용된 변수를 말함. (설문문항이 여기에 해당됨
    • 지표변수(Indicator Variable), 명시변수(Manifest Variable), 측정항목(Items)로 표기되며 직사각형 또는 정사각형으로 표시함
  • 외생변수(Exogenous Variable): 독립변수의 개념으로 다른 변수의 변화에 원인(Causes)이나 동기의 역할을 하는 변수로 경로도에서 화살표가 시작이 되는 모든 변수 말함
    • 잠재변수 개념과 결합되면 외생잠재변수(Exogenous Latent Variable)가 됨
  • 내생변수(Endogenous Variable): 종속변수의 개념으로 다른 변수에 의해 영향을 받는 변수이며 화살표를 받는 변수를 말함. 이는 잠재변수 개념과 결합되면 내생잠재변수(Endogenous Latent Variable)가 됨
  • 측정오차(Measurement Error): 측정변수에 포함되어 있는 오차로 잠재변수가 관측변수(측정변수)를 설명하고 난 나머지 즉 설명되지 않은 부분을 말함.
    • 오차항(error term), 잔차(residual)이라고 함. 보통 e로 표시됨.
  • 구조오차(Structural Error): 외생변수로 내생변수를 예측할 때 내생잠재변수에 발생하는 오차로 외생변수가 내생변수를 설명하고 난 나머지를 말함.
    • 방해오차(Disturbance, 방정식오차(Equation Error), 설명오차라고 함), 보통 d로 표시됨
  • 측정모델(Measurement Model, Outer Model): 잠재변수가 측정변수(지표)에 어떻게 연결되어 있는가를 나타내는 모델을 말한다. 이는 측정변수나 잠재변수의 신뢰도와 타당도를 분석하는 데 목적이 있음.
  • 반영적 측정모델(Reflective Measurement Model): 잠재변수가 원인이 되고 측정변수가 결과가 될 때의 측정모델을 말한다.
  • 형성적 측정모델(Formative Measurement Model): 측정변수가 원인이 되고 잠재변수가 결과가 될 때의 측정모델을 말한다.
  • 구조모델(Structural Model): 잠재변수 간의 인과관계를 나타내는 모형으로 가설을 검증하기 위한 모델.
  • 반영적 지표(Reflective Indicators): 특정모델에서 측정변수가 잠재변수로부터 화살표를 받는 측정변수들(혹은 지표들)을 말함.
    • 이 변수에는 측정오차가 존재하며 결과지표(effect indicator)라고도 함.
  • 형성적 지표(Formative Indicators): 측정모델에서 잠재변수가 측정변수들(지표들)에 의하여 영향을 받는 지표를 말한다. 이 변수에는 측정오차가 존재하지 않으며 원인지표(cause indicator)라고도 한다.
  • 인과관계(causation): 원인변수가 결과변수에 미치는 영향관계를 말하며 단방향 화살표로 표시한다.
  • 쌍방향적 인과관계(Reciprocal Causation): 쌍방향적 인과관계는 변수 서로 간 원인-결과를 반복하는 관계를 말함. 상관은 서로 관련되어져 있는 변수 간의 상관을 표시함.

Reference

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

Python for loops in different ways

강의 홍보

I. 개요

  • 여러 형태의 반복문을 배우고 실습한다.
  • 한줄로 작성하는 반복문을 배우고 실습한다.

II. For Loop Basic Syntax

  • 파이썬의 기본 문법은 아래와 같다.
for <변수> in <iterable>:
    <코드>
  • 여기에서 iterable의 개념은 listtuple을 의미한다.
  • 간단하게 for_loop 코드를 작성해보자.
    • 우선, A라는 리스트 객체를 작성한다.
    • for_loop를 활용해서 리스트 안에 있는 것을 하나씩 출력한다.
A = ["철수", "영희", "길동"]
for i in A:
  print(i)
철수
영희
길동

(1) Iterables

  • Iteration을 한국어로 번역하면 되풀이다.
  • 그런데, 어떤 데이터 유형이 되풀이를 할 수 있을가?
    • ListTuple이 되풀이가 될 수 있는 소재인 것은 확실하다.
  • 어떤 객체(=Object)가 있을 때, 이 객체가 iterable 한것인지, 또는 아닌지 확인하는 함수(iter())도 있다.
print(iter("ABC"))
<str_iterator object at 0x7f2464faeb00>
print(iter(["A", "B", "C"]))
<list_iterator object at 0x7f2464faedd8>
print(iter(("A", "B", "C")))
<tuple_iterator object at 0x7f2464faedd8>
print(iter({"A": 1, "B": 3, "C": 3}))
<dict_keyiterator object at 0x7f2464fdd458>
  • 그런데, 수치형의 경우에는 iteration이 적용되지 않는다.
iter(100)
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-48-f3bbc5ecfc9b> in <module>()
----> 1 print(iter(100))

TypeError: 'int' object is not iterable
iter(3.14)
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-12-eb85da4c3f57> in <module>()
----> 1 iter(3.14)

TypeError: 'float' object is not iterable
  • 단일 수치형 데이터를 제외하고는 사실상 모든 데이터가 iterable의 성질을 가지고 있다.

(2) next()

  • next()iterator에서의 next value를 의미한다.
  • 다음 코드를 확인해보자.
A = ["철수", "영희", "길동"]
iterable = iter(A)
iterable

<list_iterator at 0x7f2464fb7dd8>

ch 02 - 구조방정식의 기본 개념과 고려사항

개요

  • 기본적으로 다변량 분석
  • 1세대 분석 방법론
    • 군집분석, EFA, 분산분석, 다항회귀, 로지스틱 회귀분석
  • 2세대 분석 방법론
    • PLS-SEM and CB-SEM
  • 간단한 용어 정리
    • SEM - Structural Equation Modeling
    • CB - Covariance Based SEM
    • PLS - Partial Least Squares SEM (= PLS path Modeling)
  • CB-SEM의 주 목적은 실증적으로 검증 가능한 다중 변수들 간의 체계적 관계 확인
  • PLS-SEM은 주로 탐험적 연구에서의 이론발전에 주로 사용되며, 종속변수의 분산을 설명하는데 주 초점을 맞준다.
  • 본 논문에서는 필리핀에서의 스타트업 등에 관련된 논문 및 자료 수집에 한계가 있기 때문에 PLS-SEM 분석방법론을 채택하여 탐험연구에 준하여 분석을 진행한다.

There are two types of SEM: covariance-based SEM (CB-SEM) and partial least squares SEM (PLS-SEM; also called PLS path modeling). CB-SEM is primarily used to confirm (or reject) theories (i.e., a set of systematic relationships between multiple variables that can be tested empirically). It does this by determining how well a proposed theoretical model can estimate the covariance matrix for a sample data set. In contrast, PLS-SEM is primarily used to develop theories in exploratory research. It does this by focusing on explaining the variance in the dependent variables when examining the model. We explain this difference in more detail later in the chapter.

If else, and more

강의 홍보

I. 개요

  • 조건문에 대해 배우고 실습하는 시간을 갖는다.
  • else와 elif에 대해 배우고 실습한다.
  • 한줄로 작성하는 if_else에 대해 배우고 실습한다.

II. If 조건문 소개

  • Excel을 배운 사람이라면 누구나 아는 문법이다.
    • 다만, 위 문법을 파이썬 언어에 맞게 변형한 것이다.
if <조건=True>:
  <코드1>
  <코드2>

(1) 언제 실행되는가?

  • 위 구문의 뜻이 무엇인가?

ch 01 - PLS SEM Intro

개요

  • 석사 학위 논문을 위해 작성하기 위해 만들었음
  • PLS SEM 모델링을 위한 R 패키지가 존재함
    • plspm: 2020년 5월 14일 R Cran에서 정식 패키지에서 내려감
      • 위 패키지는 원서 약 230페이지 되는 교재도 있음
      • 1차로 위 패키지를 고려했으나 5/14일 패키지가 내려간 이후 선택에서 제외시킴
  • 또한, SMART PLS라는 상용프로그램도 존재함
  • 특정 R semPLS와 위 상용 프로그램을 비교한 논문이 있었고, 다행히 두 프로그램의 결과값이 동일한 것으로 증명되었다.
    ref. Utilization of R Program for the Partial Least Square Model: Comparison of SmartPLS and R
  • 아직 확정지은 것은 아니지만, 향후 추가적인 논문을 진행한다면 위 2개의 패키지와 SMART PLS 상용 소프트웨어를 비교하는 논문도 괜찮을 것이라 생각함

교재

Sample Code

  • 패키지 로드
library("semPLS")
## Loading required package: lattice
  • Sample 데이터 불러오기
data("ECSIsm")
head(ECSIsm)
##      source        target        
## [1,] "Image"       "Expectation" 
## [2,] "Expectation" "Quality"     
## [3,] "Expectation" "Value"       
## [4,] "Quality"     "Value"       
## [5,] "Image"       "Satisfaction"
## [6,] "Expectation" "Satisfaction"
data("ECSImm")
head(ECSImm)
##      source        target 
## [1,] "Image"       "IMAG1"
## [2,] "Image"       "IMAG2"
## [3,] "Image"       "IMAG3"
## [4,] "Image"       "IMAG4"
## [5,] "Image"       "IMAG5"
## [6,] "Expectation" "CUEX1"
data("mobi")
head(mobi)
##   CUEX1 CUEX2 CUEX3 CUSA1 CUSA2 CUSA3 CUSCO CUSL1 CUSL2 CUSL3 IMAG1 IMAG2 IMAG3
## 1     7     7     6     6     4     7     7     6     5     6     7     5     5
## 2    10    10     9    10    10     8    10    10     2    10    10     9    10
## 3     7     7     7     8     7     7     6     6     2     7     8     7     6
## 4     7    10     5    10    10    10     5    10     4    10    10    10     5
## 5     8     7    10    10     8     8     5    10     3     8    10    10     5
## 6    10     9     7     8     7     7     8    10     3    10     8     9    10
##   IMAG4 IMAG5 PERQ1 PERQ2 PERQ3 PERQ4 PERQ5 PERQ6 PERQ7 PERV1 PERV2
## 1     5     4     7     6     4     7     6     5     5     2     3
## 2    10     9    10     9    10    10     9    10    10    10    10
## 3     4     7     7     8     5     7     8     7     7     7     7
## 4     5    10     8    10    10     8     4     5     8     5     5
## 5     8     9    10     9     8    10     9     9     8     6     6
## 6     8     9     9    10     9    10     8     9     9    10    10
  • 모형 적합
ECSI <- plsm(data = mobi, strucmod = ECSIsm, measuremod = ECSImm)
mvpairs(model = ECSI, data = mobi, LVs = "Expectation")

데이콘 대회 참여 - 01 제주시 빅데이터 카드 매출 경진대회 데이터 수집 및 저장

I. 개요

  • 본 과정은 직업훈련기관 수업의 일환으로 진행하였음
  • 수강생들이 기본적으로 어려워하는 클라우드 DB연동부터 구현하여 빠르게 EDA를 활용할 수 있도록 진행함
  • DBBigQuery를 활용함.

(1) 대회 참여 및 파일 다운로드 상세

  • 데이콘은 국내 빅데이터 경진대회이다.

(2) 대회 개요

Ref. https://dacon.io/competitions/official/235615/overview/

  • 주제

    • AI 알고리즘 활용 카드 사용 금액 예측
  • 목표

    • 신용카드 사용 내역 데이터를 활용한 지역별, 업종별 월간 카드 사용 총액 예측
  • 배경

    • 신용카드 사용량을 분석을 통한 ‘Post COVID-19 시대’ 신용카드 사용량 예측 모델 개발
    • 지역 경제 위축 및 중소상공인 경영난 해소를 위한 대책 마련
  • 주최/주관

추천 시스템 개요 및 이론, Surprise Package

I. 개요

  • 대고객 대상으로 한 대부분의 플랫폼 서비스 업체들은 고객 개개인에게 맞춤형의 추천 서비스를 도입하고 있음
    • 전자상거래 업체, 유투브, 애플 뮤직 등
  • ML의 여러 알고리즘 중 비즈니스 관점에 부합하는 기법이 추천 시스템.
  • 추천 시스템의 진정한 묘미는 사용자 본인도 모르는 취향 발견, 재구매로 연결하도록 설계
  • 누가 필요할까?
    • 모든 플랫폼 서비스
    • 이유1: 플랫폼은 다수의 판매자와 소비자를 필요로 함, 문제는 카테고리와 메뉴구성이 복잡해지면 소비자의 제품 선택에 부작용
    • 이유2: 만족도가 떨어지면 고객은 그 플랫폼을 떠날 가능성이 크며, 이는 플랫폼 서비스의 매출 하락과 직결
    • 모든 플랫폼 서비스는 기본적으로 추천서비스를 장착하고 싶어함
  • 영화 데이터를 기준으로 추천시스템을 단계별로 구현함을 목표로 함

II. 추천시스템의 유형 및 역사

  • 추천시스템의 유형과 간단한 역사에 대해 배워보도록 한다.

(1) 유형

  • 크게 세가지로 구분됨.
    • Demographic Filtering
    • 콘텐츠 기반 필터링 (Content Filtering)
    • 협업 필터링 (Collaborative Filtering)
      • 최근접 이웃(Nearest Neighbor)
      • 잠재 요인(Latent Factor)

(2) 역사

  • 초창기: 콘텐츠 기반 필터링 또는 최근접 이웃 기반 협업 필터링이 주로 사용됨.
  • 중기: 넷플릭스 추천 시스템 경연 대회에서 행렬 분해 (Matrix Factorization) 기법을 이용한 잠재요인 협업 필터링 방식으로 우승한 뒤, 유명해짐.
  • 최근: 개인화 특성을 강화하기 위해서 하이브리드 형식으로 콘텐츠 기반과 협업 기반을 적절히 결합해 사용하는 경우도 늘고 있음

III. Surprise 패키지

  • Surprise 패키지는 추천시스템 패키지이다.
  • 설치 방법은 다음 문서를 참조하기를 바란다.
  • 해당 패키지를 활용하면 보다 쉽게 API를 활용해서 추천 시스템을 구축할 수 있다.
    • 다양한 추천 알고리즘들이 해당 패키지에 내재되어 있다.

(1) 패키지 개요

  • 영어 원문에는 아래와 같이 설명되어 있다.

추천 시스템 패키지 소개 - recommenderlab

I. 개요

  • 추천시스템을 처음 배우는 접하는 사람들을 위해 준비한 입문 Tutorial이다.

  • 패키지 소개서에 있는 내용을 한글로 번역하였다.

  • This R package provides an infrastructure to test and develop recommender algorithms. The package supports rating (e.g., 1-5 stars) and unary (0-1) data sets. Supported algorithms are:

  • 이 R 패키지는 추천자 알고리즘을 테스트하고 개발할 수 있는 인프라를 제공한다. 이 패키지는 등급(예: 별 1-5개) 및 단항(0-1) 데이터 세트를 지원한다. 지원되는 알고리즘:

    • User-based collborative filtering (UBCF)
    • Item-based collborative filtering (IBCF)
    • SVD with column-mean imputation (SVD)
    • Funk SVD (SVDF)
    • Alternating Least Squares (ALS)
    • Matrix factorization with LIBMF (LIBMF)
    • Association rule-based recommender (AR)
    • Popular items (POPULAR)
    • Randomly chosen items for comparison (RANDOM)
    • Re-recommend liked items (RERECOMMEND)
    • Hybrid recommendations (HybridRecommender)
  • For evaluation, the framework supports given-n and all-but-x protocols with