logo

[머신러닝] 머신러닝의 종류

 

지도학습(Supervised Learning)

지도학습은 머신러닝의 가장 기본적이면서도 널리 사용되는 방법 중 하나입니다. 지도학습의 핵심은 알고리즘이 입력 데이터와 그에 상응하는 정답(라벨)을 함께 제공받아, 데이터 패턴을 이해하고 예측할 수 있게 학습하는 것입니다. 즉, 데이터와 그에 대한 올바른 출력(라벨)을 통해 미래의 데이터에 대한 예측을 생성하는 함수를 학습합니다.

 

정의와 동작 방식

지도학습에서 학습 데이터 세트는 입력 특성(Feature)과 그에 대응하는 출력 라벨(Label)로 구성됩니다. 학습 과정에서, 알고리즘은 주어진 입력에서 올바른 출력을 예측하기 위해 내부적으로 데이터 사이의 관계를 모델링합니다. 이 과정에서 오차(Error)를 최소화하는 매개변수(Parameters)를 찾아내는 것이 목표입니다. 일단 학습이 완료되면, 새로운 데이터가 주어졌을 때 이를 기반으로 정확한 예측을 할 수 있습니다.

 

주요 알고리즘

  • 선형 회귀(Linear Regression): 연속적인 값을 예측하는데 쓰입니다. 예를 들어, 주택의 크기와 가격 사이의 선형 관계를 모델링할 수 있습니다.
from sklearn.linear_model import LinearRegression
model = LinearRegression()
model.fit(X_train, y_train)   # X_train은 특성, y_train은 라벨입니다.
predictions = model.predict(X_test)
  • 로지스틱 회귀(Logistic Regression): 분류 문제에 사용됩니다. 확률을 계산하여 특정 클래스에 속할 확률을 예측합니다.
from sklearn.linear_model import LogisticRegression
model = LogisticRegression()
model.fit(X_train, y_train)
predictions = model.predict(X_test)
  • 의사 결정 트리(Decision Trees): 데이터를 분류하거나 값을 예측하기 위해 결정 트리를 사용합니다. 복잡한 데이터 구조에서도 효과적입니다.
from sklearn.tree import DecisionTreeClassifier
tree = DecisionTreeClassifier()
tree.fit(X_train, y_train)
predictions = tree.predict(X_test)
  • 서포트 벡터 머신(SVM): 분류 또는 회귀 문제에 사용되며, 데이터를 분리하는 최적의 경계를 찾습니다.
from sklearn.svm import SVC
svm = SVC()
svm.fit(X_train, y_train)
predictions = svm.predict(X_test)
 

응용 예시

  • 이메일 스팸 필터링: 로지스틱 회귀 또는 의사 결정 트리 같은 지도학습 알고리즘을 사용하여 이메일의 텍스트를 분석하고, 이메일이 스팸인지 아닌지를 분류할 수 있습니다.
  • 집 값 예측: 선형 회귀 알고리즘을 사용하여 집의 위치, 면적, 방의 개수 등의 특성을 기반으로 가격을 예측할 수 있습니다. 이를 통해 부동산 시장에서 주택 가격을 예측하는 데 활용될 수 있습니다.

지도학습은 풍부한 응용 분야를 가지고 있으며, 실생활 문제 해결을 위한 머신러닝 애플리케이션 개발에서 광범위하게 사용됩니다. 이러한 알고리즘들은 특정 작업을 수행하기 위해 대량의 라벨링된 데이터가 필요하며, 성능은 주로 사용된 데이터의 양과 품질에 크게 의존합니다.


 

정의와 동작 방식

비지도학습(Unsupervised Learning)은 학습 데이터에 명시적인 정답(라벨)이 없는 상태에서 데이터의 숨겨진 구조, 패턴, 상관관계를 모델이 자동으로 발견하게 하는 학습 방법입니다. 이 학습 방식은 기계가 스스로 데이터를 분석하고, 데이터 내의 패턴을 학습하여 새로운 입력 데이터에 대해 예측 또는 결론을 도출합니다. 데이터의 내재된 특성과 분포를 학습하기 때문에, 데이터의 통찰력을 얻거나 데이터를 새롭고 유용한 방식으로 재구성하는 데 유용합니다.

 

주요 알고리즘

  1. 군집화(Clustering)

    군집화는 비슷한 특성을 가진 데이터 포인트들을 그룹(군집)으로 모으는 과정입니다. 가장 널리 알려진 군집화 알고리즘은 K-평균(K-means)입니다.

    K-평균(K-means) 알고리즘은 주어진 데이터를 K개의 군집으로 나누는 방법입니다. 각 군집은 군집의 중심(centroid)에 가장 가까운 데이터 포인트들로 구성됩니다. 알고리즘의 주요 단계는 다음과 같습니다:

    • 무작위로 K개의 군집 중심을 선정합니다.
    • 각 데이터 포인트를 가장 가까운 군집 중심에 할당합니다.
    • 군집의 데이터 포인트들을 기반으로 새로운 군집 중심을 계산합니다.
    • 군집의 변화가 없을 때까지 위의 과정을 반복합니다.
    from sklearn.cluster import KMeans
    import numpy as np
    
    # 예시 데이터
    X = np.array([[1, 2], [1, 4], [1, 0],[10, 2], [10, 4], [10, 0]])
    
    # K-means 알고리즘 적용
    kmeans = KMeans(n_clusters=2, random_state=0).fit(X)
    
    print(kmeans.labels_)
    print(kmeans.cluster_centers_)
    
  2. 차원 축소(Dimensionality Reduction)

    고차원 데이터의 경우, 차원의 저주로 알려진 여러 가지 문제들에 직면할 수 있습니다. 차원 축소는 고차원 데이터를 저차원으로 표현함으로써, 이러한 문제를 완화하는 동시에 데이터의 가장 중요한 특징을 보존하고자 합니다. 가장 널리 사용되는 차원 축소 기법은 PCA(주성분 분석)입니다.

    PCA(주성분 분석) 기법은 데이터의 분산이 최대가 되는 방향으로 좌표 축을 재설정하여, 데이터를 이 새로운 축에 투영함으로써 차원을 축소합니다. 이 때, 가장 높은 분산을 가진 축(주성분)부터 순서대로 차원이 선택됩니다.

    from sklearn.decomposition import PCA
    import numpy as np
    
    # 예시 데이터
    X = np.array([[-1, -1], [-2, -1], [-3, -2], [1, 1], [2, 1], [3, 2]])
    
    pca = PCA(n_components=2)
    pca.fit(X)
    
    print(pca.explained_variance_ratio_)
    print(pca.singular_values_)
    
 

응용 예시

  1. 고객 세분화

    고객 데이터를 분석하여 비슷한 소비 패턴, 선호도, 구매력 등의 특성을 공유하는 고객 그룹을 생성할 수 있습니다. 이는 마케팅 전략을 수립하고, 개인화된 서비스를 제공하는 데 유용하게 활용됩니다.

  2. 추천 시스템

    사용자의 이전 구매내역, 검색 이력, 평가 데이터 등을 분석하여 이와 유사한 상품이나 서비스를 추천하는 시스템입니다. 사용자의 숨겨진 취향과 선호를 알아내고 비슷한 아이템을 추천함으로써, 사용자 경험을 개선하고 판매 증대에 기여할 수 있습니다.


 

강화학습(Reinforcement Learning)

강화학습은 매우 독특하고 강력한 머신러닝의 한 분야입니다. 이 방법은 보상 시스템을 기반으로 합니다. 주요 목표는 주어진 환경에서 에이전트가 최대한의 보상을 얻기 위한 최적의 행동(정책)을 학습하는 것입니다. 강화학습은 학습과정에서 정답 라벨을 제공받지 않으며, 대신 시행착오를 통해 어떤 행동이 좋은 결과를 가져오는지 스스로 발견해야 합니다.

 

정의와 동작 방식

강화학습은 에이전트가 환경과 상호작용하며, 이 상호작용을 통해 얻은 보상을 기반으로 학습을 진행합니다. 에이전트는 현재의 상태에서 어떤 행동을 수행하며, 그 결과로 새로운 상태로 이동하고 보상을 받습니다. 이 과정을 통해 에이전트는 시간에 따라 최적의 행동 양식(정책)을 개발하게 됩니다.

 

핵심 개념

  1. 에이전트(Agent): 학습을 수행하는 주체로, 환경에 대해 행동을 결정하고 수행합니다.
  2. 환경(Environment): 에이전트가 상호작용하는 공간으로, 에이전트의 행동에 반응하여 상태를 변경하고 보상을 제공합니다.
  3. 보상(Reward): 에이전트의 행동이 좋았는지 나빴는지를 판단하는 지표입니다. 에이전트는 보상을 최대화하는 방향으로 학습을 진행합니다.
  4. 정책(Policy): 에이전트가 주어진 상태에서 어떤 행동을 취할지 결정하는 전략입니다. 정책은 주로 확률적으로 정의되며 에이전트의 학습 목표입니다.
 

응용 예시

  1. 자율 주행: 자동차가 주변 환경을 인식하고, 상황에 맞게 스스로 운전 방법을 결정합니다. 예를 들어, 다른 차량을 추월하거나, 신호를 준수하거나, 장애물을 회피하는 최적의 경로를 찾아 학습합니다.
  2. 게임 AI: AlphaGo와 같은 프로그램은 강화학습을 통해 바둑과 같은 복잡한 게임에서 인간 전문가를 능가하는 수준의 전략을 학습할 수 있습니다. 이러한 시스템은 게임의 규칙과 가능한 상태들을 파악하고, 수천에서 수백만 번의 게임을 통해 최적의 행동 전략을 학습합니다.
 

Python 코드 예시

아래는 간단한 강화학습 환경을 구현한 Python 코드 예시입니다. gym 라이브러리를 사용하여 간단한 환경에서의 강화학습 절차를 시뮬레이션합니다.

import gym

# 간단한 환경 생성
env = gym.make('CartPole-v1')

for i_episode in range(20):
    observation = env.reset()
    for t in range(100):
        env.render()
        # 임의의 행동 선택
        action = env.action_space.sample()
        observation, reward, done, info = env.step(action)

        if done:
            print(f"Episode finished after {t+1} timesteps")
            break
env.close()

이 코드는 'CartPole-v1' 환경에서 간단한 강화학습 에이전트가 임의의 행동을 취하는 예제입니다. 실제 학습 환경에서는 에이전트가 보상을 극대화하는 방향으로 행동을 선택하는 정책을 학습하게 됩니다.

Previous
머신러닝