728x90

 

 

기초 내용에 해당하는 책이지만, 무료로 공개한 책 중에 구성이나 내용이 괜찮은 책인듯 하다.

이론적인 부분을 깊게 다루진 않고, 실무나 기초적인 ML 지식(supervised learning 부분을 위주로)을 잘 전달한다.

 

내용은 2개 파트가 있는데, 두 번째 파트는 아직 공개되지 않았다.

 

저자가 낮에는 MLOps로 일하고 밤에는 튜터를 한다는데...

기초적인 내용을 잘 정리해둔 것 같아 respect!

 

https://themlsbook.com/read

 

Machine Learning Simplified

 

themlsbook.com

 

내용은 해당 페이지에서 확인 가능하다.

 

 

728x90

기업의 데이터 사이언티스트/ 데이터 분석가/ 데이터 엔지니어 등의 인터뷰 가이드라인을 제공하는 사이트가 있어서 추천드려요.

https://www.interviewquery.com/companies

 

Company Interview Guides

A comprehensive list of companies you can interview at.

www.interviewquery.com

 

수많은 회사 로고 중에 원하는 회사를 클릭하면,

 

위 그림처럼 data관련 직군 리스트가 뜨게 됩니다. 여기서 이 항목은 회사마다 다릅니다. 

위 그림은 Google의 예시입니다.

 

제조 회사인 나이키를 살펴보죠.

Google 대비 적은 data관련 직군

 

제공하는 정보는 

1) overview ; 2)급여 수준; 3)인터뷰 프로세스 분석 내용; 4)인터뷰 문제 (유료...); 5)관련 커뮤니티 내용과 opening된 job들...

 

 

인터뷰 프로세스 분석 내용

 

인터뷰 프로세스를 분석해서 어느 부분에 focus하고 있는지 한 눈에 알 수 있습니다.

 

물론 hiring manager마다 다를 수는 있지만,

회사 특성에 따라 focus하는 부분이 다른 것 같아요.

 

아무래도 data scientist가 커버해야하는 지식 범위가 너무 넓고,

회사마다 사용하는 tool이 다를 수도 있기 때문에 인터뷰 준비하기가 어려운데,

이 정도의 정보만 있어도 준비하는데 도움이 많이 되실거에요.

물론 저도 프리미엄 서비스를 써보지 않았기 때문에...

수집된 데이터의 유효성은 파악하진 못했습니다!

 

그리고 해외 기업에 초점이 맞춰져 있긴해서 국내 기업을 준비하시는 분들에겐 큰 도움이 안될 수도 있지만,

(국내, 국외의)글로벌 기업을 준비하는 분들에겐 좋은 자료일 것 같습니다.

 

 

728x90

데이터 파이프라인 만들 일이 많아지면서 SQL을 사용하는 빈도가 조금 늘어난 듯 합니다.

 

일본 저자분이 집필한 <데이터분석을 위한 SQL 레시피>라는 책의 도움을 많이 받았었는데,

 

이 책도 comprehensive한 내용을 다루는 것 같습니다.

 

 

e-book은 LinkedIn에서 free version이 공유되고 있네요.

O-Reilly-SQL-Cookbook-2nd-Edition-Final.pdf
12.43MB

728x90

오래된 책이긴 하지만,

가볍게 읽어보고 싶다면!

the cartoon guide to statistics.pdf
5.74MB

728x90

NLP분석을 주식 투자 의사결정에 활용하기 위한 노력은 계속되고 있다.

 

실제로 사람들의 투자 의사결정 과정을 들여다보면,

뉴스나 커뮤니티 등 정보에 의존하는 경향이 크다는 것을 확인할 수 있다.

온라인상에서 텍스트 형태로 전달된 정보는 머신러닝/딥러닝 NLP기술에 의해 활용될 수 있는 여지가 크다.

 

NLP 감성 분석(sentiment analysis)에 많이 활용되는 알고리즘 중에 BERT가 있다.

BERT란, 2018년 구글이 발표한

"BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding"

라는 논문에서 사용된 모델이자, Bidirectional Encoder Representations from Transformers의 줄임말이다.

 

BERT에 대한 설명은 이미 너무 많으니...(Google에 BERT만 쳐도 엄청난 양의 정보가...^^)

생략하고,

 

오늘 소개할 FinBERT는 금융 관련 뉴스 데이터를 기반으로 훈련시킨 BERT 모델이라고 보면 된다.
1,800만개의 의학 생명 논문을 학습해 개발한 AI모델인 BioBERT가 각광을 받자,

금융권에서 BERT의 활용을 위해 만든 모델이다.

 

자세한 설명은

https://www.slideshare.net/taeseonryu/fin-bert-paper-review

 

Fin bert paper review !

구글에서 만든 BERT 언어 모델이 나오면서 NLP 분야는 상당한 발전을 이룰 수 있었습니다 그리고 금융권 또한 대량의 Financial 텍스트 데이터를 축적하고 있습니다. 하지만 그 사전 훈련된 금융관련

www.slideshare.net

 

나름 잘 정리된 슬라이드쉐어가 있으니 참고 바란다.

 

 

국내 주식보다는 영문 텍스트를 활용했기 때문에, 해외 주식 투자 의사결정에 활용하는 것이 좋을 것이다.

https://medium.com/mlearning-ai/financial-text-classification-with-deep-learning-using-finbert-51a73b393a08

 

Financial Text Classification With Deep Learning Using FinBERT

This article is a comprehensive overview of the application of the FinBERT pre-trained model on financial text data classification tasks

medium.com

 

간단한 코드 구현에 대한 예시도 친절하게 설명되어 있다. 

 

개인적으로도 텍스트 데이터를 활용한 투자 의사결정에 관심이 많아,

기본적인 매매 시스템을 만들고 있는데,

성과가 괜찮다면 나중에 공개를...^^ (할 수 있기를 ㅠㅠ)

 

 

 

728x90

DBSCAN의 기본 정의에 기반해, x가 핵심 대상이라면 x 밀도에 의해 커버되는 모든 샘플로 구성된 집합을 X라 한다. X는 연속성(식 9.39)과 최대성(식 9.40)을 만족한다는 사실을 증명하라.

 

문제 정의에 의해 최대성은 만족.

 

연속성 만족 증명:

x_i를 핵심 대상이라고 가정한다면, x_j는 x_i밀도에 의해 density-reachable이다. 따라서 핵심 대상 x_k가 존재하고, 이는 x_i와 x_k에 direct density reachable이고, x_k와 x_j 의 direct density reachable이다.

x_k는 핵심 대상이기 때문에 x_k와 x_i는 direct density reachable이다. 

또한 direct density reachable 은 density reachable의 부분집합이기 때문에,

x_k와 x_j는 density reachable이다. 그리고 x_k와 xi는 density reachable이고 x_i와 x_j는 density connected 관계이다.

 

참고:

  • Direct density reachable : 점 p가 점 q의 반경에 들어오고, 점 q가 코어점일 때, "점 p가 점 q로부터 직접적으로 밀도(기반)-도달가능한 관계에 있다"고 한다. 반대의 경우는 성립하지 않음.

  • Density reachable : 점 p와 점 q 사이에 p1,p2,⋯,pn,p1=q,pn=p 들이 있고, 점 pi+1이 점 pi로 부터 직접적으로 밀도(기반)-도달가능하다면, "점 p는 점 q로부터 밀도(기반)-도달가능한 관계에 있다."고 한다. 

 

 

  • Density connected : 만약 두 점 p와 q가 모두 어떤 점 O로 부터 반경 내 MinPts 조건 하에 밀도(기반)-도달가능(density-reachable)하다면 "점 p는 점 q와 반경 내 MinPts 조건 하에 밀도(기반)-연결되었다."고 합니다.
    => (다르게 말하면, p가 O의 친구이고, q도 O의 친구이면, p와 q는 친구 O를 통해 서로 연결되었다고 보면 된다.)

 

설명 출처:

https://syj9700.tistory.com/40#:~:text=Direct%20density%20reachable%20%3A%20%EC%A0%90%20p,%EA%B4%80%EA%B3%84%EC%97%90%20%EC%9E%88%EB%8B%A4%22%EA%B3%A0%20%ED%95%9C%EB%8B%A4.

728x90

 

참고 코드:

import numpy as np
import matplotlib.pyplot as plt
from scipy.spatial import ConvexHull


class KMeans(object):

    def __init__(self, k):
        self.k = k

    def fit(self, X, initial_centroid_index=None, max_iters=10, seed=16, plt_process=False):
        m, n = X.shape

        # 특별히 지정한 중심점이 없으면, 중심점을 랜덤으로 초기화
        if initial_centroid_index is None:
            np.random.seed(seed)
            initial_centroid_index = np.random.randint(0, m, self.k)

        centroid = X[initial_centroid_index, :]

        idx = None

        
        plt.ion()
        for i in range(max_iters):
            # 중심점을 기점으로 샘플을 분류
            idx = self.find_closest_centroids(X, centroid)

            if plt_process:
                self.plot_converge(X, idx, initial_centroid_index)

            # 중심점 다시 계산
            centroid = self.compute_centroids(X, idx)

        
        plt.ioff()
        plt.show()

        return centroid, idx

    def find_closest_centroids(self, X, centroid):

        
        distance = np.sum((X[:, np.newaxis, :] - centroid) ** 2, axis=2)
        idx = distance.argmin(axis=1)
        return idx

    def compute_centroids(self, X, idx):
        centroids = np.zeros((self.k, X.shape[1]))

        for i in range(self.k):
            centroids[i, :] = np.mean(X[idx == i], axis=0)

        return centroids

    def plot_converge(self, X, idx, initial_idx):
        plt.cla()  

        plt.title("k-meas converge process")
        plt.xlabel('density')
        plt.ylabel('sugar content')

        plt.scatter(X[:, 0], X[:, 1], c='lightcoral')
        
        plt.scatter(X[initial_idx, 0], X[initial_idx, 1], label='initial center', c='k')

       
        for i in range(self.k):
            X_i = X[idx == i]

           
            hull = ConvexHull(X_i).vertices.tolist()
            hull.append(hull[0])
            plt.plot(X_i[hull, 0], X_i[hull, 1], 'c--')

        plt.legend()
        plt.pause(0.5)


if __name__ == '__main__':

    data = np.loadtxt('..\data\watermelon4_0_Ch.txt', delimiter=', ')
    centroid, idx = KMeans(3).fit(data, plt_process=True, seed=24)

 

출처: CSDN @Messor2020

 

728x90

k평균 알고리즘이 식 9.24를 최소화하는 최적해를 찾을 수 있을지 분석해 보아라

 

참고 답안:

찾을 수 없다. 

K평균 값은 NP하드 문제이다. 또한 식9.24는 non-convex 임.

국부 최적해(local optima)함정에 빠질 수 있다는 것이 k평균군집의 단점.

따라서 k평균 군집을 사용할 때는 중심점 랜덤 초기화를 많이 해주고 최적의 결과를 선택하는 것이 좋음.

 

728x90

9.2 하우스도르프 거리가 거리 척도의 네 가지 기본 성질을 만족한다는 사실을 증명하라.

 

거리 척도의 4가지 기본 성질을 먼저 살펴보자.

거리 척도의 네 가지 기본 성질

 

비음수성(Non-Negativity): 

이기 때문에,

이다.

 

 

대칭성:

 

통일성: 

위 예제처럼 너무 명확해서 생략...

 

삼각부등식 성질:

표현식이 추상적이라 일반화해서 해를 구하기 힘듬. 간단한 특수 상황 (ex. 집합이 연속 공간일때 평면상에 원을 그려 표현)을 통해 설명하는 것이 좋을듯.

728x90

글을 자주 올리는 블로그는 아니지만...

별도로 홍보할 곳이 없어서 올립니다^^

 

새로운 저서인 <AI 소사이어티>가 나왔습니다.

https://www.yes24.com/Product/Goods/106335672

 

AI 소사이어티 AI Society - YES24

“AI 소사이어티에 오신 것을 환영합니다!”인공지능과 공존하는 새로운 세상에서, 어떻게 적응하고 앞서갈 수 있을까?당신은 AI가 인류의 삶을 변화시켰다고 생각하는가? 만일 ‘내 삶에서 AI가

www.yes24.com

 

 

 

 

많은 관심 부탁드립니다!

 

+ Recent posts