Machine Learning
-
ML Development ProcessMachine Learning/Stanford ML Specialization 2024. 4. 28. 12:29
머신러닝을 개발하는 프로세스는 어떻게 진행될까? 먼저 어떤 모델과 데이터등을 사용할지 architecture를 결정하고 모델을 학습시킨다. 이후, bias, variance, error들을 이용해 모델을 진단하고, 만약 결과가 맘에 들지 않는다면 model이나 data를 변경해주고, 이 과정을 반복해준다. Error Analysis위 단계로 스팸 이메일을 찾아내는 Classification 모델을 트레이닝 했는데, 500개의 예시중 Cross Validation에서 100개를 잘못 분류했다고 가정해보자. Error Analysis는 매뉴얼하게 각 에러를 살펴보는 일이다. Cross Validation에서 알고리즘이 잘못 분류한 예제를 직접 찾아서 공통 주제나 속성 등으로 그룹화를 하는것이다. 예를 들어..
-
Bias and VarianceMachine Learning/Stanford ML Specialization 2024. 4. 27. 20:21
머신러닝 클래스들에서 예시로 주는, 잘 정제된 데이터로 모델을 생성하면, 8-90%의 예측률을 보여주는 모델을 만나가 되지만, 실제 현실에서는 그렇지가 않다. 선형 회귀 문제를 생각해보자. Bias가 높아서 underfit하거나, Variance가 높아서 Overfit하는 경우가 발생한다. Underfit의 경우, 오차값이 크기때문에 Jtrain값은 높아지고, Jcv값도 높을것이다. Overfit의 경우, Jtrain값은 낮더라도, Jcv값이 높을수 있다. 이렇게 Jtrain과 Jcv를 비교해서 Underfit인지, Overfit인지 예측할 수 있다. Good fit일 경우에는 Jtrain값도, Jcv값도 낮을것이다. 지난시간, 여러가지 다차항을 이용해서 모델의 성능을 살펴보고, 최적의 모델을 선택하는..
-
Model Selection and EvaluationMachine Learning/Stanford ML Specialization 2024. 4. 27. 11:55
머신러닝 모델을 만들었는데, 결과값이 심각하게 좋지 않을 때, 어떻게 해야할까? 아래를 포함한 여러가지 방법이 있을것이다.트레이닝 데이터 더 수집하기feature를 늘리거나 줄이기ploynomical feature등을 사용하거나 다른 feature engineering 기법을 사용해보기알파/감마값을 줄이거나 늘이기다른 모델 선택하기 Evaluation하지만, 이 모든것을 랜덤하게 해보는것은 수개월이 걸릴지도 모른다. 그렇기 때문에 어떤 문제가 발생하는지 모델을 Evaluation을 잘 하는것은 매우 중요하다. Linear Regression에서, 첫번째로, Train/Test error를 계산하는 방법이 있다. 많이 사용하는 Squared Error Cost를 이용해볼 수 있는데, train값은 0에 가..
-
Python BasicMachine Learning/ML Math with Python 2024. 4. 3. 22:59
Basic Operations Python의 Basic한 것들을 다시 상기해보자. Python에서는 변수(Variable)에 정수, 소수, 문자열 등 다양한 값을 넣을 수 있다. # 정수 123 a = 123 # 소수 b = 123.456 # 문자열 c = "hello world!" print()를 사용해 그 값을 콘솔에 표시할 수 있다. a = 123 print(a) 123 print를 할 때, 쉼표를 이용해서 값을 한꺼번에 프린트 할 수 있다. print(a, b, c) 이번엔 연산자를 사용해 여러 연산을 해보자. a = 3 b = 4 # 더하기 c = a + b print("+ :", c) # 빼기 d = a - b print("- :", d) # 곱하기 e = a * b print("* :", e..
-
지도학습 | 결정트리 (Decision Tree)Machine Learning/ML with Python Library 2024. 4. 3. 22:30
Decision Tree 만들기 결정트리(Decision Tree)는 분류와 회귀 문제에 널리 사용하는 모델이다. 기본적으로 결정 트리는 결정까지 Yes/No 질문을 이어 나가면서 학습한다. 마치 스무고개와 같다. 만약 포켓몬을 맞추는 문제라고 해보자. 뮤, 아르세우스, 피카츄, 파이리 중 두가지 질문을 통해 정답을 맞출 수 있다. 이런 방법을 이용해서 지도 학습 방식으로 데이터로부터 학습할 수 있다. Decision Tree를 만들어보자. 2차원 데이터셋을 분류하는 Tree이다. 이 데이터셋은 각 클래스에 데이터 포인트가 50개씩 있고, 반달 두개가 포개진 것 같은 모양을 하고 있다. 결정 트리를 학습한다는 것은 정답에 가장 빨리 도달하는 Yes/No질문 목록을 학습하는 것이다. ML에서는 이런 질문을..
-
지도학습 | 나이브 베이즈 분류기 (Naive Bayes Classification)Machine Learning/ML with Python Library 2024. 4. 3. 22:05
Naive Bayes Classification는 Linear Model과 매우 유사하다. Logistic Regression이나 LinearSVC같은 Linear Classification보다 훈련 속도가 바른 편이지만, 대신 일반화(Generalization) 성능이 조금 뒤진다. 일반화(Generalization)는 모델이 훈련 데이터에 대해서뿐만 아니라, 본 적 없는 새로운 데이터에 대해 얼마나 잘 예측하는지를 나타내는 성능의 척도이다. 나이브 베이즈 분류기는 각 특성을 개별로 취급해서 파라미터를 학습 시키고, 클래스별 통계를 단순하게 취합한다. scikit-learn에서는 GaussianNB, BernoulliNB, MultinomialNB 이렇게 세가지다. GaussianNB는 연속적인 어떤 ..
-
지도학습 | 선형모델의 장단점과 매개변수Machine Learning/ML with Python Library 2024. 4. 2. 22:26
선형 모델의 주 매개변수는 Regression 모델에서는 alpha였고, Classification Model이었던 LinearSVC와 LogisticRegression에서는 C였다. alpha값이 클수록, C값이 작을수록 모델은 단순해진다. 특히, Regression 모델에서 이 매개변수를 조정하는 일은 매우 중요하다. 또한 규제를 L1, L2중 어떤것을 사용할지 정해햐아하는데, 중요한 특성이 많이 없을땐 L1을, 그렇지 않으면 L2를 사용한다. L1은 몇가지 특성만 사용하기 때문에, 해당 모델에 중요한 특성과 효과를 이해하기 쉽다. Linear 모델은 학습 속도도 예측도 빠르다. 또한, 예측이 어떻게 만들어 지는지 비교적 쉽게 이해할 수 있다. Linear 모델은 특성이 많을 때 잘 작동하는데, 다른..
-
지도학습 | 다중클래스 분류용 선형 모델 (MultiClass Classification Linear Model)Machine Learning/ML with Python Library 2024. 4. 2. 22:18
Logistic Regression을 제외한 많은 Linear Classification 모델은 Binary Classification만을 지원한다. 즉, multiclass를 지원하지 않는다. 이 binary알고리즘을 multiclass로 확장하기 위해서는 가장 보편적인 기법, one vs rest, 즉 일대다 방식을 사용하면 된다. 각 클래스를 다른 모든 클래스와 구분하도록 binary classification 모델을 학습시키는것인데, 결국 클래스 수만큼 binary classification 모델이 만들어진다. 모든 결과값 중, 가장 높은 점수를 내는 classification의 클래스를 예측값으로 선택하면 된다. 세개의 클래스를 가진 간단한 데이터셋에, 이 일대다 방식을 적용해보자. # !pip..