전체 글 59

Physics-based modeling과 Data-driven modeling

본 포스팅은 Data-Driven Modeling: Concept, Techniques, Challenges and a Case Study$($Maki K. Habib, 2021$)$에 정리된 내용에 부연 설명을 더해 작성했습니다. 별도 출처 표기가 없는 이미지는 wikipedia의 이미지를 활용했습니다. 현실 세계의 복잡한 시스템의 행동이나 특성을 예측하기 위해 모델링을 한다. 어떤 자극이나 입력$($$x$$)$에 대해 응답 혹은 출력$($$y$$)$을 예측할 수 있는 수학적인 모델을 만들어 활용한다. 모델을 활용해 시뮬레이션, 최적화, 예측, 제어, 고장 진단 등 많은 분야에 활용할 수 있다. 이번 포스팅에서는 데이터 기반 모델링에 대한 이해를 높히는 것을 목표로 한다. 이후 모델링 접근법 분류, 모..

Data science 2024.03.01

신뢰성 공학 기초

신뢰성$($Reliability$)$의 공학적 정의 신뢰성$($Reliability$)$는 주어진 기간 동안 주어진 조건에서 요구 기능을 수행할 수 있는 제품$($부품/시스템)의 능력으로 운영 중에 성능에 관련된 지표다. 유사한 개념으로는 품질$($Quality$)$가 있는데, 품질은 생산 직후 제품의 성능에 관련된 지표를 나타내는 개념이다. 쉽게 말해 품질은 제품의 양품/불량품에 관한, 신뢰성은 운영 중 제품의 수명, 고장에 대한 개념으로 볼 수 있다. 제품의 성능, 사용 환경 그리고 시간에 대한 불확실한 관계를 확률적으로 정의해 Risk와 고장률 등을 분석한다. 여러 갈래로 고도화 되어 제품의 설계, 생산, 유지보수, 고장 분석 등 제품의 life cycle 전반에 활용된다. 일반적으로 신뢰성 공학의..

Data science 2023.10.04

모델과 지도학습

모델이란 모델링은 현실 세계의 시스템, 현상의 간소화된 표현을 생성하는 과정으로 이를 통해 현실 세계를 이해, 분석, 예측 및 최적화를 할 수 있다. 대부분의 모델은 ‘예측’을 목적으로 한다. 여러 변수 간의 관계를 방정식, 알고리즘 등으로 정의해 실제로 만들어 관측하기 전에 자극$($stimulus$)$이나 입력$($input$)$에 대한 응답$($response$)$이나 출력$($output$)$을 예측하는 것이 모델링의 목적이다. Physics-based model 물리 기반 모델은 물리적인 법칙에 의해 만들어진 모델이다. 지금까지 과학 시간에 배웠던 가장 유명한 물리 모델은 힘과 운동의 관계를 기술한 $\sum{\vec{F}} = m\vec{a}$일 것이다. 이 식은 외부에서 어떤 물체에 가해준 ..

Data science 2023.08.30

인공지능과 수학

인공지능은 과거 전문가의 지식을 프로그램화 한 expert system부터 시작해 현재는 데이터로부터 학습하는 머신러닝과 딥러닝을 주로 인공지능이라고 한다. 최근에는 ChatGPT나 Dall-E와 같은 생성형 AI가 주목을 받고 있지만 여기서는 입력된 데이터로부터 어떤 판단을 하거나 예측을 하는 분류(classification)와 회귀(regression) 모델에 대한 설명을 할 예정이다. AI 모델의 학습 방식 지금부터 AI 모델은 Machine learning이나 Deep learning의 회귀나 분류를 수행하는 지도학습 모델이라고 이해하면 된다. 지금까지 어떤 대상이 특정 입력을 받았을 때 반응을 예측할 수 있는 모델은 Domain 전문가의 물리적인 지식으로 복잡한 현상과 데이터를 분석하고 이를 수..

Data science 2023.08.06

[guard clause] 간결한 코드 로직을 위한 guard clause 패턴

프로그램을 작성하다 보면 특정 기능을 실행할 때 여러 조건을 검증해야하는 경우가 있다. 이런 경우에 nested if 문을 사용해 각 조건을 검증할 수 있는데, 이런 경우에 indentation의 영향 등으로 가독성이 떨어지는 비효율이 존재한다. Guard guard는 프로그램에서 특정 기능을 수행하기 위해 True로 유지되어야 하는 bool type 변수다. 쉽게 말하면 프로그램을 진행하기 위해 만족해야하는 조건을 guard라고 한다. 다음과 같은 방식으로 로그인 기능이 있다고 하자. line4의 guard 1에서 check_username으로 존재하는 username인지 여부를 True 혹은 False로 확인한다. 다음 단계인 암호 확인 단계로 넘어간다. line5의 guard 2 조건을 만족할 때 ..

[python 환경 구축 0] Miniconda와 VS CODE로 시작하는 python

Miniconda는 Anaconda의 무료 버전의 subset이다. Anaconda는 numpy, pandas 등등 데이터 사이언스나 과학 연산에 필요한 모든 패키지를 포함하는 종합 솔루션이다. Miniconda는 Anaconda의 최소 기능을 포함한 light한 버전의 패키지 관리 툴이라고 볼 수 있다. 좀 더 가벼운 패키지를 설치하기 위해서 혹은 기업용으로 사용하기 위해서 Miniconda 사용이 필요한 경우가 있다. VS code는 Microsoft에서 제공하는 무료 고성능 코드 편집기다. 매우 가볍고 커스터마이징의 편리함으로 가장 인기있는 개발 환경 중 하나다. Python 외에도 C++, Matlab, TypeScript 등의 언어를 사용하는 많은 개발자들 사이에서 사랑 받고 있다. Minico..

[python 기초 7] pandas 시작하기

pandas는 python에서 기본적으로 제공하는 라이브러리는 아니다. 하지만 프로그램을 통해 데이터를 불러오고, 처리하고, 시각화하는 과정에서 거의 모든 경우에 사용하게 되는 open-source 라이브러리다. pandas는 Series와 DataFrame 두 종류의 데이터 구조를 제공하고 Series는 index로 접근할 수 있는 1차원 형태의 데이터를, DataFrame은 index와 column으로 접근할 수 있는 2차원 데이터를 다룬다. DataFrame으로 excel, DB에 존재하는 데이터를 불러와 python에서 편리하게 정렬, 분류, 연산, 분석을 할 수 있다. 이번 포스팅에서는 pandas의 DataFrame 자료 구조와 iloc과 loc으로 일부 데이터에 접근하는 방법에 대해 학습한다..

[python 기초 6] python libraries

파이썬이 인기있는 이유 중 하나는 파이썬의 인기 그 자체다. 다양한 application에서 python을 사용하는 많은 사람들 덕분에 다른 사람의 결과물을 가져와 쉽게 사용할 수 있다. Library라고 하는 미리 정의된 코드들 덕분에 개발자들은 일반적인 task를 쉽고 빠르게 수행할 수 있다. 이번 포스팅에서는 python의 라이브러리를 생성하고 불러오는 방법에 대해 배우고, 유명한 라이브러들 몇 가지를 소개한다. 라이브러리 정의 Defining a Custom Library 단순히 미리 정의된 함수나 클래스의 집합 스크립트를 모듈이라고 하는데, 라이브러리는 비슷한 기능들을 하는 모듈의 집합이라고 이해할 수 있다. 라이브러리를 생성한다는 것은 하나의 파일 안에 한개 이상의 .py 스크립트를 작성하는 ..

[python 기초 5] Class

파이썬은 객체 지향(object-oriented) 프로그래밍 언어로 모든 것이 객체로 구성된다. class는 이러한 객체를 만드는 틀이라고 볼 수 있다. class는 데이터와 특정 행동을 모두 포함(encapsulate)하는데 이것은 함수만 사용하는 것에 비해 재사용성이 좋고, 현실의 많은 것들은 데이터와 기능이 함께 존재하기에 현실을 더 현실스럽게 모델링할 수 있다. built-in data type인 int, string 등도 모두 class다. 우리가 필요한 새로운 class를 만든다는 것은 새로운 type을 만든다는 것과 동일한 의미이다. 이러한 설명은 초보자에게 와닿지 않는 것을 알고있다. 모델링 관점에서 class를 이해하면 비슷한 성질과 행동을 하는 객체에 대한 설계도 정도로 이해하고 넘어가..

[python 기초 4] 함수

함수는 프로그래밍의 key concept 중 하나로 반복 사용 될 코드 블럭을 미리 정의해 프로그램에서 반복해 사용할 수 있도록 하는 concept이다. 모든 프로그래밍 언어에도 존재하는 개념으로 python에서는 def 키워드를 사용해 함수를 정의한다. 함수는 입력을 받을 수 있고, 함수 내에 작성된 코드를 수행해 입력에 따른 결과를 반환한다. 경우에 따라 입력, 출력이 없는 경우도 있다. 이번 포스팅에서는 함수를 정의하고 사용하는 방법과 variable scope의 개념에 대해 설명한다. 함수 정의 Defining Functions 아래의 add_number 함수는 두 매개변수(parameter)를 받아 두 값을 더한 결과를 반환하는 예시이다. def add_number(x,y = 3): return..