학습률 (Learning rate) Start

BioinformaticsAndMe






학습률 (Learning rate)

경사하강법 알고리즘은 기울기에 학습률(Learning rate) 또는 보폭(Step size)이라 불리는 스칼라를 곱해 다음 지점을 결정

: Local minimum에 효율적으로 도달할 수 있도록, 너무 크지도 작지도 않은 적절한 학습률을 세팅해야 함




학습률이 큰 경우데이터가 무질서하게 이탈하며, 최저점에 수렴하지 못함

학습률이 작은 경우 : 학습시간이 매우 오래 걸리며, 최저점에 도달하지 못함






사용된 학습률이 경사하강법에서 효율적인확인하기 위해, 아래 2차원 그림을 그려봄

- loss : cost function

- epoch : number of iterations 


low learning rate: 손실(loss) 감소가 선형의 형태를 보이면서 천천히 학습됨

high learning rate: 손실 감소가 지수적인(exponential) 형태를 보이며, 구간에 따라 빠른 학습 혹은 정체가 보임

very high learning rate: 매우 높은 학습률은 경우에 따라, 손실을 오히려 증가시키는 상황을 발생

good learning rate:  적절한 학습 곡선의 형태로, Learning rate를 조절하면서 찾아내야 함







#Reference

1) https://en.wikipedia.org/wiki/Learning_rate

2) https://developers.google.com/machine-learning/crash-course

3) https://medium.com/mindorks/an-introduction-to-gradient-descent-7b0c6d9e49f6

4) https://taeu.github.io/cs231n/deeplearning-cs231n-Neural-Networks-3/





학습률 (Learning rate) End

BioinformaticsAndMe

FDR (False Discovery Rate) Start

BioinformaticsAndMe






FDR (False Discovery Rate)

: FDR은 다중검정비교에서 'False positives / Total positives'의 비율을 의미함

: 1종 오류 = False positives

: 1종 오류는 귀무가설이 실제로 참이지만, 이에 불구하고 귀무가설을 기각하는 오류 (실제 음성인 것을 양성으로 판정)

: Benjamini-Hochberg Procedure은 FDR을 줄이는 방법으로 단순하지만, 직관적이고 강력함

: Bonferroni correction보다 완만한 p-value 감소가 진행되어, 제거되는 True positive가 비율이 낮아짐





FDR 보정 과정 예제

0. Simple example

: FDR 검정의 예로 사용될 데이터는 아래와 같음

: 유전자(발현)는 약물에 영향받지 않는다는 가정

: 10개 유전자 검정 → 다중검정비교



1. Order to p-values from smallest to largest

: p-value의 값을 가장 유의한 순서로 나열함

: 10개 유전자에 대한 p-value 값이 산출됐고, 아래 그림처럼 나열됨

: p-value 0.01은 false positive ← 동일한 분포에서 추출된 데이터 비교이므로 차이가 유의할 수 않음




2. Rank the p-values

: 가장 유의한 수준으로 순위를 매김




3. The largest FDR adjusted p-value and the largest p-value are the same

: 순위의 마지막(10번째)인 p-value는 FDR 보정 후에도 동일한 값을 가짐

: 마지막 순위 p-value = 마지막 순위 adj p-value




4. The next largest adjusted p-value is the smaller of two options

: 바로 옆인 9번째 adjusted p-value는 두 가지 값 중 작은 것을 선택

a - 이전 adjusted p-value 값

b - 현재 p-value X (검정의 총 개수/해당 위치 순위)



: 9번째 위치에서 원래 p-value = 0.81

: 검정의 총 개수 = 10

: 해당 위치 순위 = 9

를 수식에 넣고 계산하면 0.90이 나온다

따라서, 9번째 위치에서 FDR 보정 후, adjusted p-value는 0.90이 된다



: 앞서와 같은 방식으로 첫번째 순위까지 반복하여 p-value 보정


p-value가 0.01으로 유의하다고 생각했던 첫번째 값은

FDR 보정 후 adjusted p-value가 0.1이 됐기 때문에,

더 이상 유의하지 않음


다중검정비교로 생길 수 있는 1종 오류(false positive)를 FDR 보정으로 회피






위 내용은 StatQuest 영상을 참조함






#Reference
1) https://www.youtube.com/watch?v=K8LQSvtjcEo
2) https://en.wikipedia.org/wiki/False_discovery_rate
3) https://www.statisticshowto.datasciencecentral.com/benjamini-hochberg-procedure/
4) https://www.jstor.org/stable/2346101?seq=1#page_scan_tab_contents
5) https://ko.wikipedia.org/wiki/1%EC%A2%85_%EC%98%A4%EB%A5%98%EC%99%80_2%EC%A2%85_%EC%98%A4%EB%A5%98




FDR (False Discovery Rate) End

BioinformaticsAndMe


'Statistics' 카테고리의 다른 글

1종, 2종 오류 (Type 1, 2 error)  (0) 2019.10.07
카이제곱검정 (Chi square test)  (0) 2019.10.01
심슨의 역설 (Simpson's Paradox)  (0) 2019.09.03
산포도 (Dispersion)  (0) 2019.09.02
비모수 검정 (Non-parametric test)  (0) 2019.05.31

Clinvar (Clinically relevant variant) Start

BioinformaticsAndMe






Clinvar

: Clinvar는 인간 유전자 변이와 질병에 대한 해석을 무료로 제공하는 공개 아카이브

: 국립 보건원(National Institutes of Health)에서 유지 관리

: 특정 변이의 임상적 중요성은 임상 시험 실험실, 연구 실험실, 전문가 패널들에 의해 평가됨

: 최근에는 유전자 검사를 받은 개개인의 phenotype 정보 업데이트





Clinvar는 크게 4가지 영역의 정보를 통합

1) Variation

: Variation은 Clinvar 데이터 모델에서 관련 Phenotype을 포함해 여러 정보를 연결짓는 KEY 역할

: 제출된 Variation은 dbSNP와 dbVar에 등록된 변이 위치와 비교됨

*등록된 변이라면, Reference ClinVar (RCV) record에 'rs number'가 추가됨

*새로운 변이라면, dbSNP와 dbVar에 제출되어진 후 고유한 Identifier가 역시 RCV에 추가됨


2) Condition

: Phenotype에 대한 자세한 설명은 MedGen에 근거하여 기술

: HPO(Human Phenotype Ontology) - 인간의 질병들의 표현형 특징에 대해 체계적으로 설정된 용어를 제공
: OMIM(Online Mendelian Inheritance in Man) - 인간 게놈과 유전성 질환, 형질의 카탈로그


3) Interpretation

: 변이에 대한 임상적 중요성을 해석

: 해석은 Submitter가 제출 마지막 시점에서 이해한 내용으로 유전 방식, 중증도 등의 여러 지표에 의해 평가

: 임상적 중요성에 대한 용어는 the American College of Medical Genetics and Genomics(ACMG;; 미국의학유전학회)의 가이드라인을 준수

: Submitter들 사이에서 의견이 엇갈리는 특정 변이는 'conflicts' 표시가 존재



4) Evidence

: 변이의 임상적 해석을 뒷받침하는 증거

: 잘 구조화된 양식 혹은 단순히 서술하는 방식으로 Evidence가 평가됨

: 가족력, 유전자검사, tumor/normal 조직 상태, 동물 모델 등의 정보 제공






#Clinvar 홈페이지

https://www.ncbi.nlm.nih.gov/clinvar/






#Reference

1) https://pdfs.semanticscholar.org/565c/cf9e9b306bc2d8263e35dc54641b129b2eee.pdf

2) https://product-docs.readthedocs.io/en/latest/api_library/system_api/ClinVar/

3) https://www.ncbi.nlm.nih.gov/pmc/articles/PMC5753237/

4) https://slideplayer.com/slide/12904816/

5) https://academic.oup.com/nar/article/42/D1/D980/1051029

6) https://www.acmg.net

7) https://ko.wikipedia.org/wiki/OMIM





Clinvar (Clinically relevant variant) End

BioinformaticsAndMe

'Public Database' 카테고리의 다른 글

GWAS Catalog  (0) 2019.10.23
OncoKB (Precision Oncology Knowledge Base)  (0) 2019.10.16
GWASdb (SNP annotation database)  (0) 2018.09.11
SNPnexux (SNP Annotation database)  (0) 2018.08.23
Enrichr (gene set enrichment analysis)  (0) 2018.08.03






#대웅제약 채용홈페이지

https://daewoong.recruiter.co.kr/app/jobnotice/view?systemKindCode=MRS1&jobnoticeSn=22466


박테리아 성장곡선 (Bacterial growth curve) Start

BioinformaticsAndMe





박테리아 성장곡선

: 박테리아 집락 증가의 시그모이드 곡선

: 세균 배양에서의 균수와 배양 시간의 관계를 나타냄

: 시그모이드형 생장은 처음에는 천천히 생장하다가, 뒤이어 급속히 생장한 후, 마지막 단계에는 서서히 저하하다가 결국 정지



1) Lag phase (유도기, 지연기)

- 처음 배양액에 접종 후 적응하는 시기

- 세균이 새로운 환경에 적응하느라 세포 수가 크게 증가하지 않는 시기

- 새로운 환경에 적응하기 위해 필요한 다양한 인자 합성

- 배양한지 오래된 배지 혹은 냉동 보관했던 세균들은 지연기가 길어짐

- 같은 조성의 배지로 옮기면 지연기가 짧거나 거의 없음


2) Exponential phase (대수 성장기, 대수기)

- 세균들이 최고속도로 성장, 분열하는 시기

- 세포의 화학적 생리적 특징이 균일

*대수 성장기 세균들로 진행되는 연구는 균일한 결과를 얻기 좋음

- 영양물질 농도에 따라 성장속도 증가


3) Stationary phase (정체기, 정지기)

- 박테리아 성장 정지

- 세포 분열과 세포 사멸 속도가 평형 이룸

- 발생원인: 영양물질 부족, 독성노폐물 축적, 집단 임계밀도


4) Death phase (사멸기)

- 세균들의 성장에 불리한 환경에 진입

- 생균수 감소

- 대수적으로 감소









#Reference

1) https://www.scienceall.com/%EC%83%9D%EC%9E%A5%EA%B3%A1%EC%84%A0growth-curve/

2) https://zetawiki.com/wiki/%EC%83%9D%EC%9E%A5%EA%B3%A1%EC%84%A0,_%EC%84%B1%EC%9E%A5%EA%B3%A1%EC%84%A0

3) http://download.systemsbiology.nl/~jasperk/koen/Practical/WetLab/Week4/Tuesday/GrowthCurve/

4) http://webbuild.knu.ac.kr/~app-mic/resources/lecture/dairy%20microbiology/chap3-microbial%20growth.pdf





박테리아 성장곡선 (Bacterial growth curve) End

BioinformaticsAndMe

경사하강법 (Gradient descent) Start

BioinformaticsAndMe






경사하강법 (Gradient descent)

함수 기울기(경사)를 낮은 쪽으로 계속 이동시켜서 극값에 이를 때까지 반복시키는 것

: 제시된 함수의 기울기로 최소값을 찾아내는 머신러닝 알고리즘 (↔ 기울기 최대값을 찾는 경사상습법이 존재)

비용 함수(cost function)를 최소화하기 위해 매개 변수를 반복적으로 조정하는 과정

: 학습을 통해 모델의 최적 파라미터를 찾는 것이 목표





경사하강법 과정

Step 1. 특정 파라미터 값으로 시작

: 가중치 w1 대한 시작 값(시작점)을 선택

: 여러 알고리즘에서는 w1을 0으로 설정하거나 임의의 값을 선택



Step 2. Cost function 계산

: 비용함수(cost function) - 모델을 구성하는 가중치 w의 함수

: 시작점에서 곡선의 기울기 계산



Step 3. 파라미터 값 업데이트

: 파라미터 - 학습을 통해 최적화해야 하는 변수

: Wnew =  W – learning rate * dW



Step 4. 반복 학습

: 앞서 과정이 n번의 iteration(절차 반복)으로 진행되고, 최소값을 향하여 수렴함







#Reference

1) https://ko.wikipedia.org/wiki/%EA%B2%BD%EC%82%AC_%ED%95%98%EA%B0%95%EB%B2%95

2) https://developers.google.com/machine-learning/crash-course

3) https://www.topcoder.com/blog/gradient-descent-in-machine-learning/

4) https://towardsdatascience.com/machine-learning-fundamentals-via-linear-regression-41a5d11f5220





경사하강법 (Gradient descent) End

BioinformaticsAndMe

'Machine Learning' 카테고리의 다른 글

경사하강법 종류  (0) 2019.09.26
학습률 (Learning rate)  (0) 2019.09.24
머신러닝 선형회귀 (ML, Linear regression)  (0) 2019.09.16
머신러닝 용어(Machine Learning Glossary)  (2) 2019.09.03
기계 학습(Machine learning)  (0) 2019.05.30

Python이 성장하는 7가지 이유 Start

BioinformaticsAndMe





최근 파이썬이 급속하게 성장해온 이유를

7가지로 정리해 보았다.

(주관적인 견해이므로 이견이 있을 수 있다)




1. Popular programming language

▶파이썬은 코딩을 처음 배우기 시작하는 사람들에게 공통적으로 추천되는 프로그래밍 언어

▶IEEE 스펙트럼(IEEE Spectrum)은 구글, GitHub, Stack Overflow, Reddit, 구인구직 사이트 등 다양한 소스에서 인기 프로그래밍 언어를 집계

▶2018년도 IEEE 스펙트럼에서 파이썬이 1등을 기록

ㄱ) 파이썬에서도 임베디드 수준의 프로그래밍 지원
ㄴ) 프로그램 R 사용자들이 다수가 파이썬으로 이동




2. Easy language to learn

▶여러 프로그래밍 언어 중에서 파이썬은 낮은 학습 난이도를 가지면서, 범용성을 갖추고 있음

▶파이썬의 문법은 간결하며, 이해하기 쉽도록 직관적인 구조를 가짐

▶'Hello, World'를 출력하는 스크립트를 작성할 때, 자바와 비교해보면 파이썬이 얼마나 사용하기 쉬운 언어인지 알 수 있음




3. Open source program

오픈 소스란 저작권자가 소스 코드를 공개하여 누구나 별다른 제한 없이 자유롭게 사용/복제/배포/수정할 수 있는 소프트웨어

언제, 어디서, 누구든지 무료로 파이썬 사용 가능

▶또한, 여러 온라인 웹에서 무료로 쉽게 파이썬을 배울 수 있음 (참고: 점프 투 파이썬, https://wikidocs.net/book/1)




4. Python in Education 

대학교 프로그래밍 교육은 C, Java 위주의 수업이었으나, 최근 여러 미국 대학들은 프로그래밍 개론 수업 언어를 Python으로 옮겨가는 추세

2019년, 서울대학교가 기초 프로그래밍 수업을 자바에서 파이썬으로 대체

▶파이썬이 배우기 쉽다는 사실은, 곧 전 연령층에 걸쳐 교육하기 쉬운 언어임을 의미




5. Huge Libraries

▶파이썬은 대부분의 라이브러리가 이미 다른 사용자들에 의해서 구현되어 있음

풍부한 라이브러리를 쉽게 설치해 사용할 수 있다는 점은 파이썬의 장점

▶수학, 빅 데이터, 통계학, 그래프, 머신러닝 등 다양한 라이브러리 존재




6. Machine Learning

▶간소함을 특징으로 하는 파이썬은 사용자 비즈니스 로직이 상당한 머신러닝 애플리케이션에 유용하게 작용 뛰어나다.

▶풍부한 머신러닝 라이브러리와 프레임워크 보유 (Scikit-learn, TensorFlow, CNTK, MLlib 등)

▶파이썬은 프로그래머 대신 세부적인 메모리 관리를 수행




7. Community

▶파이썬 공식 홈페이지에 소개된 커뮤니티 정보 (https://www.python.org/community/)

▶국내 활성화된 파이썬 커뮤니티 (https://www.facebook.com/groups/pythonkorea)

▶파이썬 코딩 도장 (https://dojang.io/course/view.php?id=7)









#Reference

1) https://spectrum.ieee.org/at-work/innovation/the-2018-top-programming-languages

2) https://www.zdnet.co.kr/view/?no=20161230153750&re=R_20180713105452

3) https://namu.wiki/w/Python

4) https://wikidocs.net/6

5) https://www.ivy-seed.com/?fbclid=IwAR2H1eYAWy_JyZnPyc5N12efvNocxg2B3WNYnlxtk-0xwQwGyyjtX6HAB9A

6) https://docs.python.org/ko/3/library/index.html

7) http://www.ciokorea.com/news/38148





Python이 성장하는 7가지 이유 End

BioinformaticsAndMe

'Python' 카테고리의 다른 글

Anaconda 설치  (0) 2019.10.08
Python JSON  (0) 2019.10.02
Python API  (0) 2019.09.30
Variable (Python 변수)  (0) 2019.09.25
Python 시작  (0) 2019.09.04

머신러닝 선형회귀 (ML, Linear regression) Start

BioinformaticsAndMe






선형 회귀 (Linear Regression)

: 가장 기본적이고 널리 사용되는 기계 학습 알고리즘 중 하나

선형 회귀 분석은 가장 적합한 직선(회귀선)을 사용하여 종속 변수(Y)하나 이상의 독립 변수(X) 간의 관계를 모델링

: 관계의 특성은 선형



Y = w1*X1 + w0

   = b1*X1 + b0


      # w1:   기울기(특성 1의 가중치)

X1:    입력값(특성)

w0:   y절편(편향값)   

Y:     출력값(라벨)



Multiple Linear Regression(다중선형회귀)

여러 특성을 사용하여 좀 더 정교한 모델을 제시






학습 및 손실

: 모델의 학습은 라벨이 있는 데이터로부터 올바른 가중치와 편향값을 결정하는 것

: 지도 학습에서 머신러닝 알고리즘은 다양한 예를 검토하고 손실을 최소화 하도록 모델링

손실은 잘못된 예측에 대한 벌점 (=모델의 예측이 얼마나 잘못되었는지를 나타내는 수)

: 모델의 예측이 완벽하면 손실은 0이고, 그렇지 않으면 손실은 그보다 커짐

: 모델 학습의 목표는 모든 예에서 평균적으로 작은 손실을 갖는 가중치와 편향의 집합을 찾는 것

(from. 구글머신러닝단기집중과정)








평균제곱오차 (Mean Square Error; MSE)

평균 제곱 오차(MSE)는 실제 데이터 포인트와 예측 결과 간의 제곱 차이의 평균

: 이 방법은 평균에서부터 거리가 멀어질수록 벌점을 부과

: MSE는 머신러닝에서 흔히 사용되지만, 모든 상황에서 최적의 손실 함수는 아님









#Reference

1) https://acadgild.com/blog/linear-regression

2) https://developers.google.com/machine-learning/crash-course

3) https://sebastianraschka.com/faq/docs/closed-form-vs-gd.html

4) http://jacob-yo.net/tag/udemy/

5) https://towardsdatascience.com/supervised-learning-basics-of-linear-regression-1cbab48d0eba




머신러닝 선형회귀 (ML, Linear regression) End

BioinformaticsAndMe

'Machine Learning' 카테고리의 다른 글

학습률 (Learning rate)  (0) 2019.09.24
경사하강법 (Gradient descent)  (0) 2019.09.18
머신러닝 용어(Machine Learning Glossary)  (2) 2019.09.03
기계 학습(Machine learning)  (0) 2019.05.30
강화 학습(Reinforcement Learning)  (0) 2018.09.15

if, else, else if, ifelse (R 조건문) Start

BioinformaticsAndMe






R의 조건문


1. if, else (조건 1개 지정)


if (condition 1){

  조건 1 참이면 실행되는 코드}

else{

  조건 1 거짓이면 실행되는 코드}

}




2. else if (조건 추가 지정)


if (condition 1){

  조건 1 참이면 실행되는 코드}

else if (condition 2){

  조건 1 거짓이고, 조건 2 참이면 실행되는 코드}

else{

  조건 1, 2가 모두 거짓이면 실행되는 코드

}




3. ifelse


ifelse(a, b, z)
a가 참이면 b를 출력하고, 거짓이면 z를 출력함

a <- c(11,12)
b <- ifelse(a%%10==1, "apple", "banana")
b

[1] "apple"  "banana"






#조건문 기호 의미

'요소' %in% '범주' --> '요소'가 '범주'에 있는가?

'May' %in% month.name

5 %in% 10:20


비교 조건에 사용되는 연산자

== : 같다

!= : 같지 않다

>= : 크거나 같다

> : 크다

<= : 작거나 같다

<: 작다


여러 가지 조건 지정하기

! : ~가 아니다 (부정)

& : AND (교집합)

| : OR (합집합)








if, else, else if, ifelse (R 조건문) End

BioinformaticsAndMe

'R' 카테고리의 다른 글

K-medoids clustering (R PAM)  (0) 2019.09.30
K-means clustering (R 군집분석)  (0) 2019.09.24
while, for (R 반복문)  (0) 2019.09.16
R, as.Date (날짜 변환)  (0) 2019.06.03
pathview (패스웨이 분석)  (2) 2019.05.22

while, for (R 반복문) Start

BioinformaticsAndMe






R의 반복문


1. while


i <- 0

while (i < 10) {

print (i)

i <- i + 1

}


[1] 0

[1] 1

[1] 2

[1] 3

[1] 4

[1] 5

[1] 6

[1] 7

[1] 8

[1] 9




2. for


for(m in month.name){

print(m)

}


[1] "January"

[1] "February"

[1] "March"

[1] "April"

[1] "May"

[1] "June"

[1] "July"

[1] "August"

[1] "September"

[1] "October"

[1] "November"

[1] "December"





#반복문과 조건문을 이용한 예제

letters벡터와 for, if문을 이용해서 c('a','e','i','o','u')인 경우에만 출력하는 코드


test <- c('a','e','i','o','u')

for(i in test){

  if(i %in% letters ){

    print(i)}

}


[1] "a"

[1] "e"

[1] "i"

[1] "o"

[1] "u"







while, for (R 반복문) End

BioinformaticsAndMe

'R' 카테고리의 다른 글

K-means clustering (R 군집분석)  (0) 2019.09.24
if, else, else if, ifelse (R 조건문)  (0) 2019.09.16
R, as.Date (날짜 변환)  (0) 2019.06.03
pathview (패스웨이 분석)  (2) 2019.05.22
R, 파일 입출력 (FILE I/O)  (0) 2018.09.11

+ Recent posts