본문 바로가기

Programming/Extractions

공분산, 상관계수, 결정계수 특징 정리와 파이썬 코드 공분산은 2개 확률변수의 상관 정도를 나타내는데, 평균 편차의 곱으로 구할 수 있다. 수식은 대충 아래와 같다. 계산 결과 두 변수의 covariance가 0보다 크면 x와 y가 비례 관계, 0보다 작으면 반비례 관계이다. 0이면 변수 간 아무 선형관계가 없어 서로 독립 관계라고 할 수 있다. 공분산의 문제는 단위에 영향을 받는다는 것. 예를 들어, 어떤 시험의 만점이 10점인 경우에는 작게, 100점인 경우에는 큰 결과값이 나타난다. 이것 때문에 상관계수(correlation coefficient)가 있다. 상관계수는 공분산을 두 분산의 곱의 제곱근으로 나누어 구할 수 있다. 상관계수의 절대값은 1을 넘지 못하고, 두 변수가 독립이면 상관계수는 0이다. 선형적 관계에서 상관계수는 1~-1의 범위 내에서.. 더보기
원격 프로시저 호출(Remote Procedure Call, RPC) 미들웨어는 다른 소프트웨어 구성 요소 간의 통합을 쉽게 할 수 있도록 표준화된 인터페이스를 제공하며, 소프트웨어의 확장 및 축소를 유연하게 할 수 있도록 소프트웨어 계층 간의 결합도(coupling)를 낮춰준다. 미들웨어는 다수의 프로세스나 소프트웨어 계층 간의 효과적인 데이터 교환을 목적으로 구현된다. 본 글에서는 미들웨어인 원격 프로시저 호출에 대해 살펴본다. ​ RPC는 원격지에 위치하는 프로세스의 주소공간에 정의된 함수나 프로시저를 실행하여 프로세스 간의 통신을 수행하는 방법이다. RPC를 위해서는 IDL(Interface Definition Language)이라는 호출 규약이 정의되어야 한다. 서로 사양이 다른 두 프로세스가 통신을 하기 위해서는 IDL을 이용한 컴파일을 통해 클라이언트와 서버의.. 더보기
메시지 지향 미들웨어(Message Oriented Middleware, MOM) 미들웨어는 다른 소프트웨어 구성 요소 간의 통합을 쉽게 할 수 있도록 표준화된 인터페이스를 제공하며, 소프트웨어의 확장 및 축소를 유연하게 할 수 있도록 소프트웨어 계층 간의 결합도(coupling)를 낮춰준다. 미들웨어는 다수의 프로세스나 소프트웨어 계층 간의 효과적인 데이터 교환을 목적으로 구현된다. 본 글에서는 미들웨어인 메시지 지향 미들웨어에 대해 살펴본다. □ MOM 시스템 구성 MOM 기반의 시스템은 위의 그림과 같이 클라이언트, 메시지 및 메시지 브로커(broker) 구성된다. 클라이언트는 메시지의 송신 혹은 수신 중 하나의 행동만 수행할 수 있으며, 메시지의 송·수신은 API를 이용하여 이루어진다. 브로커는 송신측 클라이언트로부터 받은 메시지를 목적지(destination)에 저장하여 수신.. 더보기
Call by Reference, Call by Value에 대한 고찰 Call by Reference와 Call by Value는 프로그래밍에서 기본적인 내용이다. Call by Value는 용어가 어렵지만 아주 직관적이다. 어떤 변수에 쓰여진 값이 있다면 그 값을 그대로 가져오라는 뜻이다. 반면에 Call by Reference는 포인터에 대한 개념을 알면 이해하기 쉽다. 어떤 변수에 쓰이는 값은 여러 번 사용하기 위해서는 메모리 어딘가에 저장이 되어야 하는데, 이 때 메모리의 주소를 포인터라고 보면 된다. C/C++로 프로그래밍을 한다면 이걸 상당히 고수준으로 사용해야 하지만, 그러나 대부분의 프로그래밍 언어에서는 직접적으로 포인터를 사용하지 않는다. 포인터가 많아지면 디버깅이 상당히 어려워지기 때문이다. 그럼에도 불구하고 분명히 포인터와 같은 Call by Refer.. 더보기
CNN 용어 정리 이 글은 CNN 용어에 대한 필기이다. CNN은 배워본 적 없으니 아주 얕은 수준의 내용이다. channel : 입력과 출력 채널로 구분할 수 있으며, 채널 수가 입력과 출력 개수라고 할 수 있음 kernel : filter의 크기를 지정하는데, filter가 3x3이라면 kernal 사이즈는 3 stride : 필터가 움직이는 보폭 filter : 출력값을 생성하기 위한 행렬 형태의 가중치. filter의 개수가 출력의 개수 padding : same방식은 입력 행렬에 패딩을 두루지만, valid는 원본 그대로 사용 pooling : pool 크기로 데이터를 분할하고 그 중에서 대표값(e. max, min)을 추출. 데이터 크기가 축소됨 이상. 더보기
RNN 학습에 필요한 데이터 분할 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 위의 배열을 순서대로 4개씩 묶으면 3개로 분할 가능하다. (0, 1, 2, 3) / (4, 5, 6, 7) / (8, 9, 10, 11) 시계열은 예측을 위하여 선행 데이터를 지표로 삼기 때문에 이런 식의 데이터 분할은 엄청난 낭비이며, 효과적으로 목표를 달성할 수 없기 때문에 데이터를 조밀하게 활용할 수 있도록 아래와 같이 중복을 허용하여 데이터를 분할하게 된다. (0, 1, 2, 3) (1, 2, 3, 4) (2, 3, 4, 5) ...(중략)... (7, 8, 9, 10) (8, 9, 10, 11) 이렇게 되면 총 9개의 묶음으로 데이터가 분할된다. 맨 끝에 진하게 표시된 숫자는 출력값으로 활용된다. 묶음들끼리의.. 더보기
써드 파티(3rd party) 개발자 써드 파티이니 당연히 퍼스트와 세컨드 파티도 있다. 위키에서는 하드웨어와 소프트웨어 개발자의 예로 설명되어 있다. 퍼스트 파티는 하드웨어 생산이고, 세컨드 파티는 퍼스트 파티와 직접적으로 관련이 있는 소프트웨어 생산자이다. 세컨드 파티와 달리 써드 파티는 퍼스트 파티와 직접적인 관련은 없지만, 하드웨어와 관련된 소프트웨어를 생산한다. ko.wikipedia.org/wiki/%EC%84%9C%EB%93%9C_%ED%8C%8C%ED%8B%B0_%EA%B0%9C%EB%B0%9C%EC%9E%90 서드 파티 개발자 - 위키백과, 우리 모두의 백과사전 위키백과, 우리 모두의 백과사전. 서드 파티 개발자(3rd party developer)또는 써드 파티는 일반적으로 하드웨어 생산자와 소프트웨어 개발자의 관계를 나타.. 더보기
gRPC 정리 gRPC는 구글이 개발한 원격 프로토콜 호출(RPC, Remote Protocol Call) 방식이다. gRPC는 데이터 전송을 위해 HTTP/2를 이용하고 프로토콜 버퍼(Protocol Buffer)라는 인터페이스 정의 언어(IDL, Interface Definition Language)를 사용하여 다른 프로세스의 메소드를 호출한다. HTTP/2는 HTTP/1의 성능을 개선한 버전이다. HTTP/1은 기본적으로 클라이언트 요청에 서버가 응답하기 때문에 매 요청마다 커넥션(connection)을 생성해야 하며 쿠키를 포함한 헤더로 인해 용량이 크다. 반면 HTTP/2는 헤더 테이블과 호프만 인코딩 기법을 사용하여 헤더 정보를 압축하고, 서버가 클라이언트 요청 없이도 리소스를 전달할 수 있으며 하나의 커넥.. 더보기