Study 47

자바 기본서를 다시 읽다. 5 - 함수적 인터페이스의 Default Method

4강에서 알아보았던 함수적 인터페이스들은 andThen()과 compose()라는 디폴트 메소드를 가지고 있다. 이 디폴트 메소드들은 첫번째 메소드의 처리결과를 두번째 메소드의 매개값으로 넘겨주지만, 인터페이스AB = 인터페이스A.andThen(인터페이스B); or 인터페이스AB = 인터페이스B.andThen(인터페이스A); 최종결과 = 인터페이스AB.method(); 위와같이 인터페이스 AB 의 method()를 호출하기 위해 매개값으로 인터페이스 A와 B의 연산값을 넘겨준다면 andThen은 인터페이스A 호출 -> 인터페이스B 호출 compose는 인터페이스B 호출 -> 인터페이스A 호출을 먼저 한다. Consumer와 Function API를 사용한 코드를 통해 알아보자. import java.ut..

Study/Java 2022.03.27

NLP의 이해

1. NLP ( natural Launguage Processing ) : 텍스트에서 의미있는 데이터를 처리하는 기술. 자연어는 기계어에 비해 처리하기가 어렵기 때문에 전처리 과정이 필요한데, Tokenization, cleaning, normalization 의 단계를 거친다. 토큰 : 문법적으로 더 이상 나눌 수 없는 언어 요소 OOV : Out of Vocabulary - 구축한 단에 사전에 단어가 없어 null값으로 처리됨. 단어사전수가 많아지면 Vector 수가 많아지고, 단어 사전 수가 적으면 예측력이 떨어지기 때문에 적절한 단어사전의 수를 정하는 것이 중요하다. 형태소 분석과 명사 추출 : Token을 만들 때 형태소나 명사 단위로 추출을 하는 방법. BPE : 형태소와 명사 추출 방법 라이..

CNN의 이해

1. Neural Network Input Layer - Hidden Layer - Output Layer가 weight 값에 의해 연결되어있다. Activation : 다음 모델에 값을 넘기는 방식. 액티베이션을 사용하는 이유는 비선형으로 딥러닝을 해석하기 위함이다. 선형으로 딥러닝을 설명하는 경우 복잡한 케이스에 대해서 하나의 식으로 설명할 수가 없기 때문이다. 따라서 임계치가 넘어가면 다음 뉴런을 Activate 시키는 뉴런의 활동방식과 동일하기 인공신경망에서도 Activation 처럼 중간 네트워크를 사용한다. Optimization : MSE : (예측한값 - 실제값) ^ 2 을 통해 Loss 를 측정. 제곱을 하는 이유는 오차에 대해 가중치를 주기 위하거나 미분할때 쉬우려고. 입력값에 따른 L..

데이터 과학과 AI

1. Data Planning 단계 : forecast는 시계열분석.x 의 final 값 이후에 어떤 값이 예측될 것인가? : prediction은 모형 설계 후 x의 도메인 내에서 y값 예측. 2. Data preparing - 데이터를 가공하기 전에 탐색하고, 구조적 측면을 파악한다. Without 모형 Resistance : 일부 관측 개체의 지나친 영향력에 저항하라 : 중앙값을 보면서 Residual : 일탈에 주목하라 : 튀는 값을 주목하라. 잔차(y - y의 예측값)가 큰 값을 보면 거기에 유의미한 결과가 있다. Re-Expression : 같은것이라도 달리 나타내어 득을 취한다. 3000 - 1000 을 로그를 취함으로써 30 - 10으로 나타낼 수 있는것처럼. Raw 데이터에 집착하지 않는..

쿼리 성능 측정시 체크 리스트 정리

쿼리 성능을 측정하고자 할때 기본적으로 아래의 리스트를 체크해보도록 한다. 인덱스 스캔 관련 체크리스트 1. 인덱스 사용이 가능한가? - where 연락처 is null 처럼 null 조건만 있는 경우, 인덱스 사용이 불가능하다. - 쿼리에서 참조하는 컬럼들은 인덱스 안에 저장되어 있어야 한다. 2. 인덱스 범위 스캔이 가능한가? - 부정형 비교의 경우 인덱스 사용이 불가능하다. where 직업 '학생' where 직업 is not null - 인덱스 컬럼을 가공한 경우 인덱스 사용이 불가능하다. - 묵시적 형 변환을 한 경우 > 숫자형과 문자형이 비교될 때 숫자형이 우선시 되기 때문에 컬럼 타입과 맞춰주어야 한다. http://wiki.gurubee.net/pages/viewpage.action?pag..

Study/Oracle 2022.03.19

조인의 개념과 실행 절차

조인의 수행은 기본적으로 두 테이블씩 이루어진다. 두개씩 조인 후 나온 실행 결과 set 을 가지고 또 다른 테이블과 조인을 한다. Cartesian Product Select e.name, d.dname from emp e cross join depth d; Cartesian product는 조인 조건 없이 하는 Cross Join으로써 위와 같이 tab1의 row 수 * tab2의 로우 수 만큼 데이터가 출력된다. 이런 조인 조건은 Group by 에서 사용하던 rollup, cube나 grouping sets로 구현하는 것을 구현할 수 있다. ROLL_UP select deptno, job, sum(sal) as total from emp where deptno in ( 10, 20) group b..

Study/Oracle 2022.03.19

조인 기법과 조인 수행 원리

위와 같이 테이블과 인덱스 설정이 있다고 가정해보자. 모든 이미지 출처는 https://www.youtube.com/watch?v=13Yga-pv-ls&t=190s 이다. 전광철님 감사합니다. Nested Loop Join 하나의 테이블을 기준으로 각 row를 추출하고, 그때마다 순차적으로 상대 테이블에서 연관된 row들을 JOIN에 의해 추출하는 방식. 3번과 4번 작업을 보면 모두 Dept 테이블에서 이루어지고 있다. 첫번째로 풀스캔을 뜨면서 인덱스에 해당하는 값들을 Index Dept_index로 추출하고, 3번과 4번의 결과를 2번의 Nested Loop 작업으로 Join 연산을 하고 있다. 그 이후에 EMP테이블과 Join을 하는 과정을 1번 작업에서 해주고 있는 것이다. 따라서 튜닝을 할 때는..

Study/Oracle 2022.03.18

Oracle의 B-Tree Index

오라클에서 사용하는 인덱스 중 가장 기본적인 인덱스인 B-Tree Index에 대해 알아보자. B-Tree Index : Balanced Tree Index B - tree 인덱스는 계층구조를 가지고 있으며 Leaf, Internal(Branch) , Root 노드로 나뉜다. 리프 노도들은 소팅된 가운데 자기들끼리 연결되어 있다. 브랜치 노드는 리프 노드들에 인덱스 값을 전달하기 위해 분류와 분기를 위한 기준값만 저장한다. 비트리 인덱스는 널값을 제외하고 모든 인덱스 컬럼의 데이터 + 로우아이디를 리프노드에 정렬해서 저장한다(디폴트는 오름차순). 이때 로우아이디에는 Objext, File, Block, Row에 대한 정보를 가지고 있기 때문에, 블락을 찾아갈 수 있게 되는 것이다. -> Single Bl..

Study/Oracle 2022.03.18

자바 기본서를 다시 읽다. 4 - 표준 API의 함수적 인터페이스

자바 8에서부터는 빈번하게 사용되는 함수적 인터페이스(Functional Interface)는 java.util.function 표준 API 패키지로 제공한다. 이 패키지에서 제공하는 함수적 인터페이스의 목적은 메소드 또는 생성자의 매개 타입으로 사용되어 람다식을 대입할 수 있게 함이다. 함수적 인터페이스는 크게 Consumer, Supplier, Function , Operator, Predicate로 나뉘는데 각각의 특징은 아래와 같다. Consumer : 매개값 O , 리턴값 X Supplier : 매개값 X, 리턴값 O Function : 매개값 -> 리턴값으로 타입 변환 Operator : 매개값 -> 리턴값으로 값 연산 Predicate : 매개값 -> true/false 리턴 Consumer..

Study/Java 2022.03.16

자바 기본서를 다시 읽다. 3 - 로컬클래스와 익명객체, 그리고 람다식 (2)

이제 람다식을 정리해보자. 앞서 로컬클래스와 이름 없이 사용하는 로컬클래스인 익명 객체에 대해 알아보았다. 그리고 이 람다식은 런타임시 익명객체를 생성해주는 함수 생성 식이다. 이를 사용하면 자바 코드가 매우 간결해주고 컬렉션의 요소를 필터링하거나 매핑해서 원하는 결과를 쉽게 집계할 수 있다. 람다식은 아래와 같이 인터페이스 변수 = 람다식의 형태로 작성된다. Runnable runnable = () -> {}; 이렇게 보면 자바의 메소드를 선언하는 것 처럼 보이지만, 자바는 메소드만을 단독으로 생성할 수 없고, 항상 클래스의 구성 멤버로 선언하기 때문에 자바는 이 메소드를 가지는 객체를 생성하고 인터페이스 변수에 대입된다. 위 코드는 Runnable 변수에 대입되므로 람다식은 Runnable 익명 구현..

Study/Java 2022.03.15