기술 트렌드 25

[AI-14] 근접 영역 속에서 나를 찾도록 : k-Nearest Neighbors

k-NN 알고리즘(k-Nearest Neighbors)은 레이블이 지정되어 분류된 기존의 데이터 분포에 새로운 데이터를 배치시키면서 임의의 k값을 기준으로 근처에 위치한 데이터들이 갖는 레이블로 데이터를 분류하는 분류 방법이다. 일단은 레이블 개념이 등장하는 것부터 알 수 있듯이, 기본적으로 지도학습(Supervised Learning)에 속한다.그런데 분류하는 방법은 위에서 설명한 바와 같이 비지도학습인 군집분석(clustering)과 유사한 방식을 취한다. 즉 특별히 어떤 학습을 거치지 않고 마치 군집화하듯이 데이터 간의 거리를 계산해 그 분포로 데이터를 파악하는데, 이러한 접근이 '비지도학습적'으로 느껴질 수 있어 비지도학습으로 분류하거나 준지도학습(Semi-supervised)으로 따로 보려는 접..

[AI-13] 단순하지만 강력하게 평균으로 모으기 : K-means Clustering

통계에서 means는 의미가 아닌 '평균'을 의미하는 말로, K-means의 means 역시 이름을 보면 평균을 활용하는 군집분석(Clustering)일 것임을 알 수 있다. 그렇다면 K-는 무엇일까? 일반적으로 K-라는 말이 상징하는 수많은 단어들이 떠오르지만, 사실 여기에서 K는 큰 의미가 없이 단지 미지수 x나 정해지지 않은 숫자를 표현할 때 주로 사용되는 n과 같은 의미이다, 일상에서는 이러한 경우에 n이 더 많이 사용되지만, 수학이나 알고리즘에서는 k가 많이 사용되는 것이 그 이유라고 할 수 있다.즉 이 방법의 이름을 정리하면 K개의 평균으로 군집화하는 분석이라고 설명할 수 있다.그래서 K-means Clustering의 가장 첫 번째 절차는 몇 개(k)의 군집을 만들 것인지를 정하는 것이다. ..

[React] 무의미한 반복을 피하기 위해 기억하기 : useMemo

우리는 어떤 일을 할 때 과거의 기억을 활용한다. 카메라를 활용할 때에는 카메라에 대한 기억이 단서가 된다.처음 보는 카메라라도, 우리는 카메라에 대한 기억을 통해 하나하나 뜯어보는 대신 뻔한 것들을 건너뛰고 새로운 정보를 이해하고 처리한다. 시스템 역시도 그렇게 반복될 내용들을 기억할 수 있다면 더 빠른 처리가 가능해질 것이다.useMemo는 그러한 캐싱(caching)을 해주는 훅이다. 캐싱이란 과거에 처리했던 데이터를 임시적으로 저장하여 새로운 처리에 활용하도록 하는 것을 의미하는데, useMemo는 이러한 기억의 역할을 한다. 기본적으로 리액트는 어떤 컴포넌트를 호출할 때마다 그 내부에 선언된 기능을 다시 실행하는데, 컴포넌트가 복잡하다면 이는 많은 낭비를 초래한다. 데이터에 변화가 있다면 당연히..

[React] 시스템의 공영 방송: Context API

지난 글에서 Props의 역할이 컴포넌트의 속성을 정의하기 위한 것이며, 우리가 많이 사용하는 '하향 데이터 통신' 기능은 결과적으로 속성을 전달하는 과정에서 활용할 수는 있지만, 속성을 전달하는 과정이 하향식으로 이뤄지다보니 그런 식으로도 활용할 수 있게 되는 것이며, 속성의 본연적 기능은 자식 컴포넌트의 정체를 정의하는 것으로 보아야 정확하게 사용할 수 있을 것임을 살펴보았다. 그렇다면 실제로 컴포넌트 간의 통신을 할 때에는 무엇을 사용해야 할까? 여러가지 방법이 있지만, 이번에 다뤄볼 Context API가 그 중 하나가 될 수 있다.API(Application Programming Interface)는 그 용어 자체적으로도 연결의 의미를 지니고 있다. 즉 접면(Interface)으로써 둘 사이를 ..

[React] Props는 통신용이 아니다 : Props 진짜 이해하기

리액트를 다루면서 처음에 많이 헷갈렸고, 지금도 종종 막히는 부분이 속성(Props) 관련 내용인데, 그리 어렵지 않은 것 같으면서도 막상 뭔가 만들 때에는 의도한대로 작동하지 않아 당황하게 만드는 요인이기 때문이다. 이번 포스팅에서는 이 속성에 대해 완벽히 살펴봄으로써 올바르게 사용해보고자 한다.일단 속성(Props; Properties) 자체는 웹에서 쓰던 형태와 동일하다. 웹에서는 문서의 엘리먼트(Element)의 구체적인 속성을 정의할 때 속성을 활용하는데, 예를 들어LINK위의 예시에서 하이퍼링크 참조(href; hyper reference)가 a 엘리먼트의 속성에 해당한다. 속성은 문서의 마크업 태그 자체가 가지고 있는 성질이며, 해당 성질을 정의해줌으로써 엘리먼트가 그 성질을 갖도록 한다.리..

[AI-12] 최적의 분류 평면 찾기, 서포트 벡터 머신(SVM)

회귀 등의 방법을 통해 일반적으로 데이터를 분류하는 방법들은, 각 데이터의 분류를 확률적으로 계산하여 그 소속 여부를 결정한다. 즉, 확률에 대한 어떤 특정한 임계값을 넘는지 못넘는지에 따라 분류 여부를 판단하는 방식으로, 각 데이터가 특정 클래스에 속할 확률을 계산함으로써 분류가 실패할 확률(에러율)을 줄이는 쪽으로 학습을 진행한다. 이는 처음부터 분류 자체를 목적으로 한다기보다는, 데이터가 가까운 쪽의 클래스로 분류됨으로써 자연스럽게 분류가 완성되는 것이다.서포트 벡터 머신(Suppor Vector Machine)은 이러한 방법들과 다르게 분류 자체를 목적으로 두고 데이터 간의 거리를 계산하여 그 사이의 가장 여백(margin)이 큰 경계를 찾는 방식으로 데이터 간에 경계를 나누면서 학습을 진행한다...

[React] 값 참조하기: useRef

리액트에서 어떤 값을 선언하고 대응하여 사용할 때에 일반적으로 쓰이는 것은 지난 글에서 다룬 상태(State)값이다. 그런데 상태는 말 그대로 구성요소의 상태에 관계된 값이기 때문에, 상태가 변하면 구성요소 역시 변해야 한다. 즉, 상태의 변화는 구성요소를 다시 로드(렌더)시킨다. 이 동작이 원하는 동작이었다면 관계 없지만, 값이 변하더라도 결합된 구성요소가 바로 다시 렌더링되기를 원하지 않을 수 있다. 이 때 사용할 수 있는 것이 참조(useRef)이다.useRef의 사용법은 아래와 같다:import {useRef} from 'react';const ref = useRef(initialValue);위를 통해 상수 ref는 initialValue라는 초기값을 current로 갖는 객체가 되는데, 따라서 ..

[React] useEffect와 정리함수(clean up)

정리함수(clean up)란 말 그대로 기존의 값을 정리하여 다음 기능이 수행될 때 방해가 되지 않도록 하는 함수를 말한다. useEffect 훅의 정리함수에 대해 React에서 설명하는 문서의 문구를 가져오면 아래와 같다.Your setup function may also optionally return a cleanup function. When your component is added to the DOM, React will run your setup function. After every re-render with changed dependencies, React will first run the cleanup function (if you provided it) with the old valu..

[React] useEffect 이해하기

지난 글에서 살펴본 useState는 어플리케이션의 상태(State)값을 바꿔 구성요소를 업데이트 하는 훅(hook)*이었는데, useEffect는 반대로 상태에 따라 어떤 특정 동작을 하도록 명령하는 훅이다.import {useEffect} from 'react'; //호출useEffect(function, deps);useState와 마찬가지로 리액트의 내장된 기능이기 때문에 아래와 같이 상단에서 호출(import)만 해주면 쓸수 있으며, 기본적인 사용법은 위와 같이 수행할 기능과 의존성(dependencies)을 입력하면 되는데, 여기서 의존이란 이 useEffect가 수행되기 위한 조건이 되는 상태를 말한다고 보면 된다. 즉 두번째 인자에서 정의된 상태(state)의 변화에 의존하여 기능(func..

[React] State 이해하기 : useState

리액티브 프레임워크에서 사용하는 특이한 기능 중 하나가 State인데, 처음에 이 개념을 이해하지 못하면 상당히 혼란스러울 수 있다. 특히 웹 개발에서 리액트로 넘어올 경우 동기식 멀티 페이지로 제작되는 기존의 웹에서는 사용할 필요가 없는 개념이기 때문에 더욱 이해가 안 될 수 있는데, 따라서 이를 이해하려면 먼저 리액트의 특징 중 하나인 단일 페이지 어플리케이션에 대해 알아둘 필요가 있다.SPA (Single Page Application)단일 페이지 어플리케이션이란 말 그대로 하나의 페이지에서 움직이는 어플리케이션 개념을 의미하는데, 기존의 어플리케이션이 여러 상황에 맞는 페이지로 구성되고 서버 호출을 통해 다른 페이지 주소로 이동하던(hyperlink) 것과는 다른 방식으로 동작한다. SPA는 처음..

728x90
반응형