이전 회사를 그만두면서 퇴직금이라는 것을 받게 되었고, 이걸로 빚을 갚고 남은 돈으로 투자라는 것을 하고 있다. 상당히 많은 돈이 예적금에 있기는 하지만, 그래도 꽤 많은 금액을 펀드나 ETF에 투자하고 있다. 코인은 권유를 받았지만 아무리 봐도 아닌 것 같아서 안했는데, 3번째 코인 빙하기가 오면 그때 해보려고 생각중이다. 세상이라는 것이 패턴이 있기 때문에 남들이 정말 아니라고 했을 때 사거나, 이제 시작이라고 생각했을 때 사거나 해야지 다들 좋다고 해서 샀을 때에는 별로였다. 물론 예외라는 것도 분명히 존재했는데, 그거는 바로 미국 지수 ETF이다.

 

 작년 연말에 아무리 봐도 미국 지수가 너무 높이 오른 것 같아서 기존의 펀드와 ETF를 싹 정리해서 대출을 갚았다. 지금 와서 돌아보니 거의 5천만원 정도는 갚은 것으로 생각된다. 4형제를 키우고 있었고 더군다나 큰애와 작은애가 연달아서 고3/재수를 하다보니 돈이 천문학적으로 들어갔다. 그 와중에 투자도 계속했고 빚은 나중에 천천히 갚겠다 생각했는데 대출액이 너무 많아져서 50%이상 수익이 나던 ETF를 모두 팔아도 돈이 모자랄 정도였다. 그 와중에 자사고 다니던 놈들이 2이나 있었으니 정말 힘들었을 때였는데, 다행히 이제 둘째도 재수가 끝났고 더이상 한달에 200만원이라는 돈을 안써도 되었다.

 

 문제는 내가 더 이상 투자할 돈이 없다는 것이고 내년 중반까지는 더 쓸려고 해도 돈이 없다는 것이다. 이제 문제는 대출을 갚으면서 천천히 투자 금액을 늘려야 한다는 것이다. 가장 급한 것은 금리가 많이 올라간 현시점에서 대출을 줄여나가야 한다는 것이다. 지금 돌아보면 가장 힘들었고 교육비로 연 몇 천만원을 내던 4년이 끝나간다. 내년에는 둘째가 대학교를 가겠지만, 그래도 재계약이 된다면 회사에서 학자금이 나오기 때문에 그나마 안도가 된다. 이직한지 이제 3년차 그래도 이직에 성공해서 간신히 둘째까지 재수를 시킬 수 있었다. 인생에서 가장 많은 돈을 썼던 4년이지만, 그래도 아빠로서 어느 정도 의무는 다 했다고 본다.

 

 앞으로도 돈이 많이 들기는 하겠지만 그래도 2명이라는 아이들 학원비는 안내도 되니 이제부터 천천히 투자금액을 늘릴 수 있을 것으로 본다. 아니 이제는 마이너스 통장 돈 헐어서 투자하지는 않아도 될려나. 아직 가보지 못했던 길이다. 내년에 셋째가 고3이 되고, 막내는 2학년이 된다. 내년에는 그래도 가끔 맥주에 치킨을 마음껏 먹어도 될만한 돈이 생길 것 같다. 2021년에 회사 그만두었을 때에는 정말 힘들었고, 새로운 회사에서 적응하는게 그것보다는 훨씬 더 힘들었다.

 

 새로운 회사에 오고 다시 실무를 하게 되면서 부족한 모델링 실력이나 딥러닝 지식을 습득하기 위해서 매일 2시간씩 공부했고 지금도 계속해서 공부하고 있다. 요즘에는 챗지피티에게 물어서 일을 하고 있지만 아직 많이 부족하다. 투자에 대해서는 검색도 해보고 유튜브도 많이 보고는 하는데, 아직은 포트폴리오를 잘게잘게 쪼개서 어느 정도 금액이 될 때까지 적립식 투자를 하고 있다. 투자한지 이제 3년 정도 되었는데, 아직도 마이너스에서 회복이 안된 펀드가 하나 있다. ㅎㅎ 문제는 이게 우리사주 빼고는 가장 단위가 큰거라서 어찌어찌 매도도 못하고 들고 있다.

 

 과거에 마이너스가 되었던 펀드나 ETF들이 장기 투자를하고 계속해서 적립 투자를 하면서 플러스로 돌아왔고 대부분 어느 시점에 매도해서 수익을 냈는데, 이거는 아닐 수도 있겠다는 생각이 든다. 그래도 코로나 당시 추천 받았던 중국 펀드나 ETF를 투자하지 않은게 그나마 다행이라고 할려나.

반응형

'내 이야기' 카테고리의 다른 글

둘째, 세종대 합격하다.  (2) 2024.12.20
드라마 - 트렁크  (1) 2024.12.07
산다는 건 다 그런거 아니겠니?  (1) 2024.11.10
퇴물이 된 느낌.  (1) 2024.10.10
좀 쉬고 싶은데  (1) 2024.10.05

난 은행에서 데이터분석가로 일해왔고 경력은 15년 이상이며, 아직도 많이 배우고 있는 사람이다. 이전 회사에서 5년 정도 팀장+실무를 하다가 사업부 철수로 인해 다른 은행으로 이직후 실무자/팀원으로 일하고 있다.

이전 회사에서 SAS와 SQL 그리고 R을 써서 일했는데 밖은 모두 파이썬과 딥러닝 그리고 LLM의 세상이 되었더라. 방송대 바이오통계 대학원 다닐때 배웠던 머신러닝은 따라가는게 어렵지 않았는데, 딥러닝이나 다양한 언어모델 분석은 아직도 배우고 강의 듣고 있다. 다행히 내가 공부를 좋아하고 코딩도 좋아해서 야근을 하면서도 따라가고 있다.

통계적인 지식이나 방법론도 쓰지만 가장 중요한 것은 언어 모델을 제대로 배우고 이해하는 것이다. 2022년 여름부터 딥러닝에 대해서 공부를 시작했고 중간에 책도 많이 사고 실제로 코딩도 많이 해봤지만 가장 빨리 배우는 것은 업무를 하는 것인데 아직 딱히 찾지를 못했다.

 

 고객행동분석이라는 일을 하면서 데이터 분석 관련 코딩을 할 기회가 많았고 이때문에 챗지피티와 상당히 많은 대화를 했고 늘 뭔가 아쉬움을 느꼈다. 특정 분야에 대한 코딩에 대해서는 챗지피티가 나보다 훨씬 낫다고 생각했는데, 유료 버전 결제 이후 코딩 할때마다 챗지피티와 상의하는 내 모습을 보고 있다. 예전에는 챗피티에게 물어보고 구글에서 검색했다면, 요즘에는 왠만한 것은 다 챗피티와 상의를 하고 있다. 네이버 지식검색이나 스택오버플로우가 더이상 필요 없을 정도로 챗피티티의 강력함은 상상을 초월한다. 구글 검색을 아주 잘하는 고급 개발와 일하는 느낌이 들정도로.

 

 정말 구글 안녕하는 것이 얼마 안남은지도 모르겠다.

반응형

예전에는 몰랐는데 40이 넘고 이제 중반을 지나 후반으로 달려가는 요즘, 입춘이나 여름 그리고 단풍철과 같은 행사를 볼때마다 짠하다. 예전에는 아무 생각없이 볼 수 있었다지만, 이제는 앞으로 이걸 몇 번이나 더 볼 수 있을까 생각이 든다고 해야 할까? 40이 넘으면서 처음으로 꽃이 피는 시절이 아름답다는 생각을 하게 되었으니까 말이다.

오늘은 2024년 김장이다. 집안에 재수생이 있어서 힘든 1년이었는데, 이번에 성적이 그리 좋지 않다. 덩치가 큰 녀석이 자기 앞으로 어떻게 사냐고 우는 모습을 보니 참 뭐라고 해줄말이 없었다. 이 녀석이 고집도 세고 거친데 마음은 참 여리구나 생각이 들었다. 나는 기다리고 노력하고 기회가 올때까지 칼을 갈며 웃으면서 사는 녀석인데 우리 아들은 뭐랄까 많이 다르다는 생각이 들었다.

덕분에 4형제중 아무도 따라오지 않은 상태에서 김장을 해야만 했다.

반응형

  udemy 머신 러닝 자연어 처리를 보면서, 이걸 고객의 페이지 이동 분석하는데 사용이 가능할 것으로 생각이 드는구나. 물론 전처리하는게 엄청 오래 걸리기는 하겠지만 좀 해보면 어느 정도 고객의 행동을 이해하는데 많은 도움이 될 것으로 생각되네.

이번 수강에서 얻은 가장 큰 소득이 아닐까 싶다.

반응형

 수원에서 집으로 올라오면서 들었던 이금희님의 라디오에서 90년대 유행하던 노래가 나와서 흥얼거리다가, 나온 노래가 이 노래였다.

 

 정년까지 다닐 수 있으리라 믿었던 회사를 그만두면서 3달 정도 미친듯이 구직을 해서 들었갔던 곳이 지금 다니는 회사이다. 이런저런 제약도 많고 계약직이라서 언제까지 다닐 수 있을지도 모르는 회사이지만, 내 인생에서 아이들 교육비로 가장 돈을 많이 쓰던 3년을 이곳에서 일하면서 버텨낼 수 있었다. 덕분에 큰애는 재수해서 나름 괜찮은 대학을 갔고, 둘째는 자사고를 무사히 졸업하고 재수를 할 수 있었으며, 아내는 죽는 소리 하는 남편 걱정에 간호 조무사 학원 등록해서 자격증 따고 지금은 병원을 다니고 있다.

반응형

'내 이야기' 카테고리의 다른 글

드라마 - 트렁크  (1) 2024.12.07
투자를 어떻게 해야 하는가?  (9) 2024.12.06
퇴물이 된 느낌.  (1) 2024.10.10
좀 쉬고 싶은데  (1) 2024.10.05
피곤한데 잠이 안오네  (0) 2024.09.28

큰 데이터셋의 경우, SQL에서 페이지 이동 정보를 사전에 요약하여 Python으로 가져오는 방식이 훨씬 효율적일 수 있습니다. 이 방법은 각 `page_id`에서 `next_page_id`로의 전환이 얼마나 자주 발생했는지를 미리 계산한 후, Python에서 그래프 형태로 시각화할 수 있습니다.

SQL 단계에서 요약된 데이터를 만드는 방법은 `GROUP BY`와 `COUNT()`를 활용하여 각 페이지 간 전환 빈도를 집계하는 것입니다.

### 1. SQL로 페이지 이동 요약하기

다음 SQL 쿼리는 `page_id`에서 `next_page_id`로의 전환 빈도를 사전에 계산합니다.

```sql
-- Teradata에서 page_id와 next_page_id의 전환을 요약한 SQL 쿼리
SELECT 
    page_id,
    next_page_id,
    COUNT(*) AS transition_count
FROM (
    SELECT 
        session_id,
        page_id,
        LEAD(page_id) OVER (PARTITION BY session_id ORDER BY event_time) AS next_page_id
    FROM 
        your_table
) t
WHERE next_page_id IS NOT NULL
GROUP BY page_id, next_page_id;
```

#### 쿼리 설명:
- **`LEAD()`**: `page_id`의 다음 페이지를 가져옵니다.
- **`GROUP BY`**: `page_id`와 `next_page_id`별로 그룹화하여 전환 빈도를 계산합니다.
- **`COUNT(*)`**: 각 전환(`page_id` -> `next_page_id`)이 발생한 횟수를 집계합니다.

이렇게 사전에 전환 빈도를 요약하면, 큰 데이터셋도 효율적으로 처리할 수 있습니다.

### 2. Python에서 요약된 데이터로 그래프 그리기

이제, 요약된 데이터를 Python으로 가져와서 페이지 이동을 시각화합니다.

```python
import pandas as pd
import networkx as nx
import matplotlib.pyplot as plt
from sqlalchemy import create_engine

# Teradata 연결 설정 (SQLAlchemy 사용)
engine = create_engine('teradata://username:password@host:port/dbname')

# SQL 쿼리로 요약된 데이터 불러오기
query = """
SELECT 
    page_id,
    next_page_id,
    COUNT(*) AS transition_count
FROM (
    SELECT 
        session_id,
        page_id,
        LEAD(page_id) OVER (PARTITION BY session_id ORDER BY event_time) AS next_page_id
    FROM 
        your_table
) t
WHERE next_page_id IS NOT NULL
GROUP BY page_id, next_page_id;
"""

# Teradata에서 데이터를 읽어와 DataFrame으로 저장
df = pd.read_sql(query, engine)

# 엣지 리스트 만들기 (page_id -> next_page_id)와 가중치 추가
edges = df[['page_id', 'next_page_id', 'transition_count']].values.tolist()

# NetworkX 그래프 객체 생성
G = nx.DiGraph()

# 엣지와 가중치를 그래프에 추가
for edge in edges:
    G.add_edge(edge[0], edge[1], weight=edge[2])

# 그래프 시각화 설정
plt.figure(figsize=(8, 6))
pos = nx.spring_layout(G)

# 노드 및 엣지 시각화
nx.draw(G, pos, with_labels=True, node_color='skyblue', node_size=3000, font_size=12, font_weight='bold', edge_color='gray', arrows=True)

# 엣지 가중치(전환 빈도) 표시
edge_labels = nx.get_edge_attributes(G, 'weight')
nx.draw_networkx_edge_labels(G, pos, edge_labels=edge_labels)

# 그래프 보여주기
plt.title('Page Transitions with Frequency')
plt.show()
```

### 코드 설명:
1. **Teradata에서 요약된 데이터 가져오기**: SQL 쿼리에서 페이지 전환 빈도(`transition_count`)를 포함한 데이터를 Python으로 가져옵니다.
2. **엣지 리스트 생성**: `page_id`, `next_page_id`, 그리고 전환 빈도(`transition_count`)를 포함한 리스트를 생성합니다.
3. **그래프에 가중치 추가**: 각 엣지에 페이지 간 전환 빈도를 가중치로 추가합니다.
4. **NetworkX 그래프 시각화**: 페이지 간 이동을 그래프로 나타내고, 각 엣지에 전환 빈도를 라벨로 표시합니다.

### 요약:
- **SQL에서 요약**: Teradata SQL에서 페이지 이동 전환을 미리 집계하여 전환 빈도를 계산합니다.
- **Python에서 시각화**: 요약된 데이터를 `NetworkX`로 시각화하며, 각 전환 빈도를 엣지 가중치로 표시합니다.

이 방법은 데이터가 매우 클 때도 효율적으로 처리할 수 있으며, SQL에서 최대한 전처리를 진행하여 Python에서 시각화에 집중할 수 있습니다.

반응형

'Python, PySpark' 카테고리의 다른 글

NewsClassifier  (0) 2025.01.04
Python Scheduler  (0) 2024.12.10
Python networkx  (1) 2024.10.10
how to visualize the customer page visit pattern on app?  (0) 2024.09.21
PCA와 PLS 차이점(챗지피티 설명)  (0) 2024.09.21

+ Recent posts