cool hamsters never sleep

[Part 3. SW역량] 요약본 본문

2022 Bigdata Class/Note

[Part 3. SW역량] 요약본

슈슈 susu 2022. 9. 23. 01:02

1장. 데이터 사이언스를 위한 Python 응용 문법

1. 파이썬 시작하기

1) 주피터 노트북 주요 단축키  

- m : 마크다운 모드

- y : 코드 모드

- ctrl + shift + - : 셀 분할

- a : 셀 위에 신규 셀 추가

- b : 셀 아래에 신규 셀 추가

 

2. 파이썬 기본 문법

1) 컨테이너 타입 : 여러 개의 값을 다루는 자료형

- 리스트 : 순서 O, 변경 가능, 추가/삭제 가능

- 튜플 : 순서 O, 변경 불가, 추가/삭제 불가

- 세트 : 순서 X (집합), 변경 가능, 추가/삭제 가능

- 딕셔너리 : key-value쌍, 변경 가능, 추가/삭제 가능

 

3. 파이썬 응용 문법

1) Numpy

- square() : 제곱

- sqrt() : 제곱근

- consum() : 누적합

- std() : 표준편차

 

2) 배열 특징과 생성

- 같은 종류의 데이터를 담는다

- 차원을 갖는다

- 빠르게 연산을 처리한다 (반복문을 사용하지 않는다)  

 

- 배열의 생성

np.array([1, 2, 3]) : 초기화할 값을 지정하여 배열 생성

np.zeros() : 값을 0으로 초기화하여 배열 생성

np.ones() : 값을 1로 초기화하여 배열 생성

np.arange() : 수의 순차적인 증감을 이용하여 배열 생성

np.rand() : 랜덤한 숫자로 배열 생성

 

np.reshape(행, 열) : 배열 변형

np.shape() : 배열 형태 확인

np.dtype() : 배열 데이터 타입 확인

np.astype(float) : 배열 데이터 타입 변경

 

3) Pandas

- Series : 1D-array와 다르게 이름과 인덱스 존재

- DataFrame : Series가 여러개

 

2장. Python으로 배우는 데이터 전처리 이해 (1)

 

GitHub - 2022shushu/BigData2022

Contribute to 2022shushu/BigData2022 development by creating an account on GitHub.

github.com

1. 데이터 전처리 이해

1) 중요성 : 적합한 데이터 확보하여 데이터의 다양성과 형태의 품질 확보하는 것이 분석 모델의 완성도를 높이고 결과의 신뢰성 높이는 방법 (다양성과 신뢰성 확보)

 

2) 저장하기 용이하게, 데이터 전처리

- 필터링 : 목적에 맞지 않는 데이터 제거

- 변환 : 데이터 저장이 용이한 형태로, 한 형식이나 구조에서 다른 형식이나 구조로 변환

- 정제 : 결측값 처리, 이상값 및 잡음 제거

 

3) 분석하기 용이하게, 데이터 후처리

- 변환 : 다양한 형식으로 수집된 데이터를 분석 용이하도록 일관성 있는 형식으로 변환

- 통합 : 출서 다르지만 상호 연관성이 있는 데이터를 하나로 결합. 중복 데이터 검출하거나 표현 단위가 다른 것을 표현이 일치토록 변환

- 축소 : 불필요한 데이터 축소해 고유한 특성은 손상되지 않도록 하고, 분석에 대한 효율성 높이는 과정으로 속성의 특성 유지하면서 축소

 

4) 데이터 분석에서의 데이터 전처리 - 데이터 정제 (데이터의 정합성을 확보하기 위한 과정)

- 실수화 : 컴퓨터가 이해할 수 있는 실수형으로 변환

- 정제 : 속성이 비어있는 데이터나 잡음, 결측값, 이상값, 모순된 데이터 등을 정합성이 맞도록 교정하는 작업으로 문제 식별 및 탐색을 통해 정보 수집 시기 및 방법 결정

- 통합 : 여러개의 데이터베이스, 데이터 집합 또는 파일 통합하는 작업으로 서로 다른 데이터 세트가 호환 가능하도록 통합

 

5) 데이터 분석에서의 데이터 전처리 - 분석 변수 처리 (효율성 높이기 위한 과정)

- 축소 : 변수 선택, 차원 축소

- 변환 : 데이터 스케일링 포함

- 불균형 데이터 처리 : 특정 클래스의 데이터가 타 클래스 데이터 수와 너무 차이가 날 때 비율 맞추기

 

2. 데이터 실수화 (Vectorization)

1) 범주형 데이터의 실수화

- 문자형 데이터를 범주형 숫자로 변환 (대부분 숫자만 입력으로 받을 수 있으므로)

 

2) 범주형 데이터의 연속형 데이터 변환

- 더미변수 (가변환) = One Hot Encoding

- 범주형 변수의 데이터 값 범주가 n개를 갖고 있으면, 기준이 되는 범주를 제외한 n-1개 변수 생성

 

3) 텍스트 데이터 실수화

- Bag of Words : 단어의 빈도 수를 세서 수치화 단어 표현

- Countvectorizer : 문서 집합에서 단어 토큰을 생성하고, 각 단어 수를 세어 Bag of Words로 인코딩

- TF-IDF : 단어의 빈도와 역 문서 빈도를 사용하여 DTM (문서단어행렬) 내의 각 단어들마다 중요한 정도를 가중치로 주는 방법

- TfidVectorizer : 단어의 가중치를 조정한 BOW로 인코딩

 

3. 결측값 처리

1) 데이터 정제의 이해 : 결측값, 잡음, 이상값 등 데이터 오류를 일으킬 수 잇는 요인 제거 및 불일치 해결하여 신뢰도 향상

- 오류의 원인

오류 원인 설명 예시
결측값 값이 비어있음 미입력
노이즈 개입된 임의적 요소로, 참값에서 벗어나게 함 잘못 기록
이상값 데이터의 범위에서 많이 벗어난 값 평균에 영향을 주는 값
모순, 불일치 동일한 개체에 대한 측정 데이터가 다르게 나타남 주소 동일하지만 우편번호 상이
중복 동일한 데이터가 여러번 저장 동일한 주문 데이터 여러건 존재

 

2) 결측값 처리의 이해 : 속성값은 Na (기록 안됨), NaN (수학적으로 정의되지 않은 값), Inf (무한대), Null (값 비었음) 등으로 표현

- 결측값의 유형

유형 설명
완전 무작위 결측 다른 변수들과 아무 상관이 없음
무작위 결측 다른 변수와 연관이 있어 발생되었지만,
그 변수 자체가 결과에 영향을 미치지 않음
비 무작위 결측 결과에 영향이 있는 변수때문에 결측값 발생

- 결측값 처리 절차 : 식별 -> 부호화 -> 대체

 

3) 결측값 처리 기법

- 삭제 : 단일값 삭제, 목록 삭제

- 대치 : 단순 대치법 (완전 분석법, 단순 확률 대치법, 평균 대치법), 다중 대치법 (대치 -> 분석 -> 결합)

 

4. 이상값 처리

1) 이상값 이해 (노이즈는 패턴이 존재한다는 점에서 다름)

- 발생 원인 : 다른 클래스의 데이터, 자연 변형, 데이터 오류 (실험/측정), 고의적인 이상값

 

- 유형

유형 설명
점 이상값 다른 데이터와 비교하여 차이가 큰 데이터 발생
상황적 이상값 상황에 맞지 않는 데이터 발생
집단적 이상값 개별 데이터는 정상처럼 보이지만, 여러 데이터를 모아서 보면 비정상적으로 보이는 데이터 집단 발생

 

2) 데이터 이상값 탐색 기법

- 통계적 가설 검정 : 최소값 혹은 최대값 기준으로 이상값 여부 판단

기업 설명
Z 검정 표준화 점수 (Z-score) 이용하여 통계량의 분포를 표준정규분포로 근사할 수 있는 유의수준 정하고,
유의수준 벗어나는 값을 이상값으로 검출
카이제곱 검정 - 데이터가 정규분포 만족하나, 자료의 수가 적은 경우에 이상값 검정
- 검정통계량 : 자유도가 1인 카이제곱분포를 따르는 통계량이며, 임계치보다 클 경우 한 개 이상의 이상값 있다고 판단

 

- 사분위수 범위 : 제3사분위수에서 제 1사분위수 뺀 값 (전체 자료의 중간에 있는 절반의 자료들이 지니는 값의 범위)

 

- 회귀진단 : 주어진 데이터 셋과 이 데이터 셋을 이용하여 추정한 회귀모델 사이에 서로 일치되지 않는 점들을 찾아내는 과정

 

- 거리 : 두 관측치 사이의 거리를 측정하여 다른 데이터들에 비해 값이 크다면 이상값으로 탐지

 

- 밀도 : 상대적 밀도를 고려해 이상값 탐지

기법 설명
LOF - 목적 : 국소적 정보를 이용하여 이상값 정도 파악
- 관측치 주변의 밀도와 근접한 상대적 비교를 통해 이상값 탐지
DBSCAN - 노이즈가 있는 밀도 기반 공간 클러스터링 대표하는 알고리즘
- 밀도와 최소포인트 2가지 파라미터를 기반으로 코어와 보더로 분류
기타 - iForest : 의사결정트리 이용
- 군집 기반 이상값 탐색 기법 : k-Means, DBSCAN 등

 

3) 데이터 이상값 처리 기법

기법 설명
기준 제거 극단치 경계 (최대값, 최소값)을 벗어나는 이상값 제거
절단 - 극단치 경계를 기준으로 특정 비율만큼 제거
- 10% 절단 : 상, 하단 5% 해당 데이터 제거
조정 - 상단과 하단의 극단치를 극단치 경계값으로 조정
- 데이터 손실율이 적어져 설명력 향상

 

3장. Python으로 배우는 데이터 전처리 이해 (2)

1. 분석 변수 처리 이해

1) 분석 변수 처리

- 확보한 데이터 사용하여 정보 추가하는 일련의 과정

- 새로운 데이터 추가하지 않고도 기존의 데이터를 보다 유용하게 만드는 방법

 

2) 분석 변수 처리 유형

- 데이터 축소 (변수 선택, 차원 축소)

- 파생변수 생성

- 데이터 변환 (변수 변환)

- 불균형 데이터 처리

 

3) 변수

- 관찰된 항목이나 대상 (관측치)의 특성을 수치화하기 위해 쓰이는 속성

- 변하는 수 또는 변하는 값을 저장할 수 있는 공간

 

4) 인과 관계 관점의 변수 유형 (사용 용도)

- 독립변수 : 다른 변수에 영향 받지않고 종속변수에 영향을 주는 변수 (원인)

- 종속변수 : 독립 변수로부터 영향을 받는 변수 (결과)

 

5) 데이터 특성에 따른 변수 유형

- 질적변수 : 수치화되지 않은 자료 상태

- 양적변수 : 질적 자료를 객관적 도구로 수치화 한 자료

 

6) 데이터 형태 관점의 변수 유형

- 범주형 변수 (질적 변수) : 명목변수, 순위변수

- 순위형 변수 (양적 변수) : 이산형, 연속형

 

7) 척도 및 분석 관점 변수 유형

- 범주형 변수 (질적 변수) : 명목변수, 순위변수

- 연속형 변수 : 등간변수 (간격변수), 비율변수

 

2. 변수 선택

1) 변수 선택

- 해결하고자하는 문제에 대한 유의미한 변수 선택하는 과정

- 통계학적으로 종속변수에 유의미한 독립변수 선택하는 과정

- 궁극적 목적 : 예측 모델의 오차를 최소화할 수 있는 최소한의 변수 집합 선택

 

2) 변수 선택 기법

- 필터 기법 : 특정 모델링 기법에 의존하지 않고, 데이터의 통계적 특성을 이용해 관련성 높은 변수를 선택하는 기법 (래퍼 기법 사용 전, 전처리에 사용 가능) -> 카이제곱 검정, 정보 이득, 큰 상관 계수, 0에 가까운 분산

- 래퍼 기법 : 변수의 일부만을 사용해 모델링을 수행하고, 그 결과를 확인하는 작업 반복하여 변수 집합 선택하는 방법 -> 전진 선택법, 후진 제거법, 단계별 선택법

- 임베디드 기법 : 모델 자체의 파라미터 값에 따라 변수 선택이 가능한 기법 (필터 기법과 래퍼 기법의 장점 결합) -> 라쏘회귀, 릿지회귀, 엘라스틱 넷, SelectFromModel

 

3. 파생변수 생성

 

GitHub - 2022shushu/BigData2022

Contribute to 2022shushu/BigData2022 development by creating an account on GitHub.

github.com

1) 파생변수

- 기존 변수에 특정 조건 혹은 함수 활용하여 새로운 변수 조합해서 사용 (연산, 조합, 분해, 함수, 조건문 등)

- 주관적일 수 있으나, 유의미한 특성이 객관적으로 반영

- 논리적 타당성 확인 필요

 

2) 요약변수

- 데이터를 분석에 맞게 종합한 변수

- 많은 모델을 공통적으로 사용할 수 있어 높은 재활용성

 

3) 파생변수 추가 방법

- 한 값으로부터 특징 추출

- 한 레코드 (행) 내의 값 결합

- 다른 테이블의 부가적인 정보 참조

- 다수 필드 내에 시간 종속적인 데이터를 피봇

- 레코드 요약

- 필드 요약

- 단순한 표현 방식으로 변환

- 단위 변환

 

4. 변수 변환

1) 변수 변환 : 변수의 유형에 따라 분석 방법이 다르므로, 불필요한 변수를 제거하거나 변환하여 분석에 용이하게 가공

- 왜도 : 자료 분포의 모양이 좌/우 어느 쪽으로 얼마만큼 기울어져 있는가의 비대칭성 정도

- 첨도 : 자료의 분포가 중심에서 어느정도 몰려 있는가 측정 (높고 낮음)

 

2) 정규 변환 : 변수의 분포 형태 확인하여, 정규분포를 따르지 않은 경우 변환

- 데이터의 분포와 정규성 검정

- Q-Q plot

- 정규점수그림 또는 정규확률그림

 

3) 변수 변환 기법 (정규 반환)

- 로그 변환

- 제곱급 변환

- 박스-콕스 변환

 

4) 변수 변환 기법 (스케일링) : 서로 다른 변수의 값의 범위를 일정 수준으로 맞추는 작업 (변수들에 대한 상대 비교)

- 표준화  : 각각의 데이터를 평균이 0이고 분산이 1인 가우시안 정규분포 가진 값으로 변환

- 정규화 : 서로 다른 변수의 크기를 통일하기 위해 데이터의 범위를 0과 1 사이로 변환

- 최소-최대 정규화 : 모든 데이터가 [0, 1] 범위 안에 들어가도록 조절

- 최대 절대값 정규화 : 절대값이 가장 큰 수를 절대값으로 전체를 나눠, 모든 데이터 범위를 [-1, 1]로 조절

 

5. 불균형 데이터 처리

1) 불균형 데이터 : 각 변수를 가진 데이터에 각 집단에 속하는 데이터 수가 동일하지 않은 상태

2) 오버 샘플링 (업 샘플링) 기법 : 낮은 비율 클래스의 데이터 수 늘림 (랜덤 오버 샘플링 = 리 샘플링, 보더라인 스모트, 아다신)

3) 언더 샘플링 : 높은 비율 클래스의 데이터 수 줄임 (토멕링크, CNN, QSS)

 

6. 차원 축소

1) 차원 축소 : 분석 효율성 (비용 최적화)와 효과성 (결과의 정확성) 위해서 비즈니스의 의미와 특성 보존하면서 변수 줄이는 과정

- 차원의 저주 : 차원이 증가할수록, 필요 데이터의 부족으로 모델 성능 저하 현상 발생

- 다중공산성 : 다중회귀분석에서 독립변수 간 상관관계 발생 (같은 의미 갖는 변수가 2개일 경우 강함) -> 중복된 변수 제거 필요

 

2) 차원 축소 기법 (각 변수 간 독립성 확인 필요)

- 특성 선택 (변수 선택) : 여러 변수들 중에서 주요 특성을 갖는 변수만 선택

- 특성 추출 : 변수들 간 관계를 파악하여 선형 혹은 비선형 결합 활용해 새로운 특성 추출

- 주성분 분석 : 고차원 공간의 표본을 선형 연관성이 없는 저차원 공간으로 변환

- 요인 분석 : 데이터에 관찰할 수 있는 잠재적 변수 존재한다고 가정하며, 모형 세운 후 관찰 가능한 데이터를 이용하여 해당 잠재요인을 도출하고 데이터 구조 해석 (상관관계 +- 3을 벗어나는 자료는 부적합)

- 특이값 분해 : 실수 공간에 정의된 M * N 차원의 행렬 데이터에서 특이값 추출

- 다차원 척도법 : 개체들 사이의 유사성과 비유사성 측정하여 2차원 또는 3차원 공간상에 점 표현

- 판별분석 : PCA (데이터 분산을 가장 잘 설명하는 축 찾음), LDA (예측 변수 클래스를 잘 구분할 수 있는 축 찾음) 

- t-SNE : 고차원 데이터를 저차원 데이터로 시각화하고, 데이터 간 거리를 통계적 확률로 변환하여 임베딩 (문자를 수치화한 값)에 이용하여 안정적 임베딩 학습 결과 표현

 

4장. Python으로 배우는 외부 데이터 수집과 정제 (1) - 웹 크롤링 / 스크래핑

1. 웹 크롤링 / 스크래핑

1) 웹 페이지 추출

- HTTP 헤더와 HTML의 meta 태그 기반으로 인코딩 방식 판별 필요

- 표준 라이브러리 urllib.request 모듈 사용하여 웹페이지 추출

 

2) 문자코드 다루기

3) HTTP 헤더에서 인코딩 방식 추출

4) meta 태그에서 인코딩 방식 추출

 

2. 스크래핑 (웹 페이지에서 데이터 추출)

1) 정규 표현식을 이용한 스크래핑

2) XML을 이용한 스크래핑

 

3. 데이터 저장

1) CSV 형식으로 저장

2) JSON 형식으로 저장

3) SQLite3 DBMS 로 저장

 

4. 스크래핑 프로세스

1) lxml을 이용한 스크래핑

2) Beautiful Soup을 이용한 스크래핑

 

5. URL과 퍼머 링크

1) URL 구조

2) 절대 URL과 상대 URL

3) 상대 URL을 절대 URL로 변환

4) 퍼머링크

5) 목록/상세 패턴

 

5장. Python으로 배우는 외부 데이터 수집과 정제 (2) - 크롤러 만들기

1. 기본 웹 크롤러

2. 고급 웹 크롤러

3. 셀레늄을 이용한 크롤러

Comments