Python으로 기초 기계에서 논리 회귀 분석 배우기

8264 단어 기계 학습Python

입문


이'Python으로 기초기계학습'시리즈의 목적, 환경 구축 방법, 시리즈의 다른 보도 등은 먼저 아래 요약 페이지를 보십시오.
Python 기초부터 기계 학습까지 총결산
이번에는 Python으로 기초 기계로부터 "단회귀 분석" 학습, Python 기초부터 머신러닝까지 "재회귀 분석" 을 전제로 한 내용을 읽었다.
또한 본 기사는 초보자가 자신의 학습을 위해 개인의 귀결을 공개하는 기사가 되었다.따라서 기사에 오류, 오류가 있을 가능성이 크다.미리 양해해 주십시오.
더 잘하고 싶어서 잘못된 사람을 알아차리고 편집 요청과 댓글을 받을 수 있다면 좋겠다.
본고의 코드는 구글 Colaboratory에서 실행될 예정이다.이 기사에서 사용한 구글 Colab의 Notebook은 다음과 같습니다.
03_logistic_regression.ipynb

논리 회귀 분석이 무엇입니까


논리 회귀는 주로 확률 문제와 분류 문제를 처리하는 데 쓰인다.확률과 분류는 0 또는 1, 0%에서 100%의 일정한 범위 내에서 처리한다.예를 들어, 강수 확률은 0-100%로 표시됩니다.분류된 상황에서 컴퓨터에서 0 또는 1로 이 사진이 고양이인지, 이 사진이 개인지 아닌지를 나타낸다(때로는 0.0~1.0의 확률로도 나타낸다).
이런 상황에서 지금까지 배운 단회귀분석, 중회귀분석은 처리하기 어려워 논리회귀를 사용했다.이전의 예측 외에 분류에서도 쉽게 사용할 수 있는 것이 중점이다(회귀라는 이름은 헷갈리기 쉽다).

신호 함수


우선, 우리는 논리 회귀에서 중요한 역할을 하는 신호 함수를 소개할 것이다.논리 회귀는 신호 함수(논리 함수라고도 부른다)를 사용하여 결과를 일정한 범위 내에서 제한한다(구체적으로 0-1).같은 함수이지만 서로 다른 호칭 방법이 있는데 이것은 마치 역사의 경과와 같다.관심 있는 분은 조사해 주세요.
시그모드 함수의 표현식은 다음과 같다.
f(x) = \frac{1}{1 + e^{-ax}}
도표로 가시화해 보세요.
import numpy as np
import matplotlib.pylab as plt
import seaborn as sns

def sigmoid(x):
    return 1/(1 + np.exp(-x))

x = np.arange(-5.0, 5.0 , 0.1)
y = sigmoid(x)
plt.plot(x, y)
plt.ylim(-0.1, 1.1)
plt.show()
시그모드 함수는 $x$에 어떤 값을 입력하든지 0에서 1 사이의 결과를 얻을 수 있는 매우 편리한 함수입니다.

특히 깊이 있는 계산은 0에서 1의 범위 내에서 결과를 얻을 수 있으면 편리하기 때문에 시그모드 함수는 깊이 있는 계산에서도 활성화 함수(최근 계산량의 관계에서 ReLU를 사용하는 경우가 많다)로 불린다.
논리 회귀에서 이 명령 함수의 $ax$에 다시 회귀 공식이 포함되어 있다고 가정합니다.
p = \frac{1}{1 + e^{-(w_0 + w_1 x_1 + w_2 x_2 + \cdots + w_n x_n)}}
보기 흉하기 때문에 팀을 사용하면 다음과 같이 표시할 수 있다.
p = \frac{1}{1 + e^{-{\boldsymbol w}^{\mathrm{T}} \boldsymbol x_n}}
복귀 공식의 왼쪽은 $y$이고 논리적 복귀 확률은 0-1이기 때문에 일반적으로 $p$를 사용합니다.
논리 회귀 분석은 이 모델을 주어진 데이터에 응용하여 공식 $\boldsymbolw$, 즉 회귀 분석을 할 때 얻은 회귀 계수와 전환 회귀 계수를 얻는다.
또한 상술한 공식은 다음과 같이 변형될 수 있다.
\log (\frac{p}{1-p}) = \boldsymbol w^{\mathrm{T}} \boldsymbol x_n
왼쪽에 있는 $\frac {p} {1-p} $는 Ods라고 불리는 확률 용어(도박에서도 자주 사용)이기 때문에 확률은 선형과 표시를 사용한다는 것을 설명할 수 있다.
참고로 이곳의 설명은 이치분류라고 불리며 데이터를 두 종류로 나누는 상황(예를 들어 개나 고양이)이다. 논리회귀도 개, 고양이, 사람처럼 두 종류 이상으로 나뉘는 다수치 분류 문제를 해결할 수 있다.
이런 상황에서 편향 회귀 계수의 벡터를 행렬로 바꾸고 시그모드 함수를 소프트맥스 함수로 바꿔야 한다.이 부근에는 《 깊이 학습한 수학 이 책 》 에 상세한 기록이 있다.자세한 내용은 다음 기사를 참조하십시오.
황금 주 동안 나는 딥러닝 수학, 주변 수학, 구글 Colaboratory (Python) 로 수학을 꼼꼼히 복습했다

scikit-learn의 논리 회귀 분석을 사용하다


그러면 scikit-learn의 논리적 회귀를 사용하지만 확률 예측과 분류에 대해 매우 알기 쉽게 귀결된 페이지, 링크가 있기 때문이다.
설명과 코드는 모두 자세하고 이해하기 쉽다.따라서 scikit-learn에 대한 분석은 본 보도에서 생략합니다.
Scikit-learn으로 논리 회귀(확률 예측 편)
Scikit-learn으로 논리적 회귀(분류편)

논리 회귀 분석의 구해 방법


여기서 나는 예전처럼 scikit-learn을 사용하고 싶지 않고 실제 계산을 하고 논리 회귀 분석의 해를 구하고 싶다.
그러나 논리적 회귀의 경우 특히 0, 1의 2치 분류의 경우 단회귀나 중회귀처럼 최소 2승법을 바탕으로 행렬 계산을 통해 해석할 수 없다.
따라서 해답을 구할 때 사다리꼴 하강법 등 검색 알고리즘을 사용하고 임의의 값에 따라 차례로 계산하고 해답 공간을 검색하여 근사해를 구한다.
이런 검색 알고리즘을 사용하여 풀기 위한 검색은 사실상 딥러닝에서도 사용되는 방법이다.

문제 분류에 사용되는 알고리즘


논리 회귀도 분류 문제에 쓰인다고 하지만 논리 회귀는 선형 분류 모델이라고 불리며 풀리지 않는 분류 문제(대표적으로 XOR)가 있다.
분류 문제는 논리 회귀 외에도 각양각색의 알고리즘이 있다.대표적인 것은 다음과 같다.
  • 결정 트리
  • SVM
  • 신경망(딥러닝)
  • 특히 SVM은 일종의 선형 분류 모델로 내부 핵 기술로 비선형 분류 문제를 해결할 수 있는 방법이다.딥러닝이 화제가 되기 전에 분류 문제는 SVM인 것 같습니다.이전에 SVM을 사용해 본 적이 있으신 분은 다음 기사를 참조하십시오.
    SVM(벡터기 지원)과 python으로 하늘 사진에서 날씨 판단
    또 딥러닝을 포함한 신경 네트워크도 분류 문제를 해결할 수 있다.실제로 신경 네트워크에서 가장 간단하게 포세프턴이라고 불리는 모델은 선형 분류 모델이지만 여러 층을 겹쳐 비선형 문제를 해결할 수 있다.이런 다층 신경 네트워크는 깊이 있는 학습의 기초이다.

    총결산


    간단하지만 이번엔 여기서 끝이야.의욕이 없는 것은 아니다.그냥 좀 쉬고 싶었어요.
    논리가 회귀할 때 시그모드 함수와 사다리 하강법 등이 나타나 점점 딥러닝(심리작용?)에 가까워지는 것 같다.
    분류 문제의 결정 트리와 SVM도 흥미로운 소재지만 앞으로 사다리꼴 하강법 등의 탐색 알고리즘을 채택한 뒤 단숨에 신경 네트워크(딥러닝)를 가고 싶은가.

    평론 등


    먼저 붙이고 나서 기사를 이해하고 업데이트한다.
    선형 회귀를 통해 대수 Ods를 구하려면 논리 회귀가 됩니다.수선형 모형의 일종.따라서 분류가 아닌 회귀로 명명되었다.선형 회귀의 값이 1보다 크면ods에서 분자의 값이 비교적 크기 때문에 결과는 입력을 분자 측에 이산적으로 분배하는 사건의 분류에 응용할 수 있다. https://t.co/Mos7hrUixk — HELLO CYBERNETICS (@ML_deep) September 17, 2019


    参考リンク



    좋은 웹페이지 즐겨찾기