Basic ML/DL

머신러닝과 딥러닝 기초 개념들을 정리한 채널입니다.
All
ML
DL
DataAnalysis
Visualization
Pandas
Numpy
scikit-learn
Tensorflow
[데이터 전처리] 데이터 불균형
데이터 불균형 불균형 데이터 Imbalanced Data 분류 문제에서 가장 큰 문제는 불균형 데이터를 다루는 것이다. 데이터 불균형은 클래스 분포를 예측해야 하는 분류 문제에서 예측 라벨 값의 분포가 100:1, 200:1 등으로 불균형하게 나타나는 상태를 말한다. 불균형 데이터를 해결하지 않으면 과적합 문제가 발생할 수 있다. 이 문제를 효율적으로 다루기 위해서는 문제를 제대로 이해하고 전략을 잘 세워야 한다. 불균형 데이터의 원인 실제 세계에서의 분배 실제 세계에서 불균형하게 데이터가 구성 하나의 클래스가 다른 클래스에 비해서 덜 발생하는 경우 불법적인 신용 카드 거래는 정상적인 거래에 비해 훨씬 더 적게 일어난다. Data Collection bias 데이터 수집 편향이 데이터 불균형의 원인 어떤 질병이 끼치는 영향 중 극히 일부에만 집중해서 질병 발생 설문조사를 하는 경우, 대부분은 질병을 경험하지 못했다고 함 Event rarity 산업 환경에서 장비 고장같은 이벤트의 희귀성은 데이터 불균형을 초래함 불균형 데이터의 영향
  1. ML
  2. DataAnalysis
  • Y
    Yerim
[데이터 전처리] 수치형 변수 전처리
피처 스케일링 feature scaling 피처 스케일링은 데이터의 값을 변환하는 것을 의미한다. 주어진 데이터의 범위를 계산을 통해 새롭게 바꾼다. 특정 알고리즘은 큰 범위를 가진 데이터에 가중치를 두기도 하고, 어떤 알고리즘은 학습 과정의 효율성에 영향을 미치기도 한다. 피처 스케일링 유의점 스케일링은 분포를 바꾸는 작업이 아니다. 스케일링은 이상치를 제거하는 작업이 아니다. 꼭 필요한 작업인지, 어느 피처에 어떤 스케일러를 사용하는게 좋은지 생각해 보자. 스케일링 함수는 정확하게 사용하다. .fit(): 스케일러가 사용하는 변수 정보 설정 (StandardScaler의 경우 평균, 표준편차) .transform(): 설정된 값을 바탕으로 피처 변환 .fit_transform(): fit과 transform 모두 실행 스케일러를 저장하는 습관을 갖자. 피처 스케일링 방법의 선택기준 표준화 정규화 목적 평균 0, 표준편차 1이 되도록 변환
  1. ML
  2. DataAnalysis
  • Y
    Yerim
[데이터 전처리] 범주형 변수 전처리
변주형 변수 전처리 변주형 변수는 보통 문자열로 되어 있어 머신러닝 모델의 입력 데이터로 사용할 수 없다. 수치형 변수로 인코딩 encoding 해주는 과정이 필요하다. 인코딩 방법 Label Encoding One-Hot Encoding Frequency Encoding Target Encoding Embeding Label Encoding 알파벳 순서로 숫자를 할당해주는 방법 문자열 값을 숫자형 카테고리 값으로 변환한다. ex) ‘Bangul’: 1, ‘Bonn’: 2, … 순서형 데이터에는 적합할 수 있으나, 명목형 데이터에는 적합하지 않다. 숫자의 순서가 특징으로 여겨질 수 있다. 몇몇 ML 알고리즘에서는 예측 성능이 떨어지는 경우가 발생한다. 숫자형 카테고리 값이 중요도로 인식될 수 있으므로 선형회귀와 같은 ML 알고리즘에는 적용하지 않아야 한다. 트리 계열의 ML 알고리즘은 숫자의 이러한 특성을 반영하지 않으므로 레이블 인코딩이 문제 없다.
  1. ML
  2. DataAnalysis
  • Y
    Yerim
[데이터 전처리] 이상치
이상치란? 관측된 데이터의 범위에서 많이 벗어난 아주 작거나 아주 큰 값을 의미 이상치가 의사결정에 큰 영향을 미칠 수 있기 때문에 적절한 이상치 처리는 필수 이상치를 어떤 기준으로 판단할 수 있을까? → Standard Deviation, IQR, z-score, … 이상치가 중요한 이유 데이터 품질 개선: 데이터 오류 탐지, 결측값 대체 모델 성능 향상: 예측 모델 정확도 향상, 머신러닝 모델 학습 개선 통찰력 제공: 데이터 이해 모델 해석 가능성 이상치 탐지 방법 통계적 방법 (Statistical Methods) 표준편차 기반 StandardDeviation 데이터의 평균과 표준편차를 계산하여 일반적인 범위를 벗어난 데이터를 이상치로 간주 평균에서 3개의 표준편차 이상 떨어진 데이터를 이상치로 판단 가능 사분위수 기반 IQR (Interquartile Range) IQR을 계산하여 일반적인 범위를 벗어난 데이터를 이상치로 간주 IQR = Q3(75%) - Q1(25%) 일반적으로 Q1 - 1.5IQR 미만, Q3+1.5IQR 초과 데이터를 이상치로 판단
  1. ML
  2. DataAnalysis
  • Y
    Yerim
[데이터 전처리] 결측치
결측치 유효한 데이터 값이 존재하지 않는 누락 데이터를 NaN(Not a Number)으로 표시한다. 머신 러닝 분석 모형에 데이터를 입력하기 전 누락 데이터를 제거하거나 다른 값으로 대체하는 과정이 필요 누락 데이터가 많아지면 데이터의 품질이 떨어지고 머신러닝 알고리즘을 왜곡하는 현상 발생 원인 데이터를 파일로 입력할 때 빠트리거나 파일 형식을 변환하는 과정에서 데이터가 소실 결측치의 3종류 Missing Completely At Random (MCAR) 완전 무작위 결측 결측값의 발생이 다른 변수와 상관이 없는 경우 전산 오류, 통신 문제 등으로 데이터가 누락된 경우 Missing At Random (MAR) 무작위 결측 결측값의 발생이 특정 변수와 관련이 있으나 얻고자 하는 결과와는 상관이 없는 경우 어떤 상황으로 인해서 발생하는 경우, 기업에서 제조과정에서 A제조공정 B제조공정 중 A가 갑자기 문제가 발생해서 결측치가 발생 A공정에만 문제가 발생한 결측치
  1. ML
  2. DataAnalysis
  • Y
    Yerim
[데이터 전처리] 데이터 전처리
데이터 전처리 데이터 형태: 정형, 반정형, 비정형 데이터 분류: 수치 데이터, 범주형 데이터 컴퓨터가 데이터를 처리할 수 있도록 특정한 형태로 만들어야 한다. 이 과정을 데이터 전처리라고 한다. 대부분의 데이터 사이언티스트가 전처리에 시간을 많이 쏟는다고 응답 데이터 전처리 방법론 Data Cleaning Data Normalization Data Transformation Data Imputation Data Integration Data Cleaning 데이터를 정제한다. 잘못 기입된 데이터, 파손된 데이터, 중복된 데이터 → 데이터를 머신러닝에 집어넣었을 때 에러가 발생할 수 있다. Data Normalization 데이터의 길이 차를 줄인다. 데이터의 변수 간의 스케일이 심하게 차이가 나는 경우 모든 데이터 포인트가 동일한 정도의 스케일로 반영되도록 해줌
  1. ML
  2. DataAnalysis
  • Y
    Yerim
[데이터 수집] BeautifulSoup, Selenium
정적 웹페이지, 동적 웹페이지 정적 웹페이지 웹 서버에 이미 저장된 기본 html 전송 데이터 자체의 변화 없는 한 고정 데이터 전달 Ex) 홈페이지 회사 소개 동적 웹페이지 요청 정보 처리 후 제작된 html 페이지 전송 사용자가 요청하는 상황 등에 따라 다른 데이터 전달 Ex) 뉴스 댓글, 상품 검색 정적 웹페이지 동적 웹페이지 BeautifulSoup O (페이지 내의 고정 html만 전달받음) X Selenium
  1. ML
  2. DataAnalysis
  • Y
    Yerim
[데이터 수집] requests, xpath, user-agent
requests mygoogle.html xpath 경로를 명확하게 만들어준다. 특정 element를 지정하는 요소 Chrome 브라우저 중 하나도 개발자들이 많이 사용하고 있다. 인터넷에 chrome 검색 → chrome 다운로드 후 설치 elements 원하는 요소 → 우클릭 → 검사 점3개 → 도구 더보기 → 개발자 도구 단축키 F12 xpath 우클릭 → copy xpath User agent Robots.txt
  1. ML
  2. DataAnalysis
  • Y
    Yerim
[데이터 수집] 데이터 크롤링과 데이터 스크래핑
머신러닝 데이터 머신러닝에 활용할 목적으로 만들어진 데이터가 공개된 경우도 있다. 인터넷에 있는 여러 정보를 조합하거나, 정기적으로 확인하면 다양한 비즈니스에 활용 가능하다. 인터넷에서 데이터를 추출할 때 스크핑과 크롤링을 사용한다. 스크래핑 Scraping 웹 사이트에서 특정 정보를 추출하는 기술 웹 데이터 → HTML 형식이다. 웹 페이지에서 필요한 정보만 가져오기 위해서는 사이트의 구조를 분석해야 한다. 웹에서 데이터 추출 + 구조를 분석하는 것이 스크래핑이다. 크롤링 Crwaling 웹 사이트를 정기적으로 돌며 정보를 추출 크롤링 하는 프로그램 = 크롤러(Crawler), 스파이더(Spider) 항상 최신정보 유지 가능 데이터 저장 스크래핑과 크롤링을 통해 정보를 추출했다면 데이터를 저장해야 한다. 데이터를 어떤(CSV, JSON, XML, YAML 등) 형태로 어디(데이터 베이스, 파일 등)에 저장할지 결정해야 한다. 텍스트 데이터와 이미지는 전처리 없이 머신러닝 학습이 불가능하다. 데이터에 어떤 특징이 있는지 개발자가 직접 확인하고 가공해야 학습 가능.
  1. ML
  2. DataAnalysis
  • Y
    Yerim
[데이터 수집] 데이터 종류
데이터의 종류 앞의 ‘데이터의 정의’에서 데이터는 데이터 베이스에 저장된다고 언급했다. 데이터의 종류는 데이터가 데이터베이스에 ‘어떤 형식으로 저장’ 되는 지에 따라 ‘정형데이터’, ‘비정형 데이터’, ‘반정형 데이터’로 나뉜다. 정형데이터 형태가 있음 연산이 가능 예) 엑셀, csv 반정형데이터 형태가 있음 연산이 불가능 예) HTML, XML 비정형데이터 형태가 없음 연산이 불가능 예) 사진, 영상, 음성 정형 데이터 (Structured Data) 정형데이터란? 데이터베이스 종류 중 관계형 데이터베이스 (Relational Database; RDB), 스프레트 시트(Spread Sheet), 확장자 csv인 파일에 저장할 수 있는 테이블 형태의 데이터를 의미한다. 수학적 용어 “관계”는 테이블로 유지되는 형성된 데이터 세트를 지정한다.
  1. ML
  2. DataAnalysis
  • Y
    Yerim
[데이터 분석] 상관관계 분석
상관 두 개의 양적 변수 양적 변수 사이의 관계를 분석하는 방법으로 상관과 회귀가 있다 산점도 scatter plot 2개의 양적 변수로 이루어진 그래프 두 양적 변수의 관계를 시각화하여 어떤 관계가 있는지 대략적으로 파악 가능 상관 correlation 2개의 확률변수 또는 데이터 사이의 관계썽을 의미 상관이 있다고 인과관계가 있는지는 알 수 없다 회귀 y=f(x)라는 함수로 두 변수 사이의 관계를 공식화 x를 설명변수 또는 독립변수, y를 반응변수 또는 종속변수라 한다 2개의 양적 변수 간의 관계의 강도를 정량화하는 방법으로 피어슨 상관계수를 사용 상관관계 피어슨 상관계수 2개 양적 변수 사이의 선형 관계가 얼마나 직선 관계에 가까운가를 평가 상관계수라고 하면 보통 피어슨 상관계수를 말한다
  1. DataAnalysis
  • Y
    Yerim
[시각화] 데이터 시각화
데이터 시각화 데이터 시각화란? 데이터 분석 결과를 한눈에 쉽게 보고 이해할 수 있도록 다양한 차트를 활용해 정보를 나타내는 방법 데이터 속의 패턴/규칙을 찾아내는 마이닝의 일종 → 시각적 데이터 마이닝 통계치만으로는 알 수 없는 인사이트를 찾는 데 도움을 줌 결과 공유 시 직관적으로 와닿게 할 수 있다. 데이터 시각화의 효과 효과적으로 데이터 제공 변수간의 관계 확인, 데이터 분석에서 주장 뒷받침, 가설 확인 용도로 사용된다. 시각화 유의점 다양한 시각화 그래프가 많지만, 가장 단순하고 확실하게 이해할 수 있는 시각화가 중요한 것이지, 화려하다고 좋은 것이 아니다. 수치에 대한 주석 처리와 숫자에 대한 정확한 표시는 기본이다. 기본적인 수치에 대한 기준을 명시하지 않으면 데이터를 신뢰할 수 없다. 데이터 시각화의 사례 그래프의 종류 막대 그래프 (Bar chart) 선 그래프 (Line chart)
  1. DataAnalysis
  2. Visualization
  • Y
    Yerim
[데이터 분석] EDA
EDA란? EDA 정의 탐색적 데이터 분석 Exploratory Data Analysis 벨 연구소의 수학자 ‘존 튜키’가 개발한 데이터 분석 방법론 데이터를 다양한 각도에서 관찰하고 이해하는 모든 과정 데이터를 분석하고 결과를 내는 과정에서 지속적으로 해당 데이터에 대한 ‘탐색과 이해’를 기반으로 가져야 한다 EDA의 목적 데이터의 이해 이상치 및 오류 탐지 패턴 발견 중요 변수 식별 EDA의 필요성 데이터 수집 → 데이터 전처리 → 순수 데이터 → EDA (탐색적 데이터 분석) 데이터를 다양한 관점에서 바라보면서 얻을 수 있는 이점들이 존재 데이터가 표현하는 현상을 더 잘 이해, 잠재적인 문제 발견 데이터의 다양한 패턴 발견 → 기존 가설 수정/새로운 가설 설정 자료 수집을 위한 기반 적절한 통계 도구 제시
  1. DataAnalysis
  • Y
    Yerim
[AI] 일반화, 과소적합, 과대적합
일반화, 과대적합, 과소적합 일반화 Generalization 일반적으로 지도학습 모델은 학습 데이터로 훈련 뒤 평가 데이터에서도 정확하게 예측하기를 기대한다. 훈련된 모델이 처음 보는 데이터에 대해 정확하게 예측한다면 이러한 상태를 일반화 (generalization) 되었다고 한다. 모델이 항상 일반화되는 것은 아니다. 과대적합 (Overfitting) 머신러닝 모델을 학습할 때 학습 데이터셋이 지나치게 최적화하여 발생한다. 주어진 훈련 데이터에 비해 복잡한 모델을 사용한다면, 모델은 훈련 데이터에서만 정확한 성능을 보이고, 평가 데이터에서는 낮은 성능을 보인다. 즉, 훈련 데이터는 잘 예측하지만, 일반적인 특징을 학습하지 못해 평가 데이터에서는 낮은 성능을 보이는 상태를 과대적합(Overfitting)이라고 한다. 아래 데이터 셋처럼 데이터를 특정한 조건/구조를 지나치게 반영하면 고양이나 강아지 그림이라고 창의적으로 판단 할 수도 있다. 과소적합(underfitting) 과대 적합의 반대 개념이다. 주어진 훈련 데이터에 비해 너무 간단한 모델을 사용하면, 모델이 데이터에 존재하는 다양한 정보들을 제대로 학습하지 못한다. 이러한 경우 훈련 데이터에서도 나쁜 성능을 보이고 평가 데이터에서도 낮은 성능을 보이는 과소적합(underfitting)되었다고 한다. 모델 복잡도와 데이터셋 크기의 관계 데이터의 다양성이 클수록 더 복잡한 모델을 사용하면 좋은 성능을 얻을 수 있다. 일반적으로 더 큰 데이터셋(데이터 수, 특징 수)일수록 다양성이 높기 때문에 더 복잡한 모델을 사용할 수 있다.
  1. ML
  2. DL
  • Y
    Yerim
[AI] 지도학습, 비지도학습, 준지도학습, 자기지도학습, 강화학습
지도학습, 비지도학습, 준지도학습, 자기지도학습, 강화학습 지도학습 Supervised Learning: 정답(레이블)을 알고 있는 상태에서 학습 비지도학습 Unsupervised Learning: 정답을 모르는 상태에서 새로운 의미나, 관계 찾기 준지도학습 Semi-Supervised Learning: 지도학습 + 비지도학습 (일부 데이터에만 정답) 강화학습 Reinforcement Learning: 정답을 맞춘 경우 보상(가중치), 보상이 높은 것을 더 배우려고 한다 → 지도학습과 유사하지만, 더 좋은 답을 찾아가는 방식 자기지도학습 Self-Supervised Learning: 레이블이 없는 데이터를 학습할 수 있음 지도학습 분류 Classification 데이터를 기반으로 새로운 샘플의 ‘범주형 클래스 레이블’ 예측이 목표 이진 분류(Binary classification): 클래스 레이블 종류가 두 개인 경우 다중 클래스 분류 (multi-class classification): 클래스 레이블 종류가 세 개 이상) 데이터 값을 그대로 사용: 규칙(Rule)을 이용한 알고리즘 의사결정나무(Decision Tree): <예/아니오>라고 대답할 수 있는 질문 (규칙)을 이어 가며 데이터를 구분해 타깃을 학습 거리(Distance)를 이용한 알고리즘 KNN (K-Nearest Neighbour): k개의 근접한 이웃으로 데이터를 분류 서포트 벡터 머신 (support Vectror Machine; SVM): 분류를 위해 기준선을 정의 참고) K-means: 비지도 학습 알고리즘,
  1. ML
  2. DL
  • Y
    Yerim
[AI] 인공지능 개요
AI vs ML vs DL AI (Artificial Intelligence) 인간의 지적 능력을 컴퓨터를 통해 구현 규칙 기반 알고리즘 ML (Machine Learning) 컴퓨터가 스스로 학습하여 인공지능의 성능 향상 선형회귀, 랜덤포레스트 DL (Deep Learning) 머신러닝 알고리즘의 종류 (인공신경망) CNN, RNN, Transformer 머신러닝 Machine Learning “컴퓨터가 명시적으로 프로그램되지 않고도 학습할 수 있도록 하는 연구 분야” 과거 데이터로부터 숨겨진 규칙을 찾아 일반화 → 미래 예측에 활용 전통적인 프로그래밍 규칙 기반 Rule-Based 모든 상황 포괄 어려움 → 예외 취약
  1. ML
  2. DL
  • Y
    Yerim
[Numpy] Numpy 기능
Numpy 배열 ndarray (N-dimensional array) → n차원까지 제공 하나의 배열 속 값들은 모두 동일한 자료형 1 차원: 실수 / 2 차원: Boolean / 3 차원: 정수 축의 개수 (n차원 → n개), 축은 0부터 시작 첫 괄호의 개수 = 차원의 개수 배열 속성 확인 및 변경 배열 생성 유형 1: Python의 list혹은 tuple을 ndarray로 바꾸기 유형 2: 모두 같은 원소로 이우러진 ndarray 생성 유형 3. 연속적인 원소로 이루어진 ndarray 생성 유형 4: random모듈, 주어진 배열 존재 유형 5: random모듈, 주어진 배열 존재 X 배열 연산 사칙 연산: numpy는 같은 위치에 있는 원소끼리 연산 array1 - array2: 같은 위치에 있는 원소끼리 덧셈 array1 + array2: 같은 위치에 있는 원소끼리 뺼셈
  1. Numpy
  • Y
    Yerim
[Numpy] 행렬
행렬 수를 직사각형 모양으로 배열한 것 행: 행렬의 가로줄 열: 행렬의 세로줄 shape: 2X3 성분, 원소: 행렬을 구성하는 요소 ($A_{ij}$) Shape: 4X3 대각성분: 행과 열의 지표수가 같은 성분, Aij에서 i=j인 성분 주대각선: 대각성분을 지나는 선 전치(Transpose): 주대각선을 기준으로 행과 열을 바꾸는 것 행렬 연산
  1. Numpy
  • Y
    Yerim
[Numpy] Numpy란?
Numpy Numerial Python 대표적인 Python 기반 수치해석 라이브러리 배열 연산을 수행하는 다양한 함수 제공 다차원 배열을 효과적으로 처리할 수 있음 Python의 list보다 속도가 빠름
  1. Numpy
  • Y
    Yerim