Big Data 어제 오늘 이야기는 아니지만

The current issue of Nature has a special issue on big data which is full of stuff that might be of interest:
http://www.nature.com/nature/journal/v455/n7209/

In particular: Big data: The future of biocuration:
"To thrive, the field that links biologists and their data urgently needs structure, recognition and support."
http://www.nature.com/nature/journal/v4 ··· 47a.html

한번 읽어봐야지 ^^;;

Posted by hongiiv

2008/09/04 19:14 2008/09/04 19:14
, ,
Response
No Trackback , 4 Comments
RSS :
http://socmaster.homelinux.org/~hongiiv/rss/response/456

지오코딩을 활용한 온라인 데이트 사이트 데이터 만들기

집단지성프로그래밍을 구입한지는 꽤 된거 같은데, 계속 가방속에서 자고 있다. 가장 관심을 끄는 부분부터 틈나면 읽어 나가고는 있는데, 요즘 9장을 좀 읽고 있다가 이전에 만들어 놓은 (리버스)지오코딩 서비스도 사용할 겸 사용되는 데이터셋도 국내용(??)으로 바꿀겸 간단히 코드와 데이터셋을 변경했다.

9장 고급 분류 기법: 커널 기법과 SVM을 보면 중매 데이터 세트가 나온다. 이 중매 데이터(matchmaker.csv)는 나이, 흡연여부, 자녀희망, 관심목록, 거주지의 형식으로 되어있는데, 마지막의 거주지는 4절 '분류 데이터의 특성'의 '야후! 지도를 사용한 거리 계산' 부분에서 설명이 나온다.

주소를 가지고 위/경도의 좌표 정보를 야후의 지오코딩 서비스를 통해 알아내고 남/녀 커플의 거주지간 거리를 반환하여 분류시 하나의 특성으로 사용하도록 되어있다. - 남녀간의 매칭에서 서로간의 거주지역은 무시 못할 변수임에는 분명하다. 모든 조건이 동일할 경우 서울:서울 커플을 맺어주는 것이 서울:부산 커플을 맺어주는 것보다는 낫지 않은가? 물론 나도 멀리 원거리 연예를 하고 있지만,,,,^^

여기서 세가지를 바꾸어 보았다. 우선 첫 번째로는 영문주소로 되어있는 부분을 국내 주소로 바꾸고, 두 번째는 야후!의 지오코딩 서비스 대신에 국내 순수 기술로 개발된 ^^ Geocoding and Reverse Geocoding Open API(for Korea)를 가지고 주소를 위/경도 좌표로 변환할 것이다. 마지막으로는 두 주소지간의 거리를 마일에서 킬로미터 단위로 변경(마일로 해주면 감이 안온다 ^^)하여 사용하도록 할 것이다.

우선 advancedclassify.py에서 주소지를 입력하면 해당 위/경도 좌표를 반환하는 getlocation을 대신해서 사용할 getlocation_kor을 다음과 같이 코딩한다.

국내 지오코딩 서비스(http://www.hongiiv.com/service/geocoding_search.php?address=주소) 형태의 Open API로 제공되고 있으며(물론 야후! 코리아에서도 국내 주소용 지오코딩 서비스를 제공하기는 한다.), 여기에 대한 응답은 다음과 같은 XML 형태로 반환한다.

<rsp stat="ok">
  <method>geocoding_search</method>
  <format>rest</format>
  <result>
    <address>서울 은평구 녹번동 질병관리본부</address>
    <zipcode>122-701</zipcode>  
    <naver>
      <naver_x>306151</naver_x>
      <naver_y>556443</naver_y>
    </naver>
    <google>
      <google_lat>37.6027433174</google_lat>
      <google_lng>126.937116733</google_lng>
    </google>
  </result>
</rsp>

우리가 사용하고자 하는 좌표는 네이버에서 사용하는 좌표가 아닌 구글에서 사용하는 좌표계이므로, google_lat와 google_lng 엘리먼트에 있는 값을 가져온다.

def getlocation_ko(address):
  s=unicode(address, "utf8").encode("cp949")
  if address in loc_cache: return loc_cache[address]
  data=urlopen('http://www.hongiiv.com/service/'+
                'geocoding_search.php?address=%s' %
                 (quote(s))).read()
  doc=parseString(data)
  lat=doc.getElementsByTagName('google_lat')[0].firstChild.nodeValue
  long=doc.getElementsByTagName('google_lng')[0].firstChild.nodeValue
  loc_cache[address]=(float(lat),float(long))
  return loc_cache[address]

킬로미터 형태로 두 좌표간의 거리를 반환하는 kmdistance는 milesdistance에 1.6093을 곱해서 마일 대신 킬로미터로 반환하도록 하였다.

def kmdistance(a1,a2):
  lat1,long1=getlocation_ko(a1)
  lat2,long2=getlocation_ko(a2)
  latdif=69.1*(lat2-lat1)
  longdif=53.0*(long2-long1)
  miles= (latdif**2+longdif**2)**.5
  return miles*1.6093

Picture 3
수행한 결과

국내 주소로 변환한 matchmaker_kor.csv getlocation_ko와 kilodistance가 포함된 advancedclassify.py 코드는 여기서 다운로드 한다.

Posted by hongiiv

2008/08/31 03:07 2008/08/31 03:07
, , , ,
Response
No Trackback , 2 Comments
RSS :
http://socmaster.homelinux.org/~hongiiv/rss/response/454

Hadoop Community 2차 모임

Google Groups의 hadoop community에 2차 모임 공지가 있었습니다. 일자는 바로 오늘이구요(Hadoop에 관심 있으신 분들은 가입해 보세요 ^^).

오늘 모임은 아무래도 MapReduce를 이용한 ML 알고리즘의 구현에 대한 내용이 솔깃합니다. 한박사님께서도 세미나와 1차 모임때도 ML에 대한 언급을 하셨는데, 오늘은 아예 ML에 대해서만 ^^ Apache에도 Apache Mahout이 있습니다만, 암튼 기대가 되는군요.

요즘 집단 지성 프로그래밍에서도 알 수 있듯이(IT 분야나 생물정보학 등 많은 분야에서 ML이 이미 오래전부터 사용되기는 했지만) 좀 더 사람들에게 친숙해져 가고 있는 느낌입니다. ^^

Hadoop모임
늦었지만 1차 모임때 사진 ^^

두번째 Hadoop Community  모임을 개최합니다.

more..


Posted by hongiiv

2008/08/27 13:30 2008/08/27 13:30
, ,
Response
No Trackback , No Comment
RSS :
http://socmaster.homelinux.org/~hongiiv/rss/response/453

« Previous : 1 : 2 : 3 : 4 : 5 : ... 135 : Next »


0


Site Stats

Total hits:
190195
Today:
317
Yesterday:
527