본문 바로가기
로봇/인공지능, AI

[핸즈온 머신러닝 3판] 1.한눈에 보는 머신러닝 1.1 ~ 1.3

by 33곰탱 2024. 9. 5.

https://search.shopping.naver.com/book/catalog/42506353624?cat_id=50010921&frm=PBOKMOD&query=%ED%95%B8%EC%A6%88%EC%98%A8+%EB%A8%B8%EC%8B%A0%EB%9F%AC%EB%8B%9D&NaPm=ct%3Dm0o2plmo%7Cci%3Da8a8f318df41560a97031172f71a07720e680bc8%7Ctr%3Dboknx%7Csn%3D95694%7Chk%3Df3137c97879a42ddb39784edd008ee6d2c6714f9

 

핸즈온 머신러닝 : 네이버 도서

네이버 도서 상세정보를 제공합니다.

search.shopping.naver.com

핸즈온 머신러닝 3판으로 기초 잡아보기

 

핸즈온 머신러닝은 1부 2부 3부로 나뉘어 있다.   

 

https://animalia.bio/ko/fire-salamander

책 표지에 있는 사진은 불도롱뇽이라고 한다. 귀엽게 생겼는데 무늬가 살짝 무서운 거 같기도 하다.

 

책에 있는 코드 예제는 오픈 소스이고 https://github.com/rickiepark/handson-ml3에서 확인할 수 있다.

 

GitHub - rickiepark/handson-ml3: <핸즈온 머신러닝 3판>의 주피터 노트북 저장소

<핸즈온 머신러닝 3판>의 주피터 노트북 저장소. Contribute to rickiepark/handson-ml3 development by creating an account on GitHub.

github.com

 

 

1부 1장

핸즈온 머신러닝 1부는 머신러닝이고, 그중 내가 오늘 정리할 부분은 1장 한눈에 보는 머신러닝이다.

1장 한눈에 보는 머신러닝

  • 1.1 머신러닝이란?
  • 1.2 왜 머신러닝을 사용하나요?
  • 1.3 애플리케이션 사례
  • 1.4 머신러닝 시스템의 종류
  • 1.5 머신러닝의 주요 도전 과제
  • 1.6 테스트와 검증

1.1 머신러닝이란?

머신러닝은 데이터에서 학습하도록 컴퓨터를 프로그래밍하는 과학 (또는 예술)입니다.   

일반적인 정의로는

명시적인 프로그래밍 없이 컴퓨터가 학습하는 능력을 갖추게 하는 연구 분야. - Arthur Samuel,1959

공학적인 정의로는

어떤 작업 T에 대한 컴퓨터 프로그램의 성능을 P로 측정했을 때 경험 E로 인해 성능이 향상 됐다면,

이 컴퓨터 프로그램은 작업 T와 성능 측정 P에 대해 경험 E로 학습한 것이다. - Tom Mitchell, 1997

이게 무슨 말일까 해서 GPT에게 물어봤다.

이 정의를 다시 설명하자면, 컴퓨터 프로그램이 특정 작업을 더 잘하게 되었다면, 그것은 경험을 통해 학습한 것이라고 할 수 있다는 뜻입니다. 쉽게 말해, 경험(데이터나 이전의 작업)을 통해 프로그램이 더 나아졌다면, 그 프로그램은 '학습'을 한 것입니다.

음 그렇구나..!

 

스팸 필터는 우리가 쉽게 접할 수 있는 머신러닝 프로그램이라고 한다.

스팸 메일과 일반 메일의 데이터를 이용해서 구분법을 배우는데,

 

이때 시스템이 학습하는 데 사용하는 샘플을 훈련 세트(training set)라고 하고

각각의 훈련 데이터를 훈련 사례(training instane) 혹은 샘플(sample)이라고 한다.

이러한 것들을 이용해서 머신러닝 시스템에서 학습하고, 예측을 만드는 부분은 모델(model)이라고 부른다.

 

훈련 세트는 모델이 학습할 때 사용하는 데이터 전체를 의미하고, 그 안에는 여러 훈련 사례(각각의 입력과 출력 쌍)가 포함되어 있다고 볼 수 있다.

 

예시로,  고양이와 강아지를 구분하는 모델을 만들 때, 훈련 세트는 여러 이미지로 구성되고, 각 이미지가 하나의 훈련 사례로 볼 수 있다.

 

1.2 왜 머신러닝을 사용하나요?

그렇다면 머신러닝을 왜 사용할까? 일반적인 프로그래밍으로 하면 안 될까?라는 생각이 들 수 있다.

만약에 어떤 문제가 있어서 프로그램을 만들고 싶다고 해보자 문제 해결을 한다고 가정한다면

 

1. 먼저 문제가 뭔지 연구를 한 후 문제를 해결을 해야 할 것이다.

2. 그 후 평가를 해서

3. 통과하면 프로그램을 론칭

4. 실패하면 오류를 분석해서 다시 처음으로 돌아간다.

 

이런 방법을 사용할 것이다.

 

그런데 전통적인 프로그래밍 기법을 사용한다고 했을 때 만약 점점 문제가 많아지면 문제를 해결하는데 점점 복잡하고 유지 보수하기 힘들어질 것이다.

전통적인 프로그래밍 기법

 

만약 머신러닝 기법에 기반을 두면 자주 나타나는 패턴을 감지해서 자동으로 학습을 할 수 있어서 훨씬 덜 복잡하고 유지 보수하기 쉬우고 중요한 것은 정확도도 대부분 높을 것이다!

 

머신러닝 기법

 

머신러닝은 매우 복잡하거나 기존 알고리즘으로는 해결할 수 없는 문제들에 특히 유용하다. 이런 문제들은 사람이 분석하는 데 오랜 시간이 걸릴 수 있지만, 머신러닝을 사용하면 새로운 패턴을 발견하고 문제를 보다 효과적으로 이해할 수 있게 된다. 아래 이미지에서 볼 수 있듯이, 때로는 예상치 못한 상관관계나 새로운 패턴들을 알아낼 수 있고. 이런 과정을 통해 문제를 더 깊이 이해할 수 있게 되는데, 이렇게 대규모 데이터를 분석해 숨겨진 패턴을 찾아내는 작업을 데이터 마이닝(Data Mining)이라고 한다.

머신러닝 과정 중 데이터 마이닝

위의 내용들을 요약하면

1. 기존 솔루션으로는 많은 수동 조정과 규칙이 필요한 문제

2. 전통적인 방식으로는 해결 방법이 없는 복잡한 문제

3. 유동적인 환경

4. 복잡한 문제와 대량의 데이터에서 인사이트 얻기

등에서 머신러닝이 뛰어나다고 할 수 있다!!

1.3 애플리케이션 사례

이 책은 머신러닝 기술이 실제로 적용되는 사례에 대해 알려준다! 요약해보자면 

1. CNN (Convolutional Neural Network)

  • 제품 이미지 자동 분류: 생산 라인에서 제품 이미지를 분석하여 자동으로 분류.
  • 뇌 스캔 이미지 분석: 뇌를 스캔하여 중요 부위를 판단하는 작업.

2. NLP (Natural Language Processing)

  • 뉴스 기사 자동 분류: 자연어 처리 기법을 이용하여 뉴스 기사를 자동으로 분류.
  • 부정적 댓글 자동 감지: 토론 포럼에서 부정적인 코멘트를 자동으로 감지하는 작업.
  • 문서 요약: 긴 문서를 자동으로 요약하는 작업.
  • 챗봇 또는 개인 비서: 자연어 이해를 통해 챗봇이나 개인 비서를 개발하는 작업.

3. Regression (회귀 분석)

  • 수익 예측: 과거 데이터를 바탕으로 회사의 내년도 수익을 예측.

4. Clustering (군집 분석)

  • 고객 분류 및 타겟 마케팅: 고객을 다양한 그룹으로 나누고, 그에 맞춘 마케팅 전략을 세우는 작업.

5. 기타

  • 음성 명령 인식 앱 개발: 음성 명령을 인식하여 반응하는 애플리케이션 개발.
  • 신용카드 부정 거래 감지: 부정 거래를 감지하는 이상치 탐지 작업.
  • 추천 시스템: 고객 구매 이력을 바탕으로 관심 상품을 추천하는 시스템 개발.

등등이 있다고 한다.

 

1장임에도 불구하고 페이지 수가 많아가지고 1.4~1.6은 다음 글에 올리도록 하겠습니다~^^