728x90
반응형

분류 전체보기 204

선형대수 - (2) 가우스 소거법

연립 방정식과 행렬 다음과 같은 연립 방정식이 있다고 하자: (선형방정식은 1차식의 변수들만 존재하는 것이다.) $\begin{cases} x + 2y = 3 \\ x + 5y = 6 \end{cases}$ 위는 1번식에 4를 곱하고 2번식을 빼면, 3y = 6이 되고, y = 2라는 답이 나온다. 그리고 이를 대입해 x로 풀어내면, x = -1이라는 답을 얻을 수 있다. 위의 직선을 평면에 표현하면, x와 y는 두개의 직선의 교점임을 알 수 있다. 이를 컬럼벡터와 행렬을 통해 표현해 풀 수 있다. 위의 문제를 행렬과 벡터로 표현하면 다음과 같이 표현할 수 있다. $\begin{bmatrix} 1 \quad 2 \\ 4 \quad 5 \end{bmatrix} \begin{bmatrix} x \\ y \e..

선형대수 - (1) 선형성

선형성 (Linearity) f(x)는 x라는 변수에 대한 함수이다. f는 또한 연산(operation)이다. f가 선형성을 가지려면 두가지 조건을 만족해야 한다. 1. Superposition (중첩) $f(x_1 + x_2) = f(x_1) + f(x_2)$ 만약 $x_1$과 $x_2$를 함수에 적용하기 전에 더한 것과, 함수에 각각 적용한 뒤 더한 것의 결과가 같으면, 중첩의 조건을 만족하는 것이다. 2. Homogeneity (동질성) $f(a x) = a f(x)$ 만약 x에 상수 a를 곱한 값에 함수를 적용한 것이, 함수에 적용한 뒤 상수 a를 곱해준 결과와 같으면, 동질성의 조건을 만족하는 것이다. 위를 하나의 수식으로 표현하면 다음과 같이 표현할 수 있다. $f(a_1 x_1 + a_2 x..

스프링 프레임워크 - (2) 스프링 빈 (Bean)

빈 스코프 스프링의 DI컨테이너가 관리하는 Bean의 생존기간을 의미한다. 스프링에서 설정할 수 있는 Bean의 스코프는 다음과 같다: singleton 디폴트값이다. 하나의 인스턴스가 생성되고, 이후에는 해당 인스턴스를 공유하게 된다. prototype DI에 Bean에대한 요청이 들어올때 마다 Bean을 생성한다. 멀티스레드 환경에서 사용되는 Bean에 많이 쓰인다. request HTTP 요청이 들어올 때 새로운 Bean을 생성한다. 웹에서만 쓰인다. session HTTP 세션이 생성될 때 새로운 Bean을 생성한다. 웹에서만 쓰인다. global session 글로벌 HTTP세션이 생성될 때 Bean을 생성한다. 포틀릿 웹에서만 쓰인다. application 서블릿 컨텍스트가 만들어질 때 Bea..

스프링 프레임워크 - (1) 의존성 주입 (DI)

DI의 생성 배경 생성자에서 모든 의존성이 있는 클래스들을 초기화 하면 클래스들 간의 결합도가 높아진다. 하지만 비지니스 로직을 구현하다 보면, 다양한 컴포넌트들을 조합하게 되고, 이를 효율적으로 분리해야 협업이나 외주개발이 용이하게 되는데, (컴포넌트가 실제로 구현될 때 까지 시간이 걸릴 수 있음) 이를 Dummy클래스로 대체하는 방법이 있다. 따라서 결합도를 낮추려면, 생성자에서 구현하는 것 보다, 생성자에서 인자로 받는것이 더 효율적일 것이다. 이렇게 하면 Interface에 명시된 메소드명만을 사용하게 되고, 실제 Impl의 구현체는 쉽게 수정할 수 있게 된다. 하지만 생성자에서 직접 주입을 받는 경우에도, 각 컴포넌트를 개발자가 직접 주입해주어야 하기 때문에, 로직적인 변경이 필요할 경우 큰 수..

데이터 중심 애플리케이션 - (1) 데이터 시스템

데이터 시스템 용어 정리 신뢰성 (Reliability) 하드웨어나 소프트웨어의 결함, 에러와 같은 역경에 직면해도 시스템이 올바르게 동작하는가 결함성 (fault-tolerant) 시스템에서 잘못될 수 있는 일인 결함을 예측하고 대처할 수 있는 능력 결함 (fault) 시스템의 사양에서 벗어난 요소 장애 (failure) 필요한 서비스를 제공 못하고, 시스템이 멈춘 상태 카오스 몽키 (Chaos-Monky) 넷플릭스의 테스트 방법의 일종으로, 시스템의 구성 중 하나의 혹은 여러 프로세스를 임의로 죽여 결함을 일으켜 테스트하는 방법 확장성 (Scalability) 데이터, 트래픽의 양, 복잡도 증가를 위해 시스템이 확장할 수 있는가 부하 매개변수 (load parameter) 시스템의 현재 부하를 기술하..

스파크 튜토리얼 - (8) 스파크 스트리밍

Spark Streaming 스트리밍이랑 실시간으로 끊임없이 들어오는 데이터를 의미합니다. Spark Streaming이란 이렇게 실시간으로 들어오는 데이터를 처리하기 위한 모듈입니다. 이러한 스트리밍 데이터는 개발자가 지정한 단위의 시간동안 들어온 데이터를, 묶음으로 Batch 처리를 하게 됩니다. 아래의 그림을 보면 이해가 빠를 것입니다. 이렇게 들어오는 데이터 소스는, Apache Kafka, Kinesis와 같은 메시지 서버일 가능성이 높습니다. 하지만 Kafka나 Kinesis를 실습하기에는 너무 길어지기에, 파이썬 웹소켓을 통해 스트리밍 데이터를 보내보도록 하겠습니다. Spark Streaming Context 생성 Spark Streaming은 pyspark.streaming패키지에서 불러올..

강화학습 공부 - (3) Model Free Prediction

Model Free Prediction 환경이 MDP로 표현될 수는 있지만, MDP가 주어지지 않은 문제를 풀고싶다. 이러한 상황에서 사용할 수 있는 기법들을 설명한다. 동적 계획법 (Dynamic Programming) 동적계획법은 문제를 작은 단위로 나누고, 반복을 통해 문제를 푸는 것이다. 이 방식은 상태의 수가 증가할 수록 계산 복잡도가 엄청나게 늘어난다. 또한, 동적 프로그래밍은 상태가 모두 알려진 MDP에 대해서만 풀 수 있다. 만약 MDP가 주어지지 않고, 모든 상태에 대해 알 수 없다면, 동적계획법을 사용할 수 없다. 따라서, 정책이 주어졌고, MDP를 알지 못할 때, 가치함수를 찾는 과정을 알아보고자 한다. 몬테카를로 학습 (Monte-Carlo Learning) 몬테카를로 학습은 직관적..

스파크 튜토리얼 - (7) 스파크 SQL

Spark SQL 스파크는 여러 방면에서 SQL을 사용할 수 있도록 지원합니다. 이전 포스팅들에서는 csv나 json파일을 통해 DataFrame을 만드는 방법을 잠깐 설명했습니다. 이 DataFrame 기능이 곧 Spark SQL에 포함되는 기능입니다. Spark SQL과 DataFrame SQLContext는 spark session을 내장하고 있습니다. 아래와 같이 입력하게 되면 sqlCtx가 내장하고 있는 SparkSession을 가지고 올 수 있습니다. In [ ]: sqlCtx.sparkSession 이 내용이 중요한 것은, SparkSession이 파일 로딩 및 JDBC나 여러 Connector를 사용한 SQL서버와의 연결이 가능하기 떄문입니다. 따라서 JDBC나 ODBC를 지원하는 모든 S..

스파크 튜토리얼 - (6) 데이터프레임

DataFrame DataFrame은 테이블처럼 구조화된 데이터로, 스키마를 표현할 수 있는 RDD의 확장 구조체입니다. python의 pandas나 SQL을 써본사람이라면, 이해가 빠를것입니다. Row DataFrame의 행을 Row라고 합니다.. Row들이 곧 하나의 레코드가 되고, Row들이 RDD를 내장함으로서, 효과적으로 데이터를 접근할 수 있게 해줍니다. 데이터 지난번 포스팅에서 사용했던 json데이터를 사용하겠습니다. 다운로드 링크는 아래에 있습니다. DataFrame 생성 데이터프레임은 크게 두가지 방법으로 생성할 수 있습니다. 스파크 세션을 통해 직접 생성 SQL컨텍스트의 테이블을 통해 생성 두가지 방법 모두 스파크 내부에서의 동작은 크게 다르지 않습니다. 각각의 방법을 살펴보도록 하겠습..

강화학습 공부 - (2) 동적계획법

동적 프로그래밍 (동적 계획법, Dynamic Programming) "동적" (Dynamic) 이라는 단어는 순차적이고, 일시적인 방면의 문제를 푸는것이라는 것을 의미한다. 이는 복잡한 문제를 푸는 방법론이다. 큰 문제를 서브 문제들로 분해한다. 그리고 그 서브 문제들을 다 풀어내면, 큰 문제를 풀 수 있다. 동적 프로그래밍으로 풀 수 있는 문제들은 두가지 특성을 가지고있다. 최적의 세부구조를 가지고있다. 최적의 세부 구조들을 풀어내면, 그로 인해 원래의 문제가 풀리는 구조이다. 최적의 해를 찾기 위해 세부 문제들로 분해해야 한다. 겹치는 세부 문제들이 존재한다. 세부 문제들이 반복되어 일어난다. 또한 그 세부 문제들을 캐시(저장)하고 재사용한다. 따라서 그 세부 문제들을 반복해서 풀어내면 효율적으로 ..

728x90
반응형