선형회귀(Linear Regression)이란?

선형회귀란, 분포된 데이터를 특정 선으로 회귀시켜 대표하는 하나의 선으로 표현하는 방법을 말합니다. 이때의 선은 분포된 데이터를 잘 표현할 수 있도록 정하는 것이 중요합니다. 


위의 차트에서 빨간 점은 입력된 데이터(Feature)을 나타내며, 파란색 선은 점들의 분포를 대표해서 나타낸 선형회귀된 선 입니다.



선형회귀 표현식

선형회귀는 종속 변수 y와 한 개 이상의 독립 변수 x를 갖습니다. 이를 식으로 표현하면 다음과 같습니다.


  • y': 예측하고자 하는 라벨(Label)을 의미하며, 위의 차트에서 '섭씨 온도'가 y'이 됩니다.
  • b: 초기 값의 편향(Bias)를 의미하며, 위의 차트에서 x=0일 때의 y 값(y 절편)입니다.
  • w1: Feature1의 가중치를 의미하며, 위의 차트에서 파란선의 기울기 입니다.
  • x1: 입력된 특성인 Feture1을 의미하며, 위의 차트에서 x축 입니다.


특성이 여러개인 선형회귀

만약 입력된 특성이 여러 개일 경우, 선형회귀 식은 아래와 같이 표현합니다.



Node.js를 공부하다보면 비관계형 데이터베이스인 Mongo DB를 꼭 한 번은 접하게 됩니다. 이번 포스트에서는 Amazon Linux 2 AMI에 Mongo DB를 설치하는 방법을 다루도록 하겠습니다. 저는 AWS EC2 인스턴스로 Linux 2 AMI을 사용하고 있지만, 다른 환경의 Linux 2에서도 설치 방법이 모두 동일합니다~



Linux 2에 MongoDB 설치하기

1. MongoDB가 이미 설치 되어있는지 확인하기

이미 MongoDB가 설치되어 있는지를 확인하기 위해 아래의 MongoDB의 버젼을 확인하는 명령어를 통해 사전 체크를 합니다.
mongod --version


2. 유저를 root로 변경

MongoDB 레퍼지토리 파일을 만들기 위해 유저를 root로 변경해 줍니다. 
sudo su


3. Pacakge Management System에 MongoDB 레퍼지토리 파일 만들기

Linux 2의 yum 명령어를 통해 MongoDB를 바로 설치하기 위해서는 먼저 MongoDB 설치 정보를 담고 있는 레퍼지토리를 만들어야 합니다. 아래의 경로와 이름으로 .repo 파일을 만들어 줍니다.
- File Path: /etc/yum.repos.d/mongodb-org-4.0.repo
vi /etc/yum.repos.d/mongodb-org-4.0.repo


mongodb-org-4.0.repo 파일을 vi 편집기로 열었다면 아래의 코드를 그대로 작성해 주시길 바랍니다.

[mongodb-org-4.0]
name=MongoDB Repository
baseurl=https://repo.mongodb.org/yum/amazon/2/mongodb-org/4.0/x86_64/
gpgcheck=1
enabled=1
gpgkey=https://www.mongodb.org/static/pgp/server-4.0.asc



4. MongoDB 설치

정상적으로 MongoDB 레퍼지토리를 만들었다면 sudo yum install -y mongodb-org 명령어를 통해 설치가 진행됩니다.
sudo yum install -y mongodb-org

만약에 위의 명령어를 통해서 설치가 이루어지지 않는다면 레퍼지토리 파일에 오타가 있을 가능성이 매우 높습니다. 안 될 경우, 레퍼지토리 파일을 다시 체크해주시길 바랍니다. 모든게 완벽하다면 아래와 같이 설치 화면이 나타납니다.






이전 포스트를 통해 Babun과 Oh My Zsh가 잘 설치 되었는지를 확인하였습니다. 이번에는 Oh My Zsh에서 작업 환경을 더 있어보이게 만들어주는 Agnoster 테마를 적용하는 방법에 대해서 포스트 하겠습니다.

 

  

Agnoster 테마 적용 방법

1. zsh 속성 파일 vi 편집기로 열기

가장 최신 버젼의 Babun을 설치하였다면 이미 Oh My Zsh가 기본 쉘로 설정되어 있으며, 기본 테마로 Babun이 설정되어 있습니다.

아래의 명령어를 입력하여 zsh의 속성을 변경할 수 있습니다.

vi ./.zshrc

위의 명령어를 입력하면 .zshrc 파일을 편집할 수 있는 화면이 나타나고, ZSH_THEME이 babun으로 되어있는 것을 확인 할 수 있습니다.

 

 

2. Zsh 테마 Agnoster로 바꾸기

ZSH_THEME="babun"이 적혀 있는 라인에 마우스 왼쪽 클릭하여 커서를 위치 시킵니다. 그리고 키보드의 insert를 누르면 vi 편집기에서 수정을 할 수 있게 됩니다. 여기서 babun을 agnoster로 변경해 줍시다.

 

 

그 다음 ESC를 누르고 :wq를 입력하여 ./zshrc 파일을 저장(Write)하고 나와(Quit)줍니다.

 

3. Babun 재실행 하기

Babun을 종료하였다가 다시 켜 보면 Babun에 Agnoster 테마가 적용 된 것을 확인 할 수 있습니다.

 


그런데 먼가 우리가 생각했던 것 만큼 이쁘질 않습니다. 디렉토리가 파랗게 하이라이트되어 표시 되기는 하지만 맨 위에서 보여준 것 처럼 이쁜 화살표 모양으로 표시 되질 않고 있습니다.

이는 Windows에 Agnoster테마에 사용되는 Powerline이라는 폰트가 없어서 폰트가 깨져 나타나는 것 입니다. 다음 과정을 통해 Powerline을 설치해보도록 하겠습니다.

 

4. Powerline 폰트 설치하기

Powerline 폰트를 다운 받습니다.(주소: https://github.com/powerline/fonts) 그 다음, 다운받은 폴더를 찾아 install.ps1(Windows PowerShell 파일)을 마우스 우측 클릭을 합니다.  'PowerShell에서 실행'을 선택하여 설치하여 줍니다.(Powerline 폰트 설치에는 3~5분 정도가 소요될 수 있습니다)



5. Babun 폰트 변경하기

Powerline 폰트 설치가 완료되면 Babun에서 설치된 폰트로 변경해 주기만 하면 됩니다!

Babun을 실행시켜 제목 표시줄에 마우스 우클릭으로 Options을 선택합니다.



 그 다음, 왼쪽 카테고리에서 Text를 선택한 후, Font 창에서 Select를 눌러 폰트를 'DejaVu Sans Mono for Powerline'으로 변경해 줍니다.



 6. Powerline이 적용된 Agnoster 테마 확인

모든 설정이 정상적으로 완료되었으면, 아래의 사진과 같이 이쁜 Babun 화면을 볼 수 있으실 겁니다!

이제 이쁘고 멋진 Babun으로 AWS 클라우드 서버에 접속하여 원격으로 제어 해 볼까요?



 

 

Amazon Web Service(이하 AWS)에서 클라우드 서버를 호스팅 할 경우 터미널을 이용해 원격으로 접속할 필요가 있습니다. 터미널의 종류로는 Windows PowerShell, Babun, Putty 등 다양한 것이 있지만, 이번 포스트에서는 Babun을 설치하여 Oh My Zsh까지 확인하는 방법을 다루도록 하겠습니다.

 

 

Babun 이란?

Babun은 bash보다 더 좋은 zsh 환경설정을 할 수 있는 프레임워크인 Oh My Zsh 테마를 적용할 수 있는 Windows Shell 입니다. 예전에는 Babun에다가 Oh My Zsh를 따로 설치하여야 했지만 최신 버젼의 Babun에서는 Oh My Zsh가 기본으로 설정되어 제공됩니다.

 


Babun 설치 방법

1. Babun 다운로드

공식 홈페이지(http://babun.github.io/)에 접속하여 Babun을 다운 받습니다.(제가 이용하는 버젼은 babun-1.2.0-dist 입니다)

 

 

 

2. Babun Intall

다운받은 폴더의 압축을 풀어 Install 파일을 찾아 실행시킵니다.

 

 

3. Babun 실행 및 Zsh 설정 확인

Babun이 정상적으로 설치되었다면 바탕화면에 Babun을 실행 시킬 수 있는 아이콘이 생깁니다.(만약 아이콘이 없다면, Window + R을 눌러 실행창에서 babun을 입력하시면 됩니다)

Babun을 실행하여 Zsh가 정상적으로 설정되어 있는지 확인해 보도록 하겠습니다. 아래의 두 명령어를 입력하면 설치된 zsh의 버젼과 현재의 기본 Shell이 무엇인지 확인 할 수 있습니다.


zsh --version
which $SHELL

 

결과 화면이 아래와 같이 나오면 정상적으로 설치된 겁니다.

 

 

 

 

머신러닝(Machine Learning) 이란?

머신러닝 시스템은 입력된 다양한 정보를 조합하여 새로운 정보를 적절히 예측하는 방법을 학습하는 것을 말합니다.



머신러닝에서의 주요 용어

Labels

라벨(Label)은 예측을 하고자 하는 대상 항목을 의미합니다. (단순 선형 회귀에서 y 변수)

담배의 향후 가격, 사진에 표시되는 사물의 종류 등 무엇이든지 Label이 될 수 있습니다.

Features

특징(Feature)은 입력되는 정보를 의미합니다. (단순 선형 회귀에서 x 변수)

과거의 담배 가격, 이메일 안의 텍스트 단어 등 현재 알고 있어 예측에 사용되는 정보는 모두 Feature가 될 수 있습니다.

Examples

예(Example)는 입력된 데이터들(x)의 특정 객체입니다. x는 벡터라는 것을 나타내기 위해 굵게 표시합니다. Example은 두 개의 카테고리로 구분됩니다.

  • Label이 있는 예: Labeled Examples: {features, label}: (x, y)
    Model을 학습시키기 위해 Label이 있는 Examples를 사용합니다.

  • Label이 없는 예: Unlabeled Examples: {features, label}: (x, ?)
    Label이 있는 예를 통해 Label이 없는 예의 라벨을 예측합니다.

위의 표는 집의 평균 가격을 예측하기 위해 방의 개수와 침실의 개수 등의 정보가 주어진 Data Set 입니다. 주어진 Data Set에서는 medianHouseValue가 우리가 예측하고자 하는 Label입니다. 이미 입력 정보로 Label 주어져있는 medianHouseValue 행의 Features를 통해 주어지지 않은 medianHouseValue를 예측합니다.

Model

모델(Model)은 Feature과 Label의 관계를 정의합니다. 예를 들어 위의 Data Set에서 방의 개수(totalRooms)와 집의 평균 가격(medianHouseValue)는 긴밀한 연관이 있다고 생각할 수 있습니다.

Model's Life에서 Training(학습)과 추론(Inference)라는 두 단계를 알아보도록 하겠습니다.

  • Training(학습): 모델을 만들거나 배우는 것을 의미합니다. 즉, Label이 있는 예를 모델에게 보여 주고, 모델이 Feature과 Label의 관계를 점차적으로 학습하도록 합니다.
  • Inference(추론): 학습된 모델을 Label이 없는 예에 적용하는 것을 의미합니다. 즉, 학습된 모델을 통해 적절한 예측(y')를 해냅니다. 예를 들어, 추론하는 동안 라벨이 없는 새로운 예로 medianHouseValue를 예측 할 수 있습니다.

Regression(회귀) vs. Classification(분류)

  • Regression Model(회귀 모델): 연속적인 값을 예측하는데 사용됩니다. 예를 들어 다음과 같은 질문에 대한 답을 얻는데 회귀 모델이 사용될 수 있습니다.
    (=> 수치로 표현할 수 있는 것을 예측)
    - 서울의 아파트 가격이 얼마인가요?
    - 유저가 유투브 광고를 클릭할 확률이 얼마인가요?
  • Classification Model(분류 모델): 불연속적인 값을 예측하는데 사용됩니다. 예를 들어 다음과 같은 질문에 대한 답을 분류 모델은 예측할 수 있습니다.
    (=> 수치로 표현할 수 없는 것을 예측)
    - 주어진 이메일이 스팸 메일입니까?
    - 이 사진이 강아지 사진이 맞습니까?


구글이나 네이버에 들어갈 때 웹 페이지에서 하이퍼링크를 클릭해서 들어가기도 하지만, 주소창에 구글 URL(https://www.google.co.kr)을 직접 입력하여 들어가기도 합니다다. 이렇게 인터넷 상의 모든 사이트에는 URL이란 것이 사용되고 있다. 이번 포스트에서는 항상 사용해서 익숙하지만 잘 신경쓰지 않았던 URL에 대해서 다뤄보도록 하겠다.


1. URL이란?

URL이란, Uniform Resource Locator의 약자로 직역하면 자원 위치 지정자 표준이 된다. 주소 문자열이라고도 하며 네트워크 상에서 자원이 어디 있는지를 알려주기 위한 규약을 URL이라고 한다.


URL(Uniform Resource Locator): 네트워크 상에서 자원이 어디 있는지를 알려주기 위한 규약




2. URL의 구성 요소

URL은 크게 Protocol, Host, Query, Path 라는 4개의 요소로 구성되어 있다. 구글에 '코딩하는 토끼'라는 문장을 검색한 URL을 한 번 자세히 들여다 보자.


 구분

설명 

 Protocol

 어떤 통신 규약을 따라 통신을 하는지를 나타냄

Host 

 정보를 가져오는 사이트 이름(혹은 컴퓨터의 위치)

Query

 어떤 작업(검색, 수정, 업로드 등)을 수행할 것인지에 대한 정보

 Path

 접근하려고 하는 파일의 경로




+ Recent posts