글과 사진, 그리고 이야기

IE & SWCON 33

UML 다이어그램과 디자인패턴 (sckit-learn의 pca)

소프트웨어 개발 과정에서 디자인 패턴을 사용하는 이유와 목적 소프트웨어에서 디자인이 강조되고 있고 정해진 형식으로 소통하기에는 글보다 그림이 더 설명력이 우수하고 소통의 오류를 최소화할 수 있다. 알고리즘의 작동방식을 보다 명확하게 설명하기 위해서와 시스템 설계 및 문서화에 널리 사용되고 무엇보다 시각적으로 표현할 수 있다는 점이 강점이라고 할 수 있다. 디자인 패턴을 사용하게 되면 재사용 가능한 컴포넌트로 분리할 수 있으며 유연성을 확보할 수 있다. 알고리즘의 적절성을 확인할 수 있고 시스템을 쉽게 확장 및 변경할 수 있다. 특히 머신러닝과 같이 다양한 알고리즘들이 쏟아지는 영역에서는 한눈에 이해하기 위해 도식화된 그림이 필요하고 어떤 파라미터를 사용해야 개발된 알고리즘을 적절하게 활용할 수 있는지 알..

Kernel Trick

kernel methods에서는 선형적으로 분류가 불가능한 모델에 대해서 일종의 mapping function을 사용해 차원을 확장시키고 그 후 역과정을 거쳐 boundary를 만들게 된다. 선형대수학에서 배운 개념인 linear transformation을 생각하면 쉽다. theta에 대해서는 선형성을 가지므로 최소제곱법 알고리즘을 사용할 수 있고 x에 대해서는 비선형적이라서 모델 내 데이터를 꽤 복잡하게 만들도록 핸들링할 수 있다. 다음과 같은 trick을 사용하면 시간을 줄이게 된다. kernel trick은 지도학습과 비지도학습 모두에서 사용할 수 있다. -지도학습에서 아주 강력하다고 볼 수 있음- kernel trick은 복잡한 비선형 feature를 아주 약간의 추가적인 계산비용만으로 문제를 ..

SVM(Support Vector Machine)

마진을 최대화하는 알고리즘 마진이란 클래스를 구분하는 초평면(결저 경계)과 가장 가까운 train sample 사이의 거리로 정의한다. 그리고 그 샘플은 서포트 벡터라고 한다. 마진의 개념에 대해서 잘 이해할 수 있는 그래프이다. 결국 마진, 거리의 개념을 최대화하는 아이디어에 대해 생각해봐야한다. 조금 평면을 확장시켜서 다음과 같이 가정할 수 있다. x0는 초평면 위의 벡터이므로 초평면 방정식에 대입하게 되면 오른쪽과 같은 식을 얻을 수 있다. 우리가 궁금한 것은 gamma(i), dist 거리에 대한 정보이기 때문에 최종적으로 위와 같은 식이 나온다. 그리고 저 gamma를 geometric margin 이라고 부른다. margin_x0 = (theta.dot(x0) + theta0)[0] / np...

로지스틱 회귀를 사용한 클래스 확률 모델링

선형 이진 분류 문제에 강력한 알고리즘인 로지스틱 회귀. 이름과 달리 분류 모델임을 주의해야 한다. 이진 분류가 아닐 경우 소프트맥스 회귀(다항 로지스틱 회귀)를 통해 문제를 해결할 수 있다. logistic function은 odds비(특정 이벤트가 발생할 확률)의 로그형태에 대한 역함수로서 구할 수 있다. 그리고 이 함수를 로지스틱 시그모이드함수, 간단하게 시그모이드 함수라고 한다. t 대신에 x.transpose * theta를 넣어서 이진분류에 보다 직관적으로 사용하기도 한다. 아무튼, t >0 에서 1로 분류 t

Regression Line fitting - 선형 회귀/Normal Equation/Non-linear(polynomial)/릿지,라쏘 규제

회귀 선을 정하기 위해서는 주어진 Y,X를 잘 설명할 수 있는 beta 혹은 theta 라고 쓰는 coefficent와 intercept에 대해서 잘 알아야 한다. 1. 단순 선형 회귀 우선 단순히 선형회귀를 하는 방법으로는 코드만 일부 첨부하자면 regr = linear_model.LinearRegression() # fiiting regr.fit(diabetes_X_train, diabetes_y_train.values) # Make predictions on the training set diabetes_y_train_pred = regr.predict(diabetes_X_train) # The coefficients print('Slope (theta1): \t', regr.coef_[0]) pr..

새로운 비만 평가 지표를 만들기 위해서 (3)

수업에서 배운 오로지 수업에 의한 기본적으로 성능을 고려하지는 않음 우선, 다시 스케일링을 했다. 이유는 통일성을 위해서와 여러 전처리를 겪다보니 상당히 더러워진 데이터를 처음부터 정제하기 위해서. 아무튼 다시 전처리를 진행했고 그 내용은 (2) 와 별반 다르지 않다. 이를 바탕으로 Regression이나 Classification 모두를 사용해보았다. 물론 Regression이 연속형 데이터 셋에서 사용해야겠지만 처음에 의도했던 가중치를 구하고 점수화하기 위해서는 Regression도 꽤 괜찮은 시도이지 않나 생각한다. (반박시 니말 맞음) import pandas as pd from sklearn.model_selection import train_test_split from sklearn.linea..

새로운 비만 평가 지표를 만들기 위해서 (2)

데이터 변수별 상관관계를 탐색하는 과정을 거치면서 간단한 전처리를 진행하려고 한다. 사용하는 데이터는 질병관리청으로부터 공공데이터 개방을 요청해수집한 데이터이다. 전체 원본에서 우리가 구축하고자 하는 모델에 적합하도록 우선 일부 열을 선택했고 행도 조금 줄였다. 모델을 정하지 않은 단계에서 데이터 전처리를 너무 과감하게 진행한 감이 없지 않은 듯 한데, 이 부분이 조금 아쉽게 남는다. 그럼에도 수업에서 배운 오로지 수업에 의한 CRISP-DM 절차에 의해 그 과정을 이해하는 것에 의의를 두고 이어서 진행하도록 하겠다. 우선 csv 파일중에서 겉보기에는 numeric해 보지만 실제로는 더 범주형에 가까워보였다. 그래서 새롭게 수정을 했다 이를테면 아래 사진과 같이 이를 토대로 새롭게 음주량에 대한 아주아주..

새로운 비만 평가 지표를 만들기 위해서 (1)

sim et al.(2006)에서는 단순비만지표로는 허리둘레(waist circumference, WC), 허리 엉덩이 둘레 (waist-hip ratio, WHR), 허리둘레 신장 비 (waist-stature ratio, WSR), 그리고 가장 대표적인 체질량지수(BMI)등이 있다. 그러나 연구자료에 따라 비만도 측정방법과 비만기 , 준의 차이가 있으므로 한국인의 비만 유병률이 상 이하게 보고되고 있으며, 특히 단순비만지표는 대부분 한국인 체형과는 다른 서구인을 근거로 하여 측정되었다 그러나 한국인은 신장과 엉덩이둘 . 레가 서양인보다 유의하게 작아 서구의 비만기준을 그대로 적용하기에 많은 문제점이 나타나고 있으며 , 동양인은 서양인보다 동일 체질량지수에서 내장지방이 더 많으며, 제지방량은 적어 비만..

[Design] Libre office를 활용한 work flow (flow chart) 만들기

* 대한산업공학회 FIELD 캠프에서 Competition으로 기획한 주제에 대한 데이터 분석과정에 대한 work flow이다. 사용한 도구는 오픈소스로 공개된 리브레 오피스 https://www.libreoffice.org/discover/libreoffice/ What is LibreOffice? | LibreOffice - Free Office Suite - Based on OpenOffice - Compatible with Microsoft Follow Us www.libreoffice.org 이다. Flow Chart를 만들 때에는 규칙이 있다. https://ko.wikipedia.org/wiki/%EC%88%9C%EC%84%9C%EB%8F%84 순서도 - 위키백과, 우리 모두의 백과사전 위키..

IE & SWCON 2023.10.20