본문 바로가기

공부46

지방의 부동산(아파트)의 미래는 어떻게 될까? 30대 중반을 다가서니 주변에 부동산을 얘기하는 지인들이 참 많아졌다. 다른 큰 의미는 없지만 대부분이 얘기하는 부동산은 아파트를 말하는데 아무리 생각해봐도 지방 아파트를 구입하는 것에 대한 비전이 보이지 않아 글로 정리하고 싶어져 갑자기 블로그에 들어오게 되었다. 우선 지방 아파트 부동산 투자에 대해 비관적인 나의 이유는 다음과 같다. 1. 수도권 인구 집중화(지방 기피 문화) 2. 대한민국의 인구감소 3. 과시 문화 4. 너무 많은 개발 부지와 아파트들 1번과 2번은 굳이 설명할 필요도 없이 지방 부동산에 비관적인 이유를 들라하면 저 둘을 뽑을 것이다. 그만큼 지방 부동산에 대한 수요가 없어지니 가격에 내려간다는 것은 큰 지식이 없어도 납득이 가는 이유이다. 혹시나 이러한 반대의견이 있을 수 있다. .. 2023. 8. 4.
표준화 (Standardization) , 정규화 (Normalization)란? 표준화(Standardization) 표준화는 데이터의 평균을 0으로, 분산 및 표준편차를 1로 만들어 준다. 스케일링 시 평균과 표준편차가 사용된다. 표준화를 하는 이유는 서로 다른 통계 데이터를 비교하기 용이하기 때문이다. 이는 특성이 정규분포일 경우 유용하다. 정규화 (Normalization) 표준화와 마찬가지로 데이터의 스케일을 조정하지만 모든 데이터가 0~1사이의 값을 가진다. 스케일링 시 최대, 최솟값이 사용되어진다. 특성의 크기가 다를때 사용되어지며 분포에 대해 모를 떄 유용하다. 2022. 8. 8.
LSTM (Long Short Term Memory) 복습하기 LSTM 이란 무엇일까? 기존 RNN이 출력과 먼 위치에 있는 정보를 기억할 수 없다는 단점(장기의존성문제), 기울기 소실 문제를 보완하여 장/단기 기억을 가능하게 설계한 신경망의 구조를 말하며 거시적으로 시계열을 예측하기 위하거나 자연어 처리에서 활용된다. 기존 RNN 모델의 구조는 아래와 같다. LSTM의 구조는 아래와 같다. 위에서 볼 수 있듯 RNN과 LSTM의 차이에서 볼 수있는 차이점은 내부구조가 좀더 복잡해진 것이다. 이는 이전 셀의 정보를 그대로 가지고와 현재 셀에서의 데이터의 결과를 갖고 다음셀로 전달하는 역할을 한다. 즉 3개의 게이트와 1개의 셀이 존재하며 이러한 구조로 RNN의 단점을 보완함 2022. 8. 8.
[알고리즘]깊이 우선 탐색(DFS), 너비 우선 탐색 (BFS)란? 깊이 우선 탐색 (DFS Depth-First Search) 이란? 그래프에서 특정한 경로로 탐색하다 특정한 상황에서 깊은 부분을 우선적으로 탐색하고 다시 돌아가 다른 경로로 탐색하는 알고리즘이다. 그래프는 최대한 가까우면서 낮은 숫자를 가진 노드를 방문한다. DFS는 스택 자료구조를 이용하며 상세한 구조 동작은 아래와 같다. 탐색 시작할 노드를 스택에 삽입하고 *방문 처리한다. 스택의 최상단 노드에 방문하지 않은 인접 노드가 있다면 그 인접 노드를 스택에 넣고 방문 처리를한다. 방문하지 않은 인접 노드가 없다면 스택에서 최상단 노드를 꺼낸다. 2번의 과정을 더 이상 할 수 없을 때까지 반복한다 *방문 처리란?: 스택에 한 번 삽입이되어 처리된 노드가 다시 삽입되지 않도록 체크하는 것을 말한다. 너비 우.. 2022. 6. 21.
[알고리즘] 그래프란? 그래프(Graph)란? : 노드(Node)= (정점 Vertex)과 간선(Edge)으로 구성되어 있다. 그래프를 탐색한다라는 의미는 하나의 노드를 시작으로 다른 다수의 노드를 방문하는 것을 의미한다. 트리와 그래프는 비슷하지만 그래프는 위 B->C->E->D->B처럼 루프 형성이 가능하다. 두 노드가 간선으로 연결되어있다는 의미는 두 노드가 인접하다는 의미와 동일하다. 프로그래밍에서는 그래프는 *두가지 방식(행렬(Matrix), 리스트(List))으로 표현이 가능한데 *인접 행렬(Adjacency Matrix) 방식 : graph =[[]] *인접 리스트(Adjacency List) 방식 : graph=[ [] for _ in range(n)] 이 두 방식의 차이점은 아래와 같다 행렬 방식에서는 모든 관.. 2022. 6. 21.
[자료구조]해시(HASH)란? 해시란 무엇인가? 데이터를 다루는 방법 중의 하나로써 검색과 저장이 파이썬의 키(KEY)와 밸류(VALUE)와 비슷하게 활용되며 KEY를 활용하여 값에 직접적으로 접근이 가능한 구조로, 평균 시간복잡도가 O(1)으로 빠른 기법이다. 속도가 빠를 수 있는 이유를 위 그림으로 이해해보자. 해시 테이블을 사용하지 않은 데이터 뭉치라면 필요한 값을 찾기 위해서는 배열의 데이터 값을 처음부터 하나하나 둘러보게 되는데 위의 그림처럼 해시 함수를 적용한 테이블을 사용한 형태를 사용하게 된다면 key값에 해시를 적용해 고유한 인텍스를 통해 데이터를 한번만 검색하면 되기 때문이다. 해시함수는 무엇인가? 위의 그림처럼 키를 해시테이블 내의 버킷(=hashes=해시값)으로 매핑 시키는것 입력값의 형태는 다양하고(보통 문자열.. 2022. 6. 17.
[알고리즘] 퀵 정렬[Quick sort]이란? 분할 알고리즘의 하나로 평균적으로 굉장히 빠른 시간 복잡도를 갖고 있는 정렬 방법이다. 기준이 되는 데이터 값을 정하고 (이를 피벗(Pivot)이라고 칭한다.) 이를 중심으로 피벗 앞에는 피벗보다 작은 값이 오고 피벗 뒤의 값에는 피벗보다 큰 값이 온다. 이렇게 두 개의 작고, 큰 부분들을 나누는 것을 분할이라고 부르며 분할되어진 두개의 리스트에 대해 재귀적으로 이 과정을 반복하여 정렬한다. 코드는 아래와 같다. def quick_sort(li): if len(li) pivot: more.append(i) else: equal.append(i) return quick_sort(less)+equal+quick_sort(more) 2022. 6. 17.
[알고리즘] 삽입 정렬(Insertion Sort) 삽입 정렬(insertion sort)란? 데이터를 하나씩 확인하면서 , 각 데이터를 적절한 위치에 삽입 하는 정렬 방법이다. 더불어 삽입 정렬은 특정한 데이터가 정렬 되기 이전에 앞까지의 데이터들은 이미 정렬 되어있다고 가정하고 그 리스트에서 적절한 위치에 삽입이 되어지는 알고리즘이다. 데이터가 필요할 때만 위치를 바꾸므로 실행시간 면에서 효율적인 정렬 방식이다. 선택 정렬과 같이 동작원리를 직관적으로 이해하기 쉬운 알고리즘이다. def insertion_sort(li): for i in range(1, len(li)): for j in range(i, 0, -1): # 인덱스 i부터 1까지 감소하며 반복하는 문법 if li[j] < li[j-1]: li[j], li[j-1] = li[j-1], li[.. 2022. 6. 13.