AI/Machine Learning 30

[Machine Learning] 최소 제곱법

최소 제곱법 (Least Square Method)는 선형 회귀 분석에서 데이터를 하나의 직선으로 표현하기 위해 직선의 기울기와 절편을 구하기 위한 방법입니다. 다중 선형회귀에서도 최소 제곱법을 사용할 수 있지만, 본 포스팅에서는 단순 선형회귀에 대한 최소 제곱법을 소개하겠습니다. 독립 변수 X가 공부 시간, 종속 변수 Y가 시험 점수이고 데이터가 다음과 같을 때 산점도로 확인하면 다음과 같습니다. X = [1, 2, 5, 8, 10] Y = [10, 15, 68, 80, 95] 최소 제곱법을 통해 직선을 만들어보겠습니다. 식은 다음과 같습니다. y = ax + b에서 a와 b는 다음과 같습니다. 여기서 sum은 합, avg는 평균입니다. a = sum(x의 편차 * y의 편차) / sum(x의 편차 제..

AI/Machine Learning 2022.09.07

[Machine Learning] Kaggle Competition 데이터 전처리 예제

https://www.kaggle.com/competitions Kaggle Competitions www.kaggle.com Kaggle은 2010년 설립된 예측모델 및 분석 대회 플랫폼입니다. 위의 링크인 Kaggle Competition으로 들어가시면 기업 또는 단체에서 등록한 머신러닝 문제에 도전할 수 있습니다. Competition에 등록된 문제는 대부분 raw data이기 때문에 회귀 또는 분류 모델로 학습을 하기 위한 전처리 과정이 필수적입니다. 따라서 이전 포스팅을 기반으로 kaggle competition 데이터 전처리를 진행해보겠습니다. https://www.kaggle.com/competitions/hotel-booking-demand-3 Hotel booking demand | Ka..

AI/Machine Learning 2022.08.26

[Machine Learning] 통계학 - 평균과 분산

평균에는 산술 평균, 기하 평균, 조화 평균 등이 있습니다. 우리가 흔히 사용하는 평균은 산술 평균이며, 모든 데이터의 값을 더한 후 데이터 개수로 나누는 것을 의미합니다. 분산(variance)은 변량이 얼마나 퍼져 있는지를 수치화한 것으로, 편차 제곱의 평균으로 계산됩니다. 여기서 편차란 관측 데이터 값에 평균을 뺀 값입니다. 표준 편차(standard deviation)는 분산의 양의 제곱근입니다. 표준 편차가 필요한 이유는 분산에 있습니다. 분산을 계산할 때 편차를 제곱하게 되는데, 이것은 분산 값 자체를 분석하는데 어려움을 줄 수 있습니다. (제곱된 값의 의미를 파악하기 힘듦) 따라서 표준 편차는 분산을 구하는 과정에서 제곱으로 커진 결과를 다시 원래 단위로 조정하는 과정이라고 볼 수 있습니다...

AI/Machine Learning 2022.08.10

[Machine Learning] 통계학 - 확률 변수와 확률 분포

머신러닝은 통계학을 기반 알고리즘이 많이 있습니다. 따라서, 선형대수와 함께 통계학도 머신러닝 알고리즘 이해를 위해서 반드시 선행되어야 합니다. 머신러닝을 위한 통계학 기본을 정리해보도록 하겠습니다. 먼저, 확률(probability)이란 어떤 사건이 일어날 가능성을 수치화시킨 것입니다. 예를 들어 주사위를 던졌을 때, 6이 나올 확률은 1/6입니다. 사건 A의 확률 P(A)는 0

AI/Machine Learning 2022.08.10

[Machine Learning] 선형대수 - 특이값 분해

고윳값 분해는 정방행렬(nxn)에만 적용됩니다. 이와 달리, 특이값 분해(Singular Value Decomposition, SVD)는 정방행렬이 아니더라도(mxn) 분해가 가능합니다. 특이값 분해는 고윳값 분해와 유사하게 아래와 같이 정의됩니다. U는 AA^T의 특이벡터 행렬이고, V는 A^TA의 특이벡터 행렬입니다. Σ는 특이값 대각 행렬입니다. A가 mxn 행렬일 때, U는 mxm, Σ는 mxn, V는 nxn으로 구성됩니다. 또한 U와 V는 A와 A^T의 곱으로 이루어져있기 때문에 대칭 행렬입니다.(A와 A의 전치행렬을 곱하면 대칭 행렬이 됩니다.) 대칭 행렬의 고유 벡터는 서로 직교인 특징이 있습니다.또한, U와 V는 AA^T와 A^TA의 특이벡터 행렬이고 정규 직교 행렬입니다. 특이값 분해를 ..

AI/Machine Learning 2022.08.09

[Machine Learning] 선형대수 - 고윳값 분해

Ax = λx 을 만족할 때, x를 행렬 A의 고유벡터(eigenvector), λ를 행렬 A의 고윳값(eigenvalue)이라고 합니다. 여기서 A는 nxn 정방행렬이어야 합니다. 고유벡터 x는 선형변환 했을 때, 방향은 유지되고 크기만 달라지게 됩니다. 예를 들어 행렬 A와 A의 고유벡터 x가 다음과 같을 때 x와 Ax 벡터의 방향은 같습니다. 고윳값과 고유벡터를 구하는 이유는 행렬의 대각화와 관련이 있으며, 행렬을 대각화를 통해 제곱 연산, 주성분 분석 등 여러 분야에 활용될 수 있습니다. 고윳값을 구하기 위해서 Ax = λx을 기반으로 특성방정식 (characteristic equation)을 이용합니다. (A - λI)가 가변행렬이 아닐 경우에만 고윳값을 계산할 수 있기 때문에 det(A - λ..

AI/Machine Learning 2022.08.09

[Machine Learning] 데이터 전처리

머신러닝에 사용되는 raw 데이터는 대부분 가공되어 있지 않습니다. 데이터 전처리(feature engineering)는 효율적인 학습을 위해 반드시 필요한 작업입니다. 데이터 전처리 방법은 여러가지가 있지만 기본적인 결측치 처리, 데이터 라벨링, 데이터 스케일링을 소개합니다. 1. 결측치 처리 데이터 셋에서 일부 데이터의 값이 존재하지 않는 경우 이를 결측치라고 합니다. 결측치는 학습에 문제가 될 수 있기 때문에 결측치 처리(변경 또는 삭제)는 중요한 작업입니다. import numpy as np import pandas as pd df = pd.DataFrame([ [42, 'male', 12, 'reading', 'class2'], [35, 'unknown', 3, 'cooking', 'class1..

AI/Machine Learning 2022.07.11

[Machine Learning] Sklearn을 이용한 머신러닝 데이터 불러오기

Sklearn을 이용하여 머신러닝에 사용할 데이터를 불러오는 예제입니다. import numpy as np import pandas as pd import seaborn as sns import matplotlib.pyplot as plt from sklearn import datasets 먼저 데이터를 다루기 위한 numpy, pandas와 데이터 시각화를 위한 seaborn, matplotlib.pyplot, 그리고 데이터를 불러오기 위한 sklearn.datasets을 import 합니다. 1. 집값 예측하기 raw_boston = datasets.load_boston() print('type(raw_boston):', type(raw_boston)) print('raw_boston.keys():'..

AI/Machine Learning 2022.07.08

[Machine Learning] 머신 러닝이란

머신 러닝 (Machin Learning) 인공 지능의 한 분야로, 컴퓨터가 경험을 바탕으로 학습할 수 있도록 하는 알고리즘입니다. 머신 러닝은 데이터로부터 결과를 찾는 것에 초점을 맞추는 것이 아니라, 주어진 데이터로부터 규칙성을 찾는 것에 초첨을 두고 있습니다. 입력과 출력을 미리 매핑 시켜 데이터셋을 만들고, 조건문을 이용하여 입력에 대한 출력을 반환하는 하는 프로그램도 인공 지능이라고 할 수 있습니다. 심심이와 같은 프로그램이 이에 해당 됩니다. 하지만 심심이는 주어진 데이터셋에 존재하지 않는 입력을 받았을 때, 올바른 출력을 반환할 수 없습니다. 반면에 머신 러닝을 통해 규칙성을 찾게 되면, 이후에 새로운 입력에 대한 출력과 유사한 정답을 찾아낼 수 있습니다. 머신 러닝은 기존의 프로그래밍 방식..

AI/Machine Learning 2021.04.02

[Machine Learning] matplotlib.pyplot를 이용한 데이터 시각화

머신러닝이 잘 되고 있는지, 결과가 잘 출력되는지 확인하기 위해서는 좋은 시각화 도구가 필요합니다. matplotlib.pyplot를 이용하여 그래프 그리기에 익숙해지기 위한 간단한 튜토리얼을 진행합니다. 1. 선 그래프 import matplotlib.pyplot as plt import random # plot x = range(20) y = random.sample(range(0, 20), 20) plt.plot(x, y) plt.show() plt.plot(x, y, 'bo') plt.show() plt.plot(x, y, 'r-') plt.show() plt.plot(x, y, 'g--') plt.show() plt.plot(y, 'k-') plt.xlabel('X') plt.ylabel('Y'..

AI/Machine Learning 2021.03.09