라벨이 R인 게시물 표시

PCA(Principal Component Analysis, 주성분) 분석

이미지
 PCA 분석에 대해 알아보다가 너무 상세하게 잘 설명한 블로그를 보아 남긴다. ( Excelsior-JH 님의 블로그) 그리고 일부 요약. PCA(Principal Component Analysis) 주성분 분석은 가장 대표적인 차원 축소 알고리즘이다. 고차원의 데이터를 저차원의 데이터로 환원시키는 기법을 말한다. PCA는 먼저 데이터에 가장 가까운 초평면(hyperplane)을 구한 다음, 데이터를 이 초평면에 투영(projection)시킨다. 그 중에서도 내가 얻었던 중요한 정보는  (1) 분산 보존 저차원의 초평면에 데이터를 투영하기 전에 먼저 적절한 초평면을 선택해야 한다. PCA는 데이터의 분산이 최대가 되는 축을 찾는다. 즉, 원본 데이터셋과 투영된 데이터셋 간의 평균제곱거리를 최소화 하는 축을 찾는다. 아래의 그림에서 왼쪽 2차원 데이터셋을 오른쪽 그림처럼 투영했을 때 ​축으로 투영한 데이터가 분산이 최대로 보존되는 것을 확인할 수 있다. JH 블로그 中 대기화학 분야에서는 발생원 추정 을 위해 PCA분석이 사용되고, 중금속 성분의 단위가 모두 같기 때문에 공분산행렬을 이용해 PCA 분석을 실시할 수 있다. 주성분 고유치(eigen value)를 X개로 분류하여 전체정보에 대해 몇 %를 보여주고 있는지도 도출되며, 나아가 이를 통해 발생원의 강도까지도 해석이 가능하다.  예를 들면, TC, NO 3 - , SO 4 2- , NH 4 +  가 전체 정보의 52%를 차지하였고, 이를 Reference의     Source Profile을 참고하여 오염원을  도로 오염원(Road-Dust)으로 추정하는 것. EPA에서 PM2.5에 대한 오염원 분류표가 있다.  (일일히 첨자를 해줘야되는 관계로.. 예시는 여기까지..) 

GDAS Data

  GDAS(Global Data Assimilation System)란, National Center for Environmental Prediction (NCEP) Global Forecast System (GFS) 모델에서 관측 값으로 일기 예보를 위해 Grid 형 모델 공간에 관측치가 나타남. (NOAA Website 中) Grid-3D 모델 공간안에 아래와 같은 유형의 Data들을 다운받을수 있다. (지상 표면 관측, 바람 프로파일러 데이터, 항공기 보고서, 부이 관측, 레이더 관측, 위성 관측) NOAA Archive 에서 다운로드 가능. GADS링크 : ftp://arlftp.arlhq.noaa.gov/pub/archives/gdas1 1시간 자료는 1°X1°, 0.5°X0.5°, 0.25°X0.25° Grid가 있다.  위 사이트서 GDAS 파일을 받은 후, Trajstat 프로그램을 통해 위경도 정보를 input하여 사용자의 기호대로 변환이 가능하다.  Trajstat 은 구글링을 통해 받으면 된다.  변환한 Traj 파일로 R 프로그램을 통해 여러가지 분석 및 도식화가 가능.  

R 프로그래밍 언어

 석사 들어온날부터 현재까지 R을 주로 썼고, Machine Learning 분석을 할때 Python도 종종 썼다. Machine Learning으로 PM2.5의 기여율을 산정한 적이 있었다. 이미 존재하는 Data(PM2.5, PM10, BC, O3, CO, CO2, Wind Speed, Wind Direction...) 로 어떠한 변수가 PM2.5 생성에 기여를 가장 많이하는지를 예측하는 학습을 실시했었다.   결과를 보기전까지는 '오늘의 PM2.5 농도'는 '몇 시간전의 PM2.5/PM10 농도'의 영향을 가장 많이 받을 것이라고 예상했지만, 결과는 달랐다. 몇 시간전의 PM2.5/PM10 보다는 오늘의 PM2.5를 생성하게 하는 전구물질(Precursor)의 영향이 더 컸다.  R은 통계학자들이 만든 프로그램으로, 코드나 예제 유형이 잘 배포되있으며 모든 통계 기법이 이미 어딘가에 패키지 형태로 구현되어 있다고 봐도 된다. 그리고 가장 중요한건 공짜이다.  학교에서 제공되는 프로그램들도 많은데, 왜 최초에 R을 선택했는지는 모르겠지만. 이미 R은 연구실에서 뿌리깊게 박혀있었다. 내가 주로 쓰는 Library는 대기분석에 필요한 Openair 와 역궤적 분석에 쓰는 Cluster 를 주로 쓴다. 각자 전문 분야마다 쓰는 Library나 Tool이 다르기 때문에 내가 쓰는 Openair 등은 누군가에겐 생소할 수 있다. 놀라운 사실은 2년반. 짧다면 짧고 길다면 긴 시간인데, 2년 반동안 매일같이 쓰던 R을 영어공부에 매진한 3개월간 안쓰니 손이 금새 굳었던 경험을 하였다. 언어(Language, Programming Language)는 꾸준히 지속적으로 관리를 해줘야된다.