데이터베이스에서 사용되는 데이터 타입은 각 DBMS(데이터베이스 관리 시스템)마다 다를 수 있지만, 일반적으로 사용되는 데이터 타입은 다음과 같습니다:

1. 문자형 데이터 타입 (String Types)
   - CHAR(n) : 고정 길이 문자열. n은 문자열의 길이.
   - VARCHAR(n) : 가변 길이 문자열. n은 최대 길이를 지정.
   - TEXT : 긴 텍스트 데이터를 저장하는 데 사용 (길이 제한이 없음).
  
2. 숫자형 데이터 타입 (Numeric Types)
   - INT : 정수형 데이터. 크기나 범위는 DBMS에 따라 다를 수 있음.
   - BIGINT : 더 큰 범위의 정수형 데이터.
   - FLOAT : 부동소수점 숫자 (소수점을 포함한 수).
   - DOUBLE : 더 정확한 부동소수점 숫자.
   - DECIMAL(p, s) : 고정 소수점 숫자. p는 총 자릿수, s는 소수점 아래 자릿수.
  
3. 날짜와 시간 데이터 타입 (Date and Time Types)
   - DATE : 날짜(년, 월, 일).
   - TIME : 시간(시, 분, 초).
   - DATETIME : 날짜와 시간을 포함한 데이터.
   - TIMESTAMP : 타임스탬프. 주로 시스템 시간이 자동으로 기록되는 용도로 사용.
   - YEAR: 연도.

4. 불리언 데이터 타입 (Boolean Type)
   - BOOLEAN : 참(True) 또는 거짓(False)을 나타내는 데이터 타입.

5. 이진 데이터 타입 (Binary Data Types)
   - BINARY(n) : 고정 길이 이진 데이터.
   - VARBINARY(n) : 가변 길이 이진 데이터.
   - BLOB : 이진 대용량 객체(Binary Large Object). 이미지, 오디오, 비디오 파일 등을 저장.

이 외에도 각 DBMS에는 특정 기능에 맞는 추가적인 데이터 타입들이 존재할 수 있습니다. 예를 들어, MySQL은 `JSON`, PostgreSQL은 `JSONB`와 같은 JSON 데이터 타입을 지원합니다.

다양한 데이터 타입이 있지만 각 DBMS별로 명칭이 다를 수 있다는 점은 꼭 알아야 합니다. 사실상 데이터타입의 큰 분류만 알면 된다는 점만 꼭 알고 있으면 됩니다.

특히 실무에서 정형데이터를 다루는 데이터분석가들이 문자, 숫자, 날짜에 대한 타입을 자주 사용한다고 알고 있으면 되고요, 데이터타입은 꽤나 민감한 부분이라고 볼 수 있습니다. 데이터 전처리 등을 하는데 오류가 많이 발생할 수 있는 부분이며, sql작성 시 데이터 타입의 형뱐환을 많이 사용하기 때문에 데이터분석가를 꿈꾸는 사람이라면 꼭! 집고 넘어갈 수 있도록 해야 합니다.

  요즘... 아니 몇 해 전 부터 머신러닝, 딥러닝, 인공지능 등이 핫한 기술 이슈였다.

사람이 하는 단순한 데이터 분석이 아니라, 데이터를 통해 기계가 스스로 학습하거나, 추측하여 분석 또는 만족할 만한 결과물을 만들어 준다. 관련해서 파이썬(Python) 언어는 분석가들 뿐만 아니라 학생들도 많이 찾는 언어가 되었고, 텐서플로우(Tensorflow), 아나콘다(Anaconda), 파이참(pycharm) 등 프레임워크, 라이브러리, IDE도구 등 많은 것들이 생겼고, 데이터라벨링, 데이터사이언티스트 등 다양한 형태의 직업 및 보조직업군이 생겼다.

 

  데이터를 분석할 수 있도록 시스템을 구축하는 일을 하면서 지금보다 더 빨리 관심을 가지고, 포괄적인 지식, 개발능력을 갖추어야 했으나, 사실상 일을 하면서 병행하기란 어렵다. 중간중간 스터디 모임도 하고, 개인 프로젝트도 진행해 보았지만.. 너무나 어려운 것... 그래도 느낀 건 알고리즘을 사용하기 위해 Python으로 데이터 전처리 하는 부분들은 기본적으로 데이터에 대한 이해, 그리고 전처리 과정을 SQL을 통해 상당히 단축시킬 수 있는 부분들이 있다는 점이다. 

 

  각설하고 머신러닝 강의를 올리기 전에 먼저 주저리주저리 머신러닝 강의를 들어가기 위한 개요를 적어봤다. 크게 의미는 없을 수 있다. 이제 그만하고 머신러닝이 무엇인지, 또 딥러닝, 인공지능이 무엇인지 공부를 해보자.

 

  먼저  머신러닝(M.L, Machine Learning), 딥러닝(D.L, Deep Learning), 인공지능(A.I, Artificial Intelligence) 에 대한 정확한 구분을 하는 것이 필요하다. 여담이지만 공부를 할 때에는 특정 분야의 마인드맵을 그리고 공부하는 것이 좋다. 내가 지금 딥러닝을 공부하는데, 그 출발은 어디서부터인지, 하위 분류는 어떤 것인지 등이다. 또 중요한 건 공부한 내용을 누군가에게 한 두 마디라도 설명할 수 있는 수준은 되어야 한다. 그래야 어느정도 내가 개념이 잡혀있다는 얘기이다. 어쨌든... 

 

1. 머신러닝 그리고 인공지능, 딥러닝

  머신러닝(M.L, Machine Learning), 딥러닝(D.L, Deep Learning), 인공지능(A.I, Artificial Intelligence) 을 이해하려면 먼저 아래와 같이 포함관계만 이해하면 된다. 어디서 많이 봤을 것이다. 

※ ML, DL, AI 포함 관계

  - 인공지능 : 기계를 인간 행동의 지식에서와 같이 행동하게 만드는 것, 즉 기계가 인간과 같이 생각하고, 행동하도록 하는 기술

  - 머신러닝 : 컴퓨터를 인간처럼 학습, 컴퓨터가 스스로 학습할 수 있도록 도와주는 알고리즘이나 기술

  - 딥러닝 : 머신러닝 알고리즘 중 인공신경망 알고리즘을 기반으로 발전 시킨 기술

 

2. 머신러닝의 개념

  데이터는 대부분... 아니 모두 규칙, 패턴이 존재한다. 사람이 동물을 분류하는 것, 글자를 읽는 것 뿐만아니라 상대의 심리를 예측하고, 카드게임의 확률을 계산하는 것 조차도 데이터에 기반한 규칙, 패턴을 통해 인지, 예측한다. 이 기본적인 생각으로부터 머신러닝을 접근하면 좋다. 내 삶에 발생하는 모든 행동들이 그냥 단순한 선택들이 아니라, 경험(데이터)를 바탕으로 찰나의 생각으로 이루어진다. 기계도 사람과 같이 생각할 수 있도록 수많은 알고리즘을 만들며, 그 알고리즘들을 더 정확하게 발전시켜 가고 있다.

  요약하면, 머신러닝은 알고리즘을 이용하여 데이터를 분석, 그 결과를 스스로 학습하여 이를 기반으로 어떠한 판단이나 예측을 하는 것을 의미한다.

  위의 머신러닝의 정의를 보면 머신러닝의 과정은 간단하다. 머신러닝은 어떠한 판단이나 예측하는 것이 목적이라고 했다. 어떠한 판단이나 예측하는 것을 알고리즘, 즉, 모델이라고 한자. 그 모델 안에 데이터를 넣고 결과로 판단이나 예측값을 얻기 위함이다. 만약 데이터가 잘못된 정보라면 결과가 부정확 할 것이다. 그래서 데이터에 대한 전처리(정제) 과정을 거쳐 모델 안에 데이터를 넣는 것이 중요하다. 모델의 결과로 반복학습을 통해 오류를 최소화하는 과정, 사람과 같은 결과를 만들기 위함이다.

 

  정리해보자면

    (1) 판단이나 예측을 위한 알고리즘, 모델 설계

    (2) 정답을 얻기 위한 정확한 데이터 추출(데이터 정제, 전처리)

        ※ 비정형데이터(사진, 동영상, 음성 등)에 대해 정형데이터화 하기 위한 정답을 정의하는 작업을 데이터라벨링 이라고 한다.

            사진 속 동물이 개인지, 고양이인지에 대한 정답 정의과정(라벨링) 이 있어야 함

    (3) 반복학습을 통해 오류를 최소화

3. 머신러닝의 학습방법

  머신러닝의 학습방법은 크게 3가지가 있다. 지도학습(Supervised Learning), 비지도학습(UnSupervised Learning), 강화학습(Reinforcement Learning) 세 개 이다. 위키백과의 사전정 정의는 아래와 같다.

  - 지도학습(Supervised Learning) : 훈련 데이터(Training Data)로부터 하나의 함수를 유추해내기 위한 방법.

        데이터와 결과를 알려주고 알고리즘을 최적화 하는 학습방법, 회귀 및 분류하기 위해 사용

  - 비지도학습(UnSupervised Learning) : 데이터가 어떻게 구성되었는지를 알아내는 문제의 범주.

        데이터만 주고 결과를 알려주지 않아 데이터를 기반으로 결과를 얻는 학습방법, 클러스터링하기 위해 사용

  - 강화학습(Reinforcement Learning) : 어떤 환경 안에서 정의된 에이전트가 현재의 상태를 인식하여, 선택 가능한 행동들 중

        보상을 최대화 하는 행동 혹은 행동 순서를 선택하는 방법

 

  세 가지에 대해 아주 간단하게만 이해하고 다음 강의해서 세가지 학습방법에 대한 개념, 방법, 알고리즘 등을 학습해 보자.

 

(+) 읽어주셔서 감사합니다.

 

 

SQL은 SELECT 구문만 잘 작성하면 된다. 이번에는 SELECT 문법의 기본 구조를 설명하려고 한다.

 

SQL작성할 때에는

  1. 데이터 추출을 위한 테이블 및 테이블 내 데이터에 대한 이해

  2. 데이터 추출 기준

  3. SQL조회 환경

SQL전문가가 되기 위해서는

  많은 SQL작성 ★

  참고로 필자는 처음 프로젝트에서 SELECT 문을 하루에 10개 이상, 수개월간 바꾸고 수정했더니 추출하지 못한 데이터가 없었다. 

  (거짓말 좀 보탰음.)

 

처음에 SQL작성 할 때에 손가락이 안움직이면(타자를 못치겠으면) 일단

 

SELECT ...

  FROM ...

WHERE ...

GROUP BY ...

ORDER BY ...

 

다섯개를 작성하고 고민하자.

 

당부할 말은 내가 보기 쉬운 SQL이 남도 보기 쉽다.(가독성) 글씨도 연습하고 습관을 들이듯이, SQL작성도 습관이 중요하다

위의 다섯 개를 작성할 때는 꼭 개행을 하자, 추가되는 정보들도 무조건 개행을 하며 줄을 맞추는 것이 좋다.

SELECT  ... FROM  ... WHERE  ... GROUP BY  ... ORDER BY ...  >> 가독성이 아주 안좋다.

 

SELECT : (필수) 고르다. 조회하는 칼럼을 입력

   FROM : (필수) (출발지) ~에서. 테이블을 입력

  WHERE : (선택) 어디에서. 조회조건 입력

GROUP BY : (선택) GROUP 정의. SELECT 구문에 집계함수 사용 시(사용하지 않아도 됨)

ORDER BY : (선택) 데이터 정렬

 

위의 구문을 먼저 작성하고 테이블, 컬럼, 조건등을 입력한다. 위의 구문에 대해 익숙해지고 JOIN 구문에 대해 정확이 이해하면 SQL작성이 두렵지 않을 것이다.

 

SQL 작성법은 어려울 것이 없다.

1. 위의 5개 구문을 먼저 작성(나중에 지우면 됨)

2. 가독성 (개행은 필수, 위의 5개 구문의 열 맞추기)

3. Step By Step (한번에 하려고 하지 말것)

4. ALIAS는 무조건 입력(이 내용은 이후 강의에서...)

5. SELECT 구문의 결과도 하나의 가상의 테이블(이 내용은 이후 강의에서...)

SQL작성할 땐 일단 5개 쓰기 ! 가독성 좋은 SQL !

 

 

+ Recent posts