달력

5

« 2024/5 »

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
2008. 2. 21. 15:32

클라우드 컴퓨팅 개념2008. 2. 21. 15:32

클라우드 컴퓨팅’이란 웹 기반 애플리케이션을 활용해 대용량 데이터베이스를 인터넷 가상 데이터센터에서 분산 처리하고 이 데이터를 데스크톱PC·휴대폰·노트북PC·PDA 등 다양한 단말기에서 불러오거나 가공할 수 있는 환경을 가리킨다

IBM '클라우드 컴퓨팅' 육성

이기사 번역의뢰하기

2008 신규 대체에너지와 탄소배출권 산업 세미나


 IBM이 차세대 컴퓨팅 모델 ‘클라우드 컴퓨팅(Cloud Computing)’을 차기 주력 사업으로 키우겠다고 발표했다.

‘클라우드 컴퓨팅’이란 웹 기반 애플리케이션을 활용해 대용량 데이터베이스를 인터넷 가상 데이터센터에서 분산 처리하고 이 데이터를 데스크톱PC·휴대폰·노트북PC·PDA 등 다양한 단말기에서 불러오거나 가공할 수 있는 환경을 가리킨다. 검색 업체 구글이 전 세계에 흩어진 방대한 지식을 DB로 집대성하는데 활용한 ‘클라우드 컴퓨팅’은 기업들이 해마다 늘어나는 데이터를 효율적으로 관리할 수 있게 돕는 대안으로 평가받고 있다.

뉴욕타임스는 IBM이 최근 ‘블루 클라우드(Blue Cloud)’라는 신규 사업 전략을 공개하고 내년부터 클라우드 컴퓨팅 기술을 채택한 메인프레임 등 서버 제품을 차례로 출시할 계획이라고 보도했다. IBM은 클라우드 기술 개발을 위해 200명의 연구원을 배치했으며 상용화 시점인 3년 이내 대규모 투자를 단행할 방침이다.

윌리엄 제이틀러 IBM 기술개발그룹 부사장은 “몇몇 대기업과 정부 공공기관이 우리의 클라우드 컴퓨팅 시범 프로젝트에 참여하고 있다”며 “은행·증권사 등 대형 금융기관이 첫 고객이 될 것”이라고 밝혔다.

IBM이 클라우드 컴퓨팅을 주력사업으로 육성하는 이유는 IBM의 하드웨어와 소프트웨어, 컨설팅서비스 매출을 늘릴 수 있기 때문.

기업이 클라우드 컴퓨팅을 구성하려면 서버를 구매해 데이터센터를 지어야 한다. 클라우드 컴퓨팅의 기본 소프트웨어는 오픈소스이다. 라이선스도 없고 필요에 따라 자유롭게 변형할 수 있기 때문이다. IBM은 2000년부터 리눅스를 앞세워 오픈소스 사업을 강화해 왔다.

컨설팅 업체 IDC의 프랭크 젠스 애널리스트는 “클라우드(컴퓨팅)는 그리드-유틸리티 모델에서 진화된 차세대 모델의 일종”이라며 “차이점은 그리드-유틸리티는 전문가들이 주로 사용했지만 클라우드 컴퓨팅에서는 누구나 인터넷으로 프로그램을 만들어 쓸 수 있다는 것”이라고 분석했다.

조윤아기자@전자신문, forange@etnews.co.kr

:
Posted by Kwang-sung Jun
2008. 2. 20. 14:18

double centering 개념2008. 2. 20. 14:18

double centering
–noun Surveying.
a method of extending a survey line by taking the average of two foresights, one with the telescope direct and one with it inverted, made each time by transiting the telescope after a backsight.
Dictionary.com Unabridged (v 1.1)
Based on the Random House Unabridged Dictionary, © Random House, Inc. 2006.
:
Posted by Kwang-sung Jun
2008. 2. 20. 13:55

전시를 위한 개조 netflix prize/기타2008. 2. 20. 13:55

알고리즘 진행에 대한 시각화.(예를 들면 유사도 선정 또는... Ax=b solver)

그리고.

임시의 recommender.php가 존재하는데 이는 관리 목적의 페이지로서, 서버의 관리자만이 접속할 수 있다.
(프로토타입일 뿐이므로 다른 관리 페이지를 따와서, 로그인 세션등만 위조해낸다.)

:
Posted by Kwang-sung Jun
:
Posted by Kwang-sung Jun
2008. 2. 18. 16:37

이상한 결과 netflix prize/기타2008. 2. 18. 16:37

k = 01, RMSE = 1.195444
k = 05, RMSE = 1.207073
k = 10, RMSE = 1.242245
k = 15, RMSE = 1.266350
k = 20, RMSE = 1.286274
k = 25, RMSE = 1.301162

이웃이 많을 수록 결과는 나쁘다....
왜그럴까.
:
Posted by Kwang-sung Jun
2008. 2. 18. 10:53

협력적 여과의 쉬운 설명. netflix prize/기타2008. 2. 18. 10:53

쉽게 비유를 들어 설명했습니다.
http://foaf.tistory.com/5


아마존의 추천 시스템.
http://foaf.tistory.com/4

선구적인 연구.. (연구내용)
http://foaf.tistory.com/6
:
Posted by Kwang-sung Jun

분산 환경에서의 협력적 여과를 위한 멀티 에이전트 프레임워크

Ae-Ttie Ji, Cheol Yeon, Heung-Nam Kim, and Geun-Sik Jo, "분산 환경에서의 협력적 여과를 위한 멀티 에이전트 프레임워크", 한국지능정보시스템학회, Journal of Intelligent Information Systems, Vol. 13, pp. 119-140, Sep. 2007

+ title : 분산 환경에서의 협력적 여과를 위한 멀티 에이전트 프레임워크 (A Multi-Agent Framework for Distributed Collaborative Filtering)
+ author : 지애띠, 연철, 김흥남, 조근식 (Ae-Ttie Ji, Cheol Yeon, Heung-Nam Kim, and Geun-Sik Jo)
+ journal : 한국지능정보시스템학회 논문지 (domestic)

abstract.
추천 시스템은 정보의 홍수 속에서 사용자로 하여금 자신에게 더욱 가치 있고 흥미로운 정보를 선별할 수 있도록 돕는 자동화된 정보 여과 시스템이다. 최근 분산 컴퓨팅 환경에 대한 연구가 활발히 진행되면서, 지금까지의 중앙 서버에서 모든 정보를 관리하는 중앙 집중 방식의 추천 시스템에서 P2P 환경의 접근 방식으로 선회하고 있다. 협력적 여과는 상업적인 추천 시스템에서 가장 많이 사용하는 정보 여과 기법이지만, 그 성공에도 불구하고 확장성(scalability)과 데이터의 희박성(sparsity), 악의적인 사용자의 공격(shilling attack)에 대한 방어 등에 관련된 여러 제약을 갖는다. 중앙 집중 방식에서 분산된 방식으로의 변화는 추천의 신뢰성과 개인 정보의 남용 가능성에 관련한 문제점을 일부 해결할 수 있으나, 조작된 사용자 프로파일을 사용하여 추천을 조작하려는 의도를 갖는 악의적인 사용자의 공격에는 중앙 집중 방식과 마찬가지로 취약할 수 있다.
본 논문에서는 개인 정보의 오남용과 악의적인 사용자의 공격에 관련된 문제점을 해결하고, 분산된 환경에서 효과적인 협력적 여과를 수행하여 추천의 성능과 정확성을 높이기 위한 멀티 에이전트 기반의 추천 프레임워크를 제안한다. 추천의 신뢰성을 높이기 위해 사용자 간의 신뢰 정보를 사용하며, 각 사용자의 개인 에이전트와 이동 에이전트 간의 정보교환을 통해 효과적으로 신뢰 정보를 전파하고 분산된 유사도 계산의 효율성을 높였다.
:
Posted by Kwang-sung Jun
2008. 2. 17. 22:50

bsearch() 삽질예방/표준 API2008. 2. 17. 22:50

qsort에 이어 매우 유용한 서치 api, 물론 stdlib.h만 필요하다.

원형
       #include <stdlib.h>

       void *bsearch(const void *key, const void *base, size_t nel,
              size_t width, int (*compar)(const void *, const void *));

qsort와 거의같지만, 찾고자 하는 key변수가 추가 되었다.  못찾으면 NULL을 리턴한다.(매우 직관적이지 아니한가.)

코드
int IntCmpAsc(const void* a, const void* b);

int main(void)
{
    int a[10];
    int key;    // to find

    int* p;

    for (int i = 0; i < 10; i++)
        printf("%10p ", &a[i]);
    putchar('\n');
    for (int i = 0; i < 10; i++)
        printf("%10d ", a[i] = i);
    putchar('\n');

    key = 9;
    p = (int*)bsearch(&key, a, 10, sizeof(int), IntCmpAsc);

    if (p == NULL)
        printf("couldn't find.\n");
    else
        printf("found = %d, %p\n", *p, p);

    printf("\n");
    return 0;
}

int IntCmpAsc(const void* a, const void* b)
{
    return *(int*)a - *(int*)b;
}


결과
0xbf8cff6c 0xbf8cff70 0xbf8cff74 0xbf8cff78 0xbf8cff7c 0xbf8cff80 0xbf8cff84 0xbf8cff88 0xbf8cff8c 0xbf8cff90
         0          1          2          3          4          5          6          7          8          9
found = 9, 0xbf8cff90



복잡한 숫자들은 배열의 주소와 포인터값이다.

:
Posted by Kwang-sung Jun
2008. 2. 17. 22:46

qsort() 삽질예방/표준 API2008. 2. 17. 22:46

qsort()는 stdlib.h에 속해 있으므로 매우 접근성도 좋고 성능도(?) 어느정도 입증되었으리라는 추측이다.

원형은
       #include <stdlib.h>

       void qsort(void *base, size_t nel, size_t width,
              int (*compar)(const void *, const void *));

base는 대상 배열, nel은 num of element, width는 각 항목의 크기(바이트), 마지막은 비교 함수이다.

다음은 사용예이다.

int IntCmp(const void* a, const void* b)
{
    return *(int*)a - *(int*)b;
}

int main(void)
{
    int abc[15];
    srand(time(NULL));

    for (int i = 0; i < 15; i++) {
        printf("%10d", abc[i] = rand() % 100);
    }

    qsort(abc, 15, sizeof(int), IntCmp);

    printf("\n\n");
    for (int i = 0; i < 15; i++) {
        printf("%10d", abc[i]);
    }
    putchar('\n');
    return 0;
}


결과는

deltakam@deltakam-laptop:~/netflix_prize/tmp/qsort$ ./a.out
        34         1        89         9        80        75        84        23        46        28         4        69        30        92        41

         1         4         9        23        28        30        34        41        46        69        75        80        84        89        92



다음은 float를 비교할 경우에 대비하여 작성한 것이며 테스트를 통과한 것이다.
int FloatCmp(const void* a, const void* b)
{
   float det = *(float*)a < *(float*)b;

   if (det < 0.0)
       return -1;
   else if (det > 0.0)
       return 1;
   else
       return 0;
}

:
Posted by Kwang-sung Jun
2008. 2. 17. 22:32

day 27~31 netflix prize/일지2008. 2. 17. 22:32

netflix prize research day 27~31

이번 한주동안 한일은 다음과같다. (매우 많은데 이렇게 보니 또 별거 없어보인다.)

  • NonNegativeQuadraticOpt알고리즘 최종적으로 정리(Robust!!)
  • =>유효한건 stepSize가 nan이거나 0일때 강제로 0.001을 넣어준 것이었다.
  • => BellKor가 제안한 구현조차 먹히지 않았기에 노가다를 통해 직접 깨닳았다.
  • probe_rmse작성 통해 값을 내 보니 약 1.2정도 된다.
  • UserRating구조체는 bitfield를 사용하여 1바이트 압축. MovieRating역시 1바이트. (날짜 데이터를 제외시켰다.)

  • moviedata_set을 저장할때 userScaled를 키값으로 정렬되도록 하였다.

TODO

global effect구현
볼츠만 머신 구현
SVD로 구현

문제해결법에 대한 IDEA

*. 영화제목으로부터 연관관계를 끌어낼 수 있을까(시리즈물, 어두운 분위기, 공포 등)

 - WWE
 - soldier
 - Dark
 - dragon ball
 - national geographic
 - 영화제목에 위의 단어가 들어있다면. 이용자가 시리즈물을 보고 평가한 결고를 반영할 수 있다.
 - (user base + item base)
 - 자주 검색되는 단어를 이용해도 된다.
 
*. 시간적으로 '최근' 취향이 비슷할 수록 가중치가 높아진다.
 - user간에 얼마나 '많은' 영화의 평점이 얼마나 '많이'같은지, 그 각각의 영화가 얼마나 시기적으로 '가까운'지에
대하여 유사도를 계산한다..

=> 뭐 이딴것들은 다 논문에 나와있더라.. user-based approach와 item-based approach는 이미 다 나와있고... 상대적으로 item-based approach가 더 좋은 속도와 결과를 내지만,
나중에 데이터 짬뽕시키는게 적중률을 향상시키기에 시도는 했다 하더라.
:
Posted by Kwang-sung Jun