머신러닝(ML) & 딥러닝(DL)/혼자공부하는 머신러닝 딥러닝

Chapter 1 나의 첫 머신러닝

Kim MyeongOk 2022. 7. 16. 22:57

01-1 인공지능과 머신러닝, 딥러닝

        1. 인공지능: 사람처럼 학습하고 추론할 수 있는 지능을 가진 컴퓨터 시스템을 만드는 기술

                1) 강인공지능(=인공일반지능): 사람과 구분하기 어려운 지능을 가진 컴퓨터 시스템

                        ex) 터미네이터

                2) 약인공지능: 특정 분야에서 사람의 일을 도와주는 보조 역할을 하는 시스템

                        ex) 음성비서, 자율 주행 자동차, 음악 추천, 기계 번역, 알파고 등

 

        2. 머신러닝: 규칙을 프로그래밍하지 않아도 자동으로 데이터에서 규칙을 학습하는 알고리즘을 연구하는 분야임.

                - 대표적인 라이브러리: sklearn(scikit-learn, 사이킷런)

                        사이킷런을 많이 사용하는 이유: 많은 알고리즘이 끊임없이 개발되고 있고 발표되는데,

                                        시간이 지나면서 장단점이 파악되면 알고리즘이 유익하다고 증명되어 널리 사용하게 되면

                                        사이킷런 개발자들이 알고리즘을 라이브러리에 추가함.

                        ∴ 사이킷런 라이브러리에 포함된 알고리즘들은 안정적이며 성능이 검증되어 있음.

 

        3. 딥러닝(=인공 신경망): 많은 머신러닝 알고리즘 중에 인공 신경망을 기반으로 한 방법들을 통칭함.

                - 대표적인 라이브러리: 텐서플로우, 파이토치

01-2 코랩과 주피터랩 ...생략...

01-3 머신러닝

[용어정리]

        1. 특성: 데이터를 표현하는 하나의 성질임. (csv파일에서의 칼럼 이름)

        2. 훈련: 머신러닝 알고리즘이 데이터에서 규칙을 찾는 과정을 의미함.

                        (scikit-learn에서 fit()메서드가 하는 역할임)

        3. k-최근접 이웃 알고리즘(KNN): 가장 간단한 머신러닝 알고리즘 중 하나임.

                        어떤 규칙을 찾는 것이 아니라 전체 데이터를 메모리에 가지고 있는 것이 전부임.

        4. 모델: 머신러닝 프로그램에서는 알고리즘이 구현된 객체를 의미함. 종종 알고리즘 자체를 모델이라고 부르기도 함.

        5. 정확도: 정확한 답을 몇 개 맞혔는지를 백분율로 나타낸 값임. (=정답률)

                        사이킷런에서는 0~1사이의 값으로 출력됨.

  정확도 = (정확히 맞힌 개수) / (전체 데이터 개수)  

[머신러닝 과정]

        1) 데이터 수집

        2) 데이터 전처리

        3) 모델 학습

        4) 모델 신뢰도 테스트


1. matplotlib: 과학계산용 그래프를 그리는 대표적인 패키지

        1) scatter(): *산점도를 그리는 맷플롯립 함수로, 처음 2개의 매개변수로 x축과 y축 값을 전달.

                        값은 파이썬 리스트 또는 넘파이 배열임.

                            *산점도: x, y축으로 이뤄진 좌표계에 두 변수(x, y)의 관계를 표현하는 방법임.

                        - c 매개변수: 색깔을 지정. RGB16진수(ex) ‘#1f77b4’)로 지정하거나 색깔코드 중 하나를 지정함.

                                        지정하지 않을 경우 10개의 기본 색깔을 사용해 그래프를 그림.

                            # 색상 코드: ‘b’(파랑), ‘g’(초록), ‘r’(빨강), ‘c’(시안), ‘m’(마젠타), ‘y’(노랑), ‘k’(검정), ‘w’(흰색)

                            (기본 색깔은 http://bit.ly/matplotlib_prop_cycle

                                                  https://wikidocs.net/92085#matplotlib 참고)

                        - marker 매개변수: 마커스타일을 지정. (Default: o(circle, ))

                            (지정할 수 있는 marker 종류는 http://bit.ly/matplotlib_marker 참고)

        2) xlabel(): x축 이름을 화면에 표시하는 함수

                           # xlim() : x축의 범위를 지정하는 함수

        3) ylabel(): y축 이름을 화면에 표시하는 함수

                           # ylim() : y축의 범위를 지정하는 함수

        4) show(): 준비된 그래프를 화면에 출력하는 함수

 

2. k-최근접 이웃(KNN): 가장 간단한 머신러닝 알고리즘 중 하나임.

        1) 사이킷런(scikit-learn) 패키지 사용하려면 세로 방향으로 늘어뜨린 2차원 리스트(=리스트의 리스트)를 만들어야 함.

                → data = [[l, w] for l, w in zip(‘list1,list2, ...’)] # zip()의 매개변수는 리스트를 나열해줌

                        - zip(): 나열된 리스트에서 원소를 하나씩 꺼내주는 함수

        2) KNeighborsClassifier: k-최근접 이웃 분류 모델을 만드는 사이킷런 클래스임.

                임의의 데이터에서 가장 가까운 n개의 이웃을 찾고 해당 종류가 더 많은 종류로 데이터가 분류됨.

            from sklearn.neighbors import KNeighborsClassifier

                - n_neighbors 매개변수로 이웃의 개수를 지정. (Default= 5)

                - p 매개변수로 거리를 재는 방법을 지정. (Default= 2)

                        - ‘1’일 경우, 맨해든 거리(http://bit.ly/man_distance)를 사용함.

                                        ㄴ 실수를 직교 좌표계에 일정한 좌표축의 점 위에 투명한 선분 길이의 합

                        - ‘2’일 경우, 유클리디안 거리(http://bit.ly/euc_distance)를 사용함.

                                        ㄴ 두 점 사이의 거리를 계산할 때 사용하는 알고리즘

                - n_jobs 매개변수로 사용할 CPU 코어를 지정할 수 있음.(Default= 1)

                        - ‘-1’로 설정하면 모든 CPU 코어를 사용함. 이웃 간의 거리 계산 속도를 높일 수 있지만

                                fit() 메서드에는 영향이 없음.

                (1) fit(): 사이킷런 모델을 훈련할 때 쓰이는 함수

                                처음 두 매개 변수로 훈련을 사용할 특성과 정답 데이터를 전달함.

                (2) predict(): 사이킷런 훈련하고 예측할 때 사용되는 함수로, 특성 데이터 하나만 매개변수로 받음.

                (3) score(): 훈련된 사이킷런 모델의 성능을 측정하는 함수

                                처음 두 매개변수로 특성 데이터와 정답 데이터를 전달함.

                                이 함수는 predict() 함수로 예측을 수행한 다음 분류 모델일 경우,

                                정답과 비교하여 올바르게 예측한 개수의 비율을 반환함.

        3) 단점

                데이터가 아주 많은 경우 사용하기 어려움

                : 데이터가 크기 때문에 메모리가 많이 필요하고, 직선거리 계산에 많은 시간이 필요.