분류 전체보기 84

데이터 전처리

Weltried의 앉은 자세 측정 어플리케이션 개발에서 AI부서가 맡은 파트는 3축 가속도 센서로부터 들어오는 raw data를 이용하여 8방향 + 중앙 중 어느 방향으로 사용자가 앉아있는지 판단하는 AI모델을 개발하는 것입니다. Weltried의 웨어러블 벨트에 존재하는 3축 가속도 센서는 5Hz의 속도로 어플에 가속도 데이터값을 전달합니다. 이번 글에서는 전달받은 값을 전처리하고 분석한 코드를 리뷰합니다. raw data는 다음과 같이 x, y, z축 가속도 데이터를 받습니다. raw data 는 팀원 6명이 특정 조건에서 측정하여 데이터를 수집하였습니다. 데이터를 수집한 방법은 다음과 같습니다.총 9방향으로 돌아가며 측정 (0: 후방, 1:우측 후방, 2: 우측, ... , 8: 중앙)허리를 굽힌 ..

결정 트리(Decision Tree)

이번 글에서는 머신러닝 분류(Classification)의 기본이 되는 결정트리에 대해 소개한다. 결정트리(Decision Tree) 결정 트리는 트리 기반의 분류 규칙을 만드는 것이다. 분류 알고리즘은 feature를 이용하여 label을 예측하는 형식으로 이루어 지는데, 결정트리는 feature의 값을 특정 기준으로 나누며 label을 분류한다.유전자의 발현량을 feature로 이용하여 방광암 환자와 정상인을 분류하는 분류기를 가정해보자. CALD1,JAZF1 유전자는 방광암 발병 환자에게서 높은 발현량을 가지는 것으로 알려져 있다. 이를 이용하여 다음과 같은 결정 트리를 생성할 수 있다.먼저 CALD1의 발현량을 기준으로 나눈다. CALD1의 발현량이 8 이하일 경우 0(Neagtive)로 분류하였..

피마 인디언 당뇨병 예측

이번 글에서는 kaggle에서 제공하는 피마 인디언 당뇨병 데이터셋을 이용하여 당뇨병 여부를 판단하는 예측 모델 수립, 여러가지 성능 지표를 이용하여 모델의 성능을 평가한다. 피마 인디언 당뇨병 데이터 세트는 다음 피처로 구성된다.Pregnancies: 임신 횟수Glucose: 포도당 부하 검사 수치BloodPressure: 혈압SkinThickness: 팔 삼두근 뒤쪽 피하지방 측정값Insulin: 혈청 인슐린BMI: 체질량지수DiabetesPedigreeFunction: 당뇨 내력 가중치 값Age: 나이Outcome: 클래스 결정 값(0또는 1)먼저 모델 구현 및 성능 평가를 위한 라이브러리를 import하고, 데이터를 불러와 확인한다. 레이블이 불균등하게 분포하므로 Stratify를 이용하여 학습셋..

F1 score, ROC, AUC

이번 글에서는 F1 score, ROC, AUC를 소개하며 성능 평가 지표를 마무리한다. -F1 score F1 score는 정밀도와 재현율을 결합한 지표이다. 정밀도와 재현율이 어느 한쪽으로 치우치지 않는 수치를 가질 때 상대적으로 높은 값을 가진다.※무조건적으로 비슷할 때 가장 높은 값을 가지는 것은 아니다. 어느 한쪽으로 치우쳐 있더라도, 두 값이 각각 높은 수치를 가진다면 비슷할 때보다 F1 score가 높게 나타날 수 있다. 상대적으로 높은 값을 가진다는 뜻은 정밀도와 재현율의 합이 같다고 가정할 때, 두 값이 비슷한 경우가 한쪽으로 치우친 것보다 더 높은 값을 가진다는 뜻이다.사이킷런은 F1 score를 구하기 위한 f1_score()메서드를 제공한다. 여느 성능 평가지표 메서드들과 마찬가지로..

정밀도와 재현율

이전 장에서 정확도와 오차행렬에 대해 다루었다. 정확도는 가장 직관적인 성능 지표이지만 불균등한 label을 가진 데이터셋에서 성능을 왜곡할 수 있다. 정확도는 '정확히 예측한 건 수'에 초점을 맞춘다면, 정밀도와 재현율은 Positive 데이터셋(양성)에 초점을 맞춘 평가 지표이다. 정밀도, 재현율의 정의 정밀도 = TP / (FP + TP)재현율 = TP / (FN + TP)정밀도는 Positive로 예측한 대상 중 실제로 Positive로 일치한 데이터의 비율이고,재현율은 실제 값이 Positive인 데이터 중 예측 값이 Positive로 일치한 데이터의 비율이다. 정밀도, 재현율의 상호 보완 관계 정밀도와 재현율은 상호 보완적인 지표이기 때문에 한 쪽이 높아지면 한 쪽은 낮아지기 쉽다.이를 오차행..

정확도(accuracy), 오차 행렬(confusion matrix)

모델을 설계했다면 설계한 모델이 얼마나 정확한 모델인지 평가해야한다. 이번 글에서는 모델을 평가하는 성능평가 지표 중 하나인 정확도와, 여러 성능 평가 지표를 생성할 수 있는 오차 행렬에 대해 소개한다. 정확도(Accuracy) 정확도: 실제 데이터에서 예측 데이터가 얼마나 같은지 판단하는 지표정확도(Accuracy) = 예측 성공한 데이터 건수 / 전체 예측 데이터 건수정확도는 가장 직관적으로 모델 예측 성능을 나타내는 평가 지표이다. 하지만 특정 데이터셋에서는 성능을 왜곡할 수 있다. 이진 분류 문제에서 label이 0인 데이터가 전체 데이터셋의 90%, 1인 데이터가 전체 데이터셋의 10%라고 하자. 그리고 모델은 어떠한 input이 들어오든 0으로 예측한다고 하자. 정확도로 해당 모델을 평가하면 ..

1. 졸업프로젝트_Deep_Video_Decaptioning Intro

-프로젝트 목표 영화, 드라마 등의 영상에 삽입된 자막 및 캡션 제거 -기술 동향 해당 논문에서 제시한 자막 인페인팅 기술은 두 개의 네트워크로 구성된 모델을 제안한다. 자막 부분 mask extraction 자막 부분 Decaptioning 두 개의 네트워크 모두 UNet 구조를 이용한다. 기존 인페인팅에서 사용하는 Encoder-Decoder를 사용하였으나 두 개의 네트워크로 나누어 각각의 역할을 수행하여 성능을 높였다. 또한 Frame_attention 기술을 이용하여 인페인팅의 정확도를 높였다. -세부 프로젝트 목표 베이스 라인으로 Deep Video Decaptioning (2021) 에서 제시한 모델을 이용하되 성능 개선 및 경량화를 목표로 한다. 아직 자막 인페인팅은 기술만 개발되었고 상용화..

1. 드림학기제_암 발병률 예측 프로그램(with 생물정보학) Intro

-프로젝트 목표 Machine Learning, Deep Learning 알고리즘을 이용한 암 발병률 예측 프로그램 -기획 이유 암을 발병시키는 근본적인 요인은 DNA mutation이다. 이를 통해 나타나는 대사체 농도의 변화 혹은 DNA의 발현량 변화가 암 발병과 연관이 있을 수도 있고, 암 발병을 인지할 수 있는 중요한 지표가 될 수 있다. 따라서 암 발병률 예측 프로그램을 이용하여 특정 암이 어떤 특정 대사체의 농도, DNA 발현량 사이에 연관이 있는 지 찾는다. 암 진단을 위해서는 들어가는 시간적, 비용적 소모가 크다. 따라서 기존 진단 방법보다 정확도는 낮지만, 더욱 쉽게 검사할 수 있는 프로그램을 구현한다. 특정 암 발병에 큰 연관성이 있는 유전체를 찾는다면, 아직 암이 발병하지 않은 환자도..

1. 산학협력프로젝트_with_WELT Intro

-프로젝트 목표 WELT사의 웨어러블 Belt를 이용하여 앉은 자세를 실시간으로 측정하고 시각화하는 어플리케이션 개발 -세부 프로젝트 내용 WELT사의 Belt에 내장된 3축 가속도 센서를 이용하여 9방향(중앙, 8방위)중 어느 방향으로 앉아 있는지 구분한다. 3축 가속도 센서에서 전송된 x, y, z축 가속도 센서 데이터를 이용하여 딥러닝 모델을 학습하고, 학습된 모델을 이용하여 실시간으로 9방향을 예측한다. 실시간으로 측정된 9방향 데이터를 누적하여 8방위 그래프로 시각화한다. 사용자가 그래프를 보고 self feedback할 수 있도록 시각화 하는 것을 목표로 한다. -프로그램 구조 WELT Belt에서 3축 가속도를 측정하여 사용자의 모바일폰으로 전송한다. 모바일폰의 어플리케이션에서는 다시 x, ..

타이타닉 생존자 예측

이번 글에서는 Kaggle의 유명한 competition중 하나인 타이타닉 생존자 예측 문제에 대한 [파이썬 머신러닝 완벽가이드]의 코드를 리뷰한다(import문은 생략한다). 타이타닉 생존자 예측 문제의 데이터셋 설명은 Kaggle 홈페이지에서 확인할 수 있다. 여기서는 전체 코드를 리뷰하는 것이 아닌 중요 코드만 발췌하여 리뷰한다. 전처리 타이타닉 데이터셋의 변수 정보이다. label은 'Survived'이며, feature는 'Survived'를 제외한 나머지이다. 전처리가 필요한 부분은 다음과 같다.null값을 적절한 값으로 채우기학습에 필요하지 않은 feature 제거하기object자료형을 가지는 변수 인코딩하여 int로 바꾸기fillna()함수를 이용하면 null값을 원하는 값으로 메꿀 수 있..