728x90

 

Relief 알고리즘의 변형으로는 ReliefF, SURF, SURFStar, MultiSURF 등이 있습니다. 이들은 Relief 알고리즘을 기반으로 하되, 문제의 특성에 맞게 속성 중요도를 더 효과적으로 계산하는 방법을 제공합니다.

LVW (Local-Valued-Relief) 는 Relief 알고리즘의 변형 중 하나로, 가장 가까운 이웃을 이용하지 않고 모든 이웃의 영향을 고려해 속성 중요도를 계산하는 방식입니다. 

기본적인 아이디어는 각 속성에 대해 그 속성의 값을 기반으로 모든 이웃을 가중치를 주어 평가하는 것입니다. 이는 각 속성에 대해 "로컬" 값 (즉, 각 인스턴스에서 해당 속성의 값)을 사용하는 Relief 알고리즘의 일반화입니다.

제한 시간에 상관없이 해를 구하는 것은 알고리즘의 최적화와 관련된 문제입니다. 대부분의 머신러닝 알고리즘은 반복적인 프로세스를 통해 모델을 훈련시키므로, 어느 정도의 시간 제약이 있습니다. 이러한 시간 제약을 완화하기 위해 병렬 컴퓨팅, 분산 컴퓨팅, GPU 가속 등의 기술을 활용할 수 있습니다.

그러나 이러한 방법들이 늘 최적의 해를 보장하는 것은 아닙니다. 결국, 최적의 해를 찾는 것은 문제의 복잡도, 사용 가능한 계산 자원, 그리고 알고리즘의 효율성에 크게 의존합니다. 따라서 특정한 해를 무제한 시간 안에 찾는 것을 보장하기 위해서는 문제의 복잡도를 줄이거나, 계산 자원을 늘리거나, 더 효율적인 알고리즘을 사용하는 등의 방법을 고려해야 합니다.

728x90

속성의 중요성을 고려하는 다른 개선 알고리즘을 구상하면 다음과 같을 수 있습니다:

Entropy-Based Feature Selection 알고리즘:

1. 데이터셋의 각 속성에 대한 엔트로피를 계산합니다. 엔트로피는 데이터의 불확실성을 측정하는 방법으로, 낮은 엔트로피는 예측 가능성이 높은 것을 의미하며, 높은 엔트로피는 예측이 어려운 것을 의미합니다.

2. 각 속성을 기준으로 데이터를 분할합니다. 그 후, 이 분할에 대한 정보 이득(전체 엔트로피와 분할 후 엔트로피의 차이)을 계산합니다. 

3. 가장 높은 정보 이득을 가진 속성을 최상위 노드로 선택합니다. 이렇게 선택된 속성은 클래스 분류에 가장 중요하다고 간주됩니다.

4. 데이터셋을 선택된 속성에 따라 분할하고, 각 하위 데이터셋에 대해 위의 과정을 반복합니다. 이 과정을 모든 속성이 사용되거나, 모든 데이터 포인트가 동일한 클래스에 속할 때까지 반복합니다.

5. 마지막으로, 각 속성의 중요도는 그들이 트리에서 얼마나 높은 위치에 있는지(즉, 얼마나 일찍 선택되는지)에 따라 결정됩니다.

이 알고리즘은 Relief 알고리즘과는 달리 각 속성을 개별적으로 고려하는 대신, 그들이 전체적으로 클래스 분류에 어떤 영향을 미치는지를 고려합니다. 이 방식은 특히 속성 간의 상호 작용이 중요하지 않은 문제에 적합합니다.

728x90

Relief-F는 데이터 마이닝 및 머신러닝에서 특징 선택을 위해 사용되는 알고리즘입니다. Relief 알고리즘의 확장판으로, 멀티 클래스 문제를 처리할 수 있고, 불완전하거나 잡음이 많은 데이터에 대한 강건성을 향상시킵니다. 

Relief-F 알고리즘의 주요 아이디어는 원래 클래스와 가장 가까운 인스턴스(이웃)와 가장 가까운 인스턴스 중 다른 클래스를 각각 찾는 것입니다. 이를 통해 각 특징이 클래스 구분에 얼마나 중요한지 평가하고, 중요도에 따라 특징을 선택합니다.

Relief-F 알고리즘의 기본적인 단계는 다음과 같습니다:

1. 각 특징의 가중치를 0으로 초기화합니다.
2. 지정된 횟수만큼 다음 과정을 반복합니다:
    - 무작위로 인스턴스를 선택합니다.
    - 선택한 인스턴스와 같은 클래스의 가장 가까운 이웃을 찾습니다.
    - 선택한 인스턴스와 다른 클래스의 가장 가까운 이웃을 찾습니다.
    - 각 특징에 대해, 선택한 인스턴스와 같은 클래스의 이웃과의 차이를 계산하고 가중치에서 빼줍니다.
    - 각 특징에 대해, 선택한 인스턴스와 다른 클래스의 이웃과의 차이를 계산하고 가중치에 더해줍니다.
3. 모든 특징의 가중치를 확인하고, 가중치가 높은 특징부터 낮은 특징까지 순서대로 나열합니다.

위의 방법을 통해 Relief-F 알고리즘은 특징 선택을 위한 중요도 순서를 제공하게 됩니다. 이 알고리즘은 특히 특징 간의 상호작용이 예측 성능에 영향을 미치는 경우 유용합니다.

728x90

Relief 알고리즘을 직접 코드로 구현하는 것은 조금 복잡할 수 있지만, 이해를 돕기 위해 기본적인 아이디어를 파이썬 코드로 표현해 보겠습니다.

다음 코드는 실제 Relief 알고리즘의 간략화 된 버전이며, 실제로 작동하려면 입력 데이터와 함께 조정 및 추가 구현이 필요합니다.

또한, 이 코드는 scikit-learn 라이브러리의 K-Nearest Neighbors(KNN) 알고리즘을 사용하여 가장 가까운 이웃을 찾습니다.

 

import numpy as np
from sklearn.neighbors import NearestNeighbors

def relief(X, y, m):
    """
    X : Data instances
    y : Class labels
    m : Number of sampled instances
    """

    # Initialize a weight vector to zeros
    weights = np.zeros(X.shape[1])
    for i in range(m):
        # Randomly select an instance
        idx = np.random.randint(0, X.shape[0])

        # Split the data into same and different class
        same_class = X[y==y[idx]]
        diff_class = X[y!=y[idx]]

        # Find the nearest neighbor from the same class
        nn_same = NearestNeighbors(n_neighbors=1).fit(same_class)
        distances_same, indices_same = nn_same.kneighbors(X[idx].reshape(1, -1))
        near_same = same_class[indices_same[0][0]]

        # Find the nearest neighbor from the different class
        nn_diff = NearestNeighbors(n_neighbors=1).fit(diff_class)
        distances_diff, indices_diff = nn_diff.kneighbors(X[idx].reshape(1, -1))
        near_diff = diff_class[indices_diff[0][0]]

        # Update the weights
        weights -= np.square(X[idx] - near_same)
        weights += np.square(X[idx] - near_diff)

    return weights

위의 코드는 Relief 알고리즘의 간략화 된 버전이기 때문에, 실제 데이터세트에 적용하려면 추가적인 사전 처리 단계와 최적화가 필요할 수 있습니다. 예를 들어, 코드는 현재 수치형 속성에만 적용됩니다. 범주형 속성이 있는 경우, 해당 속성을 적절하게 처리해야 할 것입니다. 또한, 거리 메트릭에 따라 결과가 크게 달라질 수 있으므로, 문제에 가장 적합한 메트릭을 선택하는 것이 중요합니다.

728x90

 

머신러닝 모델을 배포하고 성능을 모니터링하는 작업은 중요하다.

data drift가 발생할 수 있기 때문이다.

 

팀에 위처럼 퍼포먼스 모니터링 시스템이 갖춰진 경우는 예외겠지만,

많은 모델의 퍼포먼스 모니터링 시스템까지 갖춰진 경우는 많지 않은듯 하다.

특히 ad-hoc으로 오는 분석 및 모델링 작업같은 경우에 모니터링 자료를 만드는 데 생각보다 리소스가 많이 들기도 한다.

 

이 문제를 해결해 줄 

텐서플로우 벨리데이션(tensorflow validation), 딥첵(deepchecks) 그리고 Evidently 와 같은 무료 오픈소스 tool 들이 있는데, 개인적으로는 Evidently가 진행했던 프로젝트들에 적합했던 것 같다.

 

Evidently 사용 예시

https://www.kaggle.com/code/kimtaehun/ml-deployment-how-to-monitor-ml-performance

 

[ML deployment]How to monitor ML performance?

Explore and run machine learning code with Kaggle Notebooks | Using data from multiple data sources

www.kaggle.com

 

아래 파일처럼 html 파일로 대시보드를 만들어준다.

혹은 직접 노트북에서 확인이 가능하지만 데이터가 크다면 매우 느려 열리지 않을 가능성이 높다....

레퍼런스(기준 데이터 및 퍼포먼스)와 새로운 데이터(혹은 기간)를 비교해 성능을 보여준다.

세부적인 내용은 커스터마이징이 가능해 매우 편리하다.

 

 

 

그 외에 다른 Tool들도 많지만....혹시 알고 싶다면 아래 블로그를 추천!

 

 

Tensorflow data validation

 

source: https://towardsdatascience.com/top-3-python-packages-for-machine-learning-validation-2df17ee2e13d

 

Top 3 Python Packages for Machine Learning Validation

Validate your machine learning model with these packages

towardsdatascience.com

 

 

728x90

<데이터 사이언티스트: 21세기 가장 섹시한 직업> 이라는 컬럼은 수많은 데이터 관련 책에서 인용이 가장 많이 된 컬럼일 것 이다. 그것도 제목만.

Data Scientist: The Sexiest Job of the 21st Century

 

Data Scientist: The Sexiest Job of the 21st Century

Back in the 1990s, computer engineer and Wall Street “quant” were the hot occupations in business. Today data scientists are the hires firms are competing to make. As companies wrestle with unprecedented volumes and types of information, demand for the

hbr.org

이 컬럼이 나온 시기가 2012년인데, 10년이 흐른 지금 컬럼의 저자인 Thomas H.DavenportDJ Patil가 하버드 비즈니스 리뷰에 <데이터 사이언티스트는 여전히 21세기 가장 섹시한 직업인가? Is Data Scientist Still the Sexiest Job of the 21st Century?> 라는 컬럼을 기고했다.

Is Data Scientist Still the Sexiest Job of the 21st Century?

 

Is Data Scientist Still the Sexiest Job of the 21st Century?

Ten years ago, the authors posited that being a data scientist was the “sexiest job of the 21st century.” A decade later, does the claim stand up? The job has grown in popularity and is generally well-paid, and the field is projected to experience more

hbr.org

원문은 하단을 참고하길 바라며,

바쁜 독자를 위해 간단히 요약해보겠다.

 

결론. 데이터 사이언티스트라는 직업은 크고 작게 변화하고 있다.

  1. 제도화 (institutionalized, 혹은 일상화라고 번역하고 싶다) 되고 있고;
  2. 데이터 사이언티스트라는 직업의 범위(scope)이 재정의 되고 있으며;
  3. 데이터 사이언스를 둘러싼 기술들에 많은 변화가 생겼으며;
  4. 관련된 non-tech 전문가들의 중요성이 커지고 있다.

조금 더 자세히 그의 주장을 살펴보자.

 

1) 일상화가 된 데이터 사이언티스트 (better institutionalized)

  • 2012년엔 인공지능 스타트업에서도 기초 기능만 했다.

-지금은 은행, 보험회사, 유통회사 뿐만 아니라 정부 기관에도 데이터 사이언스 조직이 있다.

-원인은 양질의 데이터 사이언스 교육이 증가했기 때문.

 

주관적인 생각을 더해 정리하자면, 데이터 사이언티스트가 인공지능 관련 필드에서만 활약하는 것이 아닌, IT기업부터 일반 제조, 그리고 정부까지 곳곳에 침투해 많은 역할을 하고 있다는 것이다. 실제로 링크드인에 ‘데이터 사이언티스트’라고 검색만 해봐도 정말 다양한 기관과 회사에서 데이터 사이언티스트를 채용하는 것을 확인할 수 있다. 특히 최근 2-4년 사이에 엄청난 붐이었다. 지금도 물론 많이 뽑고 있지만, 아래 설명할 내용처럼 그 직업의 범위가 재정의되고 있는 중이다.

 

2) 재정의되는 데이터 사이언티스트의 역할 (Data Scientists in Relation to Other Roles)

-데이터 사이언티스트가 다른 많은 역할을 할것이라고 예상했지만, 현실은 데이터 사이언스와 관련된 많은 다른 역할들이 생겼고, 어떤 것들은 데이터 사이언스보다 인기가 높음. (ex. 데이터 엔지니어, data product manager 등)

-늘어나는 데이터 양과 복잡해지는 시스템

-모델을 만들어서 deploy하는 경우가 많이 없음, 아직 실무에서 AI를 적용하기에 용이한 곳이 많지 않다. (즉 역할이 더 분화되고 세분화된 역할을 잘하는 인재들이 많아져야 한다)

 

개인적인 생각으로는 2012년의 데이터 사이언티스트는 지금의 ML or DL research scientist (리서치 사이언티스트)에 가까운 것 같다.

개인적으로는 다음과 같이 분류해야 한다고 생각한다.

 

[1] 머신러닝 or 딥러닝 리서치 사이언티스트

알고리즘 연구에 초점을 맞춘 데이터 사이언티스트라고 할 수 있겠다. 그리고 리서치 사이언티스트는 컴퓨터 비전, NLP 등 전문 분야의 연구원으로 분류되고 있는 추세다.

 

[2] Applied data scientist (데이터 사이언티스트)

1번과 비슷하지만 보다 더 비즈니스적이고 practical한 부분에 초점을 맞추고 있는 데이터 사이언티스트이며, 앞으로는 이러한 부류가 흔히 말하는 ‘데이터 사이언티스트’로 정의되지 않을까 싶다.

 

Applied data scientist 라는 용어는 한 2년전부터 보이기 시작했고, 업계에서 완전히 통용되는 용어는 아니나, 1번과 구별하기 위해서 사용하기 좋은 것 같다.

Meta의 데이터사이언티스트인 Deepak Chopra는 그의 블로그에서 applied data scientist 에 대해 다음과 같이 정의하고 있다.

Applied data scientist는 간단히 말해, 비즈니스에 적용할 수 있는 솔루션을 제공할 목적으로 이론적 개념 프레임워크와 알고리즘을 데이터에 적용하며 데이터(즉, 데이터 과학)에 대해 공부하는 사람(

An Applied Data Scientist, simply put, is someone who studies the data (i.e. data science) with the aim of providing actionable solutions to business problems by applying theoretical conceptual frameworks and algorithms on the underlying data.) 그리고 비즈니스 문제를 풀기 위해 데이터를 정제하고, 분석하고, 모델링해 의미있는 인사이트를 도출하는 사람 (Someone who processes, analyzes, models and interprets data of any kind to drive meaningful insights and help solve business problem)이라고 정의한다.

 

여기서 중요한 것은 정제, 분석, 모델링이다. 즉…데이터 정제 뿐만 아니라 분석, 모델링까지 모두 할 줄 알아야한다. 여기서 많이 오해하는 부분이 ‘정제(process)’인데, 단순히 준비된 데이터를 pre-processing하는 과정만 말하는 것이 아니라, 간단한 데이터 파이프라인 설계부터 해서 원천 데이터(raw data)를 자유자재로 가공해 원하는 분석환경으로 이동시킬 수 있어야 한다. 사실 회사마다 분석환경도 다르고 데이터 저장 아키텍처가 다르기 때문에, 경험이 적은 주니어일수록 이 부분에 약한 것이 사실이다. 따라서 이 부분을 채우려면 실무자 강의를 듣거나 기존에 블로그에 올렸던 강의를 들어보길 추천한다.

 

모델링된 데이터를 실제 서비스에 적용하는 방법에 대한 내용을 담은 강의 (feat. 데이터 사이언티스트가 알아야할 MLOps) - CS 329s

 

모델링된 데이터를 실제 서비스에 적용하는 방법에 대한 내용을 담은 강의 (feat. 데이터 사이언

https://stanford-cs329s.github.io/syllabus.html CS 329S | Syllabus stanford-cs329s.github.io 실무 경험이 없거나 적은 주니어 데이터 사이언티스트가 가장 많이 궁금해하고 알고 싶어하는 부분은 바로 본인..

data-manyo.tistory.com

데이터 사이언티스트가 알아야할 CS지식 - Missing Semester (feat. MIT 무료 강좌, 한글 자료 제공)

 

데이터 사이언티스트가 알아야할 CS지식 - Missing Semester (feat. MIT 무료 강좌, 한글 자료 제공)

Missing Semester, 우리말로 번역하면 잃어버린, 혹은 누락된 학기라는 뜻인데, 정규과정에서 잘 다루진 않지만 필요한 내용을 모은 강의이다. MIT에서 진행한 강의이며, 데이터 분석이나 데이터 사이

data-manyo.tistory.com

 

[3] 데이터 엔지니어

데이터 엔지니어의 역할도 굉장히 동적으로 변화하고 있다. 그 이유는 아래서 나오는 요인인 ‘chages in technology’ 현상과 연관이 깊다. 데이터 양도 많아지고, 비즈니스가 복잡해지면서 만든 모델을 관리하거나 데이터 파이프라인을 잘 관리할 수 있는 역할이 필요해졌다. 특히 큰 기업같은 경우는 데이터 보안 문제도 매우 중요하기 때문에 아키텍처 설계부터 보안관리까지 전문영역이 늘어나고 있다.

MLOps라는 직무가 새롭게 뜨고 있는 것만 봐도 그렇다. 지금까지의 데이터 엔지니어의 역할은 데이터 파이프라인을 잘 설계해 분석을 쉽게 만들어주는 것이었다면, 클라우드 리소스 관리, 데이터 정합성 관리, ML 모델 배포 및 관리 등 계속해서 확장되고 세분화 될 것이다.

사실 이러한 작업이 잘 되는 조직의 데이터 분석 및 활용 능력이 높아지기 때문에, 기업들은 많은 시행착오를 거쳐 지금은 매우 중요한 역할임을 인식하게 되었고, 현재 수요가 가장 많은 직군이 아닌가 생각한다. 컬럼에서도 밝혔듯이 오히려 데이터 사이언티스트보다 인기가 높다.

 

[4] 데이터 분석가 (or 비즈니스 분석가)

Data Analyst와 Business Analyst를 혼용하는 곳이 많은데, 사실 나는 같은 의미라고 생각한다. 기업에서 데이터 분석을 왜 하는가? 비즈니스를 위해서다. 다만 최근에는 ‘무엇을 분석하는가’에 대한 부분이 전문화되고 세분화되고 있다. 대표적인 것이 HR data analyst 일 것이다. Human resource 부서의 데이터만 전문적으로 분석하는 직종인데, 대이직 시대가 되고 재택근무가 활성화되면서 각광받고 있다.

가장 궁금해할 부분은 ‘데이터 분석가’와 ‘데이터 사이언티스트’의 차이인데, 현실적으로 많은 기업에서 데이터 분석가의 업무는 sql을 활용한 쿼리 추출 및 지표 관리가 주를 차지한다. 데이터 사이언티스트도 분석을하고 sql을 사용한다. 하지만 대부분 모델링 기반 새로운 프로덕트 생성을 위한 데이터 분석을 진행하거나, ML이나 DL 기반의 프로젝트를 만들기 위해 과제 발굴 작업 단계에서의 데이터 분석을 많이 진행한다. 반면 데이터 분석가 혹은 비즈니스 분석가는 daily로 봐야하는 지표나 전사에 공유되야 하는 중요한 비즈니스 지표들을 발굴하고 모니터링하는 작업을 많이 한다.

이제 다시 컬럼으로 돌아가 세 번째 변화를 살펴보자.

 

 

3) 기술의 변화 (changes in technology)

  • AutoML같은 기술로 인해 많은 부분이 자동화 됨.
  • 그로 인해 회사들은 ‘시티즌 데이터 사이언티스트’를 키우려는 추세

-비즈니스 환경이 달라져서 배치한 모델을 계속해서 모니터링할 필요성을 느낌. MLOps가 뜬 이유.

-2012년에 비해 coding 스킬이 중요하지 않아졌다 → 좋은 package, library로 인해 하드코딩 작업의 필요성이 줄어듬

너무나도 당연하지만 AI기술, 그리고 AI를 지탱하는 많은 인프라 기술들이 큰 발전을 거듭했다. 위에서 언급한 것처럼 데이터 엔지니어의 중요성이 커지고 있으며 데이터 엔지니어라는 직무 또한 계속해서 세분화되고 있다. 코딩이 필요없어질만큼 많은 부분이 자동화되고 있으며, 이에 따라 데이터 과학 지식을 겸비한 일반 ‘시티즌 데이터 사이언티스트’ 를 양성하고자 하는 움직임도 보인다.

사실 아직 coding이 필요없어질 정도는 아니지만, 비즈니스에 ML을 적용하며 생각할 수 있는 기능 대부분은 이미 라이브러리화 되어 제공되고 있는 것이 사실이다. 특히 클라우드 사업자들은 경쟁에서 이기기 위해 더 편하고 좋은 기능을 내놓으려 혈안이 되어 있고, 이에 따라 소비자들은 AI를 비즈니스에 적용하는 허들이 계속해서 낮아지는 것을 목격할 수 밖에 없다.

 

4) 데이터 과학의 윤리(The Ethics of Data Science)

첫 컬럼을 쓸때와 가장 달라진 부분은 바로 데이터 과학에 대한 윤리 문제가 부각되고 있다는 점이다. 책임감 있는 AI, 데이터 투명화 등의 주제가 큰 이슈로 떠올랐는데, 따라서 테크가 아닌 non-tech분야, 즉 법률이나 윤리 부분의 전문가들의 중요성이 커지는 추세라고 한다.

다시 한 번 결론이다.

결론. 데이터 사이언티스트라는 직업은 크고 작게 변화하고 있다.

  1. 제도화 (institutionalized, 혹은 일상화라고 번역하고 싶다) 되고 있고;
  2. 데이터 사이언티스트라는 직업의 범위(scope)이 재정의 되고 있으며;
  3. 데이터 사이언스를 둘러싼 기술들에 많은 변화가 생겼으며;
  4. 관련된 non-tech 전문가들의 중요성이 커지고 있다.

 

데이터 사이언티스트는 여전히 가장 섹시한 직업인가?

사실 컬럼 제목에 대한 직접적인 답은 내용에 없다. 그들의 처음 주장하던 시기와 비슷한 부분도 있고 변화한 부분도 있다고 주장하고 있을 뿐이다. 애초에 'sexy'라는 단어에 포커스를 둔 컬럼이 아니었는데, 데이터와 AI에 대한 관심때문에 많이 인용되다보니 내용보다는 sexy라는 단어에 초점이 맞춰져있던 것같다...

sexy라는 개념이 아무래도 주관적인 것이니 정답은 없을 것이다...

개인적으로는 sexy는 모르겠고 가장 유망한 직업 중 하나이며, 계속해서 동적으로 그 역할(role) 자체가 세분화되고 변화하는 직업이라고 생각한다. 

 

728x90

Missing Semester, 우리말로 번역하면 잃어버린, 혹은 누락된 학기라는 뜻인데,

정규과정에서 잘 다루진 않지만 필요한 내용을 모은 강의이다.

MIT에서 진행한 강의이며, 데이터 분석이나 데이터 사이언스 실무를 하면서 만나게 되는 command shell다루기,

버전 컨트롤(Git 다루기), Text Editing, SSH키 및 터미널 멀티플레싱을 사용해 원격 시스템과 작업하는 remote machine까지 공부할 때는 누락하기 쉬운 내용들을 모아두었다.

 

https://missing.csail.mit.edu/

 

The Missing Semester of Your CS Education

The Missing Semester of Your CS Education Classes teach you all about advanced topics within CS, from operating systems to machine learning, but there’s one critical subject that’s rarely covered, and is instead left to students to figure out on their

missing.csail.mit.edu

 

 

 

유명한 수업이라 한국어 페이지도 별도로 만들어져 있다!

https://missing-semester-kr.github.io/

 

여러분의 CS 교육에서 누락된 학기

여러분의 CS 교육에서 누락된 학기 CS 교과과정은 운영체제에서 기계학습에 이르기까지 CS 내의 고급 주제에 대해 모두 가르쳐 주지만, 거의 다루지 않는 중요한 한 가지 과목이 있으며, 대신 학

missing-semester-kr.github.io

 

아래 수업 동기를 읽어보면 어떤 내용이 담겨있는지 확인할 수 있다.

 

나도 몰라서 고생했던 부분이 많은데, 특히 command shell, version control(Git), remote machine 등에 대한 내용은 모델을 배포할 때, 처음에 시스템을 설정할 때 등 유용하게 쓰이는 테크닉들이다. 

아무래도 CS전공이 아닌 데이터 사이언티스트나 분석가 분들이 많이 찾는 내용이 가득할 것이다. 

 

 

--- 수업 동기:

 

왜 우리가 이 수업을 가르칠까요?

전통적인 컴퓨터 과학(CS) 교육을 듣는 동안 운영 체제, 프로그래밍 언어, 기계학습에 이르기까지 CS 내의 고급 주제들을 가르치는 많은 수업을 듣게 될 것입니다. 그러나 많은 기관에서는 거의 다루지 않고 학생들이 스스로 학습할 수 있도록 남겨진 필수적인 한 가지 주제가 있는데 바로 컴퓨터 생태계 활용 능력입니다.

지난 수 년간, 우리는 MIT에서 몇 가지 수업을 하는 것을 도왔고, 계속해서 많은 학생들이 사용하는 툴에 대한 제한된 지식을 가지고 있다는 것을 알았습니다. 컴퓨터는 수동 작업을 자동화하기 위해 만들어졌지만 학생들은 종종 손으로 반복 작업을 수행하거나 version control과 text editor와 같은 강력한 도구를 충분히 활용하지 않았습니다. 최상의 경우, 이는 비효율성과 시간 낭비를 초래하고, 최악의 경우 데이터 손실이나 특정 작업을 완료할 수 없는 등의 문제를 초래합니다.

이러한 주제들은 대학 커리큘럼의 일부로 가르치지 않습니다. 학생들은 이러한 도구들을 어떻게 사용하는지를 결코 알 수 없거나, 적어도 어떻게 효율적으로 사용하는지를 알지 못하며, 따라서 간단해야 할 과제에 시간과 노력을 낭비합니다. 표준 CS 커리큘럼은 학생들의 삶을 훨씬 더 쉽게 만들 수 있는 컴퓨팅 생태계에 대한 중요한 주제들이 빠져 있습니다.

여러분의 CS 교육에서 누락된 학기

이 문제를 해결하기 위해 우리는 효과적인 컴퓨터 과학자와 프로그래머가 되기 위해 중요하다고 생각하는 모든 주제를 다루는 수업을 운영하고 있습니다. 이 수업은 실제적이고 실용적이며, 여러분이 접하게 될 다양한 상황에서 즉시 적용할 수 있는 툴과 기술에 대한 실습 소개를 제공합니다. 이 수업은 2020년 1월 MIT의 “독립 활동 기간” 동안 운영되고 있는데, 이는 단축 수업을 위한 한 달짜리 학기입니다. 수업 자체는 MIT 학생들만 수강할 있지만 녹화된 수업 영상과 함께 모든 수업 자료를 대중에게 제공할 예정입니다.

만약 이 내용이 여러분에게 해당하는 것처럼 들린다면, 이 수업이 무엇을 가르칠 것인지에 대한 구체적인 예들이 아래에 나와 있습니다:

Command shell

별칭(aliases), 스크립트 및 빌드 시스템을 사용하여 일반 작업과 반복 작업을 자동화하는 방법에 대해 알아봅니다. 일반 문서에서 복사-붙여넣기 명령어를 더 이상 사용하지 않을 겁니다. “이 15개의 명령을 차례로 실행”을 더 이상 하지 않을 겁니다. “이것을 실행하는 방법을 잊었다”거나 “이 argument의 사용법을 잊어버렸다”는 말은 더 이상 하지 않을 겁니다.

예를 들어, 여러분의 shell history를 빠르게 검색하는 것은 엄청난 시간 절약이 될 수 있습니다. 아래와 같이 명령 변환을 위한 shell history 탐색과 관련된 몇 가지 트릭을 보여 줍니다.

Version control

Version control을 올바르게 사용하는 방법과 이를 활용하여 난관에서 여러분을 구하고, 다른 사람들과 협력하며, 문제가 있는 변경사항을 신속하게 찾아 격리하는 방법에 대해 알아봅니다. rm -rf; git clone을 수행하는 일은 더 이상 없을 겁니다. 병합 충돌은 더 이상 없을 겁니다(글쎄요, 최소한 더 적은 수라고 해야겠군요). 주석이 들어간 큰 코드 블록은 더 이상 없을 겁니다. 어떤 요소가 여러분의 코드를 깨트리는지 더 이상 애태우지 마세요. “안돼, 설마 작업 중인 코드를 삭제했나?!” 라고 더 이상 외칠 일이 없습니다. Pull requests로 다른 사람의 프로젝트에 기여하는 방법까지 알려드리겠습니다!

아래와 같이 git bisect를 사용하여 어떤 커밋이 unit test를 깨트렸는지 찾은 후에 git revert로 수정하는 것입니다.

Text editing

로컬 및 원격으로 command-line에서 파일을 효율적으로 편집하고 고급 편집기 기능을 활용하는 방법에 대해 알아봅니다. 파일을 앞뒤로 복사하는 일은 더 이상 하지 않게 될 겁니다. 반복적인 파일 편집이 더 이상 필요 없게 됩니다.

Vim 매크로는 가장 좋은 기능 중 하나인데, 아래와 같이 html 테이블을 중첩된 vim 매크로를 사용하여 csv 형식으로 빠르게 변환시킬 수 있습니다.

Remote machines

SSH 키 및 터미널 멀티플렉싱을 사용하여 원격 시스템과 작업할 때 정상적으로 유지하는 방법에 대해 알아봅니다. 두 개의 명령을 한 번에 실행하기 위해 많은 터미널을 열어둘 필요가 더 이상 없을 겁니다. 연결할 때마다 더 이상 암호를 입력하지 않아도 됩니다. 인터넷 연결이 끊겼거나 노트북을 재부팅해야 한다고 해서 모든 것을 잃을 일은 더 이상 없을 겁니다.

아래와 같이 세션을 원격 서버에서 활성 상태로 유지하기 위해 tmux를 사용하고 네트워크 로밍과 연결을 지원하기 위해 mosh를 사용합니다.

Finding files

신속하게 원하는 파일을 찾는 방법에 대해 알아 봅니다. 원하는 코드가 있는 파일을 찾을 때까지 프로젝트의 파일을 클릭하는 일은 더 이상 하지 않아도 됩니다.

아래와 같이 fd가 있는 파일과 rg가 있는 코드 스니펫을 빠르게 찾아볼 수 있습니다. 또한 fasd를 사용하여 최근/자주 사용하는 파일/폴더도 cd와 vim을 실행할 수 있습니다.

Data wrangling

Command-line에서 직접 데이터 및 파일을 빠르고 쉽게 수정, 보기, 구문 분석, 그래프 그리기 및 계산하는 방법에 대해 알아봅니다. 로그 파일에서 복사, 붙여넣기를 더 이상 하지 않아도 됩니다. 데이터에 대한 통계를 더 이상 수동으로 계산하지 않아도 됩니다. 이제는 스프레드시트에 그래프를 그리지 않아도 됩니다.

Virtual machines

가상 머신을 사용하여 새로운 운영 체제를 시도하고, 관련 없는 프로젝트를 분리하며, 주 머신을 깨끗하고 깔끔하게 유지하는 방법에 대해 알아봅니다. 보안 랩을 수행하는 동안 실수로 컴퓨터를 더 이상 손상시키지 않아도 됩니다. 버전이 다른 수백만 개의 무작위로 설치된 패키지는 더 이상 필요 없습니다.

Security

여러분의 모든 비밀을 세상에 즉시 드러내지 않고 인터넷에 접속하는 방법에 대해 알아봅니다. 너무 취약한 자신의 정보과 일치하는 비밀번호를 더 이상 사용하지 않을 겁니다. 보안되지 않은 개방형 WiFi 네트워크는 더 이상 없을 겁니다. 암호화되지 않은 메시지는 더 이상 없을 겁니다.

Conclusion

위의 내용과 더불어 더 많은 내용이 12개의 수업에서 수업 내용과 함께 연습 문제를 포함되어 있습니다. 1월을 기다릴 수 없다면 지난해 IAP 때 운영했던 Hacker Tools 강의를 살펴봐도 좋습니다. Hacker Tools는 이 수업의 선구자격로서, 같은 주제를 많이 다루고 있습니다.

728x90

 

 

https://stanford-cs329s.github.io/syllabus.html

 

CS 329S | Syllabus

 

stanford-cs329s.github.io

 

실무 경험이 없거나 적은 주니어 데이터 사이언티스트가 가장 많이 궁금해하고 알고 싶어하는 부분은 바로 본인이 한 모델링 결과를 어떻게 비즈니스에 적용하느냐에 대한 것이다.

 

물론 비즈니스 구조가 다르고, 사용하고 있는 시스템이 다르기 때문에 획일적인 답안이 존재하는 것은 아니지만

이러한 궁금증을 해소시켜줄 강의 자료가 있어 소개한다.

 

바로 스탠포드 대학의 공개 강의인 CS329s 이다.

 

Lecture note가 워낙 상세해서, Lecture note와 lecture slides만 봐도 큰 도움이 된다.

 

그리구 후반부에는 실무자들의 강연이 이어지는데,

실무에서 어떤식으로 모델링된 결과를 적용하고 모니터링하는지 아주 상세히 설명해주고 있다.

특히 아래와 같이 모니터링 코드 샘플까지 제공하고 있다!

 

모니터링 샘플 예시 - 실제로 모델링된 결과를 어떻게 활용하는지 보여줌

 

아마도 부트캠프 같은 곳에서는 실제 모델링한 결과물을 적용하는 실습을 하거나,

직간접적으로라도 경험하기 힘든 부분들이 많은데,

이런 자료를 통해 어느정도 그 니즈를 해소했으면 한다.

 

 

개인적으로 데이터 사이언티스트로서 성장하기 위해서는 MLOps라고 부르는 파트의 지식이 쌓여아 한다고 생각한다.

AI research scientist가 아닌 이상, 내가 만든 product를 보다 효율적으로 deploy하고 활용하는 방안을 고민하고, 또 필요한 경우 직접 처리 할 수 있는 skill을 배워야 한다. 이미 이러한 일들이 효과적으로 배분되어 있는 데이터팀이 있는 경우가 아니라면...(혹시 그런 팀에 있다고 하더라고 co-work을 위해^^)

 

 

 

728x90

 웨스 매키니의 "파이썬 라이브러리를 활용한 데이터 분석" 3판이 Open Access로 출간되었습니다.

 

국내에서도 번역본 (2판까지)이 출간되어 꾸준히 사랑받고 있습니다.

 

 

3판 내용이 반영된 개정판 번역본이 나올지는 모르겠지만,

3번째 에디션 원서는 Open Access로 풀려 누구나 접속해 볼 수 있습니다.

 

Python for Data Analysis, 3E (wesmckinney.com)

 

Python for Data Analysis, 3E

About the Open Edition The upcoming 3rd edition of Python for Data Analysis is available as an “Open Access” HTML version on this site https://wesmckinney.com/book in addition to the usual print and e-book formats. This is currently an Early Release ve

wesmckinney.com

 

 

2판과 내용 면에서 큰 차이는 없을 듯한데, Python, 특히 pandas 버전 문제 해결에 초점을 맞춘것 같습니다.

 

관심있는 분들께 도움이 되길 바랍니다.

 

728x90

머신러닝/딥러닝 모델을 실제로 사용하는 비즈니스가 많아지면서 

MLOps 영역도 굉장히 빠르게 성장하고 있다.

 

MLOps관련 책을 Yes24에 찾아보면,

 

위와 같은 검색결과가 나오는데, 

여기서 세번째 책인 O'Reilly의 Indtroducing MLOps가 무료로 배포되고 있다.

 

 

PDF버전 다운로드 주소: https://media-exp1.licdn.com/dms/document/C4E1FAQGn5ICc1AIF8g/feedshare-document-pdf-analyzed/0/1649378714076?e=2147483647&v=beta&t=ByhUUGbnWc4EvB4sPhmQqrTALmW837jVFz3O8KcPolA 

 

저자는 코드와 데이터가 만나면 파이프라인이 생겨난다고하는데,

이 책은 바로 그 파이프라인 생성 및 관리에 대한 책이다.

 

data scientist로 계속해서 일을 하려면 모델에 배포 뿐만 아니라,

데이터 파이프라인에 대한 기초적인 부분까지 숙지하고 있어야 한다.

특히 클라우드 환경에서 유연하고 효율적인 파이프라인을 만들고 관리하는 것이 갈수록 중요해지고 있다.

 

책 4장 내용 일부

 

159페이지 정도밖에 안되기 때문에 MLOps에 관심있는 독자라면 읽어보면 좋을 것 같다.

 

 

*위 다운로드 주소가 유효하지 않은 경우에는, 아래 주소에 방문 후 다운로드!

https://pages.dataiku.com/oreilly-introducing-mlops

 

O'Reilly Introducing MLOps

This O'Reilly ebook introduces the key concepts of MLOps.

pages.dataiku.com

 

+ Recent posts