수학적 프로그래밍 - 데이터 과학 발전을 위한 구축
소개
의 본질 수학적 프로그래밍 수학적 개념, 특히 일련의 계산 작업을 체계적으로 코딩하는 습관을 기르는 것입니다.
이러한 종류의 프로그래밍 습관은 분석 및 데이터 과학 경력에 매우 유용합니다. , 매일 다양한 숫자 패턴을 만나고 이해해야 하는 곳입니다. 수학적 프로그래밍 능력은 종종 데이터 모델 구축의 첫 번째 단계인 빠른 수치 분석의 신속한 프로토타이핑에 도움이 됩니다.
몇 가지 예
그렇다면 수학 프로그래밍이란 무엇을 의미합니까? 다음과 같은 다양한 Python 라이브러리에 이미 내장되고 최적화된 수학 함수가 많이 있지 않습니까? 넘파이 그리고 사이파이 ?
예, 하지만 그렇다고 해서 처음부터 다양한 수치 계산 작업을 코딩하고 수학적 프로그래밍 습관을 들이는 것을 막을 수는 없습니다.
다음은 몇 가지 임의의 예입니다.
- 파이를 a로 계산 몬테카를로 실험 —보드에 무작위로 다트를 던지는 시뮬레이션
- 복소수를 처리하기 위한 모든 메서드를 통합하는 함수 또는 클래스를 빌드합니다(Python에는 이미 그러한 모듈이 있지만 모방할 수 있습니까?)
- 계산 투자 포트폴리오의 평균 수익률 여러 가지 경제 시나리오를 시뮬레이션하여 각 주식의 분산이 주어진 경우
- 랜덤 워크 이벤트 시뮬레이션 및 플로팅
- 시뮬레이트 두 공의 충돌 및 궤적 계산 임의의 시작점과 방향에 따라
보시다시피 예제는 매우 흥미롭고 실제 시나리오에 가깝습니다. 따라서 이 기술은 이산 또는 확률적 시뮬레이션을 위한 코드 작성 능력으로 이어집니다.
인터넷에서 수학적 속성이나 아이디어를 탐색할 때 좋아하는 프로그래밍 언어의 간단한 코드를 사용하여 개념을 빠르게 테스트하고 싶은 충동을 느끼십니까?
그렇다면 축하합니다! 당신은 수학적 프로그래밍 습관을 가지고 있으며 만족스러운 데이터 과학 경력을 추구하는 데 훨씬 도움이 될 것입니다.
수학 프로그래밍이 데이터 과학의 핵심 기술인 이유는 무엇입니까?
데이터 과학의 실행에는 숫자 및 수치 분석과 매우 친숙한 관계가 필요합니다. 그러나 이것은 복잡한 공식과 방정식을 암기하는 것을 의미하지는 않습니다.
숫자의 패턴을 발견하는 능력과 간단한 코드를 작성하여 아이디어를 빠르게 테스트하는 능력은 신진 데이터 과학자에게 큰 도움이 됩니다.
이것은 전기 신호에서 숨겨진 패턴을 캡처하기 위해 이러한 장비를 실행하기 위해 실험실 장비와 자동화 스크립팅을 상당히 직접 다루는 전자 엔지니어와 유사합니다.
또는 슬라이드에 세포의 단면 샘플을 만드는 데 능숙하고 현미경으로 자동 테스트를 신속하게 실행하여 자신의 아이디어를 테스트하기 위한 데이터를 수집하는 데 능숙한 젊은 생물학자를 생각해 보십시오.
망토를 사는 곳
요점은 데이터 과학의 전체 기업이 데이터 랭글링, 텍스트 처리, 파일 처리, 데이터베이스 처리, 머신 러닝 및 통계 모델링, 시각화, 프리젠테이션 등과 같은 많은 이질적인 구성 요소로 구성될 수 있지만 아이디어에 대한 빠른 실험은 종종 견고한 수학적 프로그래밍 능력 이상이 필요하지 않습니다.
수학적 프로그래밍 기술을 개발하는 데 필요한 모든 필수 요소를 정확히 지적하기는 어렵지만 일반적인 요소 중 일부는 다음과 같습니다.
- 모듈화된 프로그래밍 습관,
- 다양한 아이디어에 대한 명확한 아이디어 무작위화 기술
- 기본 주제를 읽고 이해할 수 있는 능력 선형 대수학, 미적분학 및 이산 수학 ,
- 기본 지식 기술 및 추론 통계 ,
- 에 대한 기본적인 아이디어 불연속 및 연속 최적화 방법 (예: 선형 프로그래밍)
- 핵심에 대한 기본 숙련도 수치 라이브러리 및 함수 데이터 과학자가 자신의 아이디어를 테스트하기 원하는 언어로 선택
데이터 과학을 위한 필수 실습 수학에서 무엇을 배워야 하는지 논의하는 이 기사를 참조할 수 있습니다.
이 기사에서는 다음을 사용하여 파이의 근사값을 계산하는 매우 간단한 예를 논의하여 수학적 프로그래밍을 설명합니다. 몬테카를로 방식 보드에 임의의 다트를 던지는 것.
(많이) 다트를 던져서 파이 계산하기
이것은 보드에 다트를 던지는 무작위 프로세스를 시뮬레이션하여 파이 값을 계산하는 재미있는 방법입니다. 정교한 수학적 분석이나 공식을 사용하지 않고 순전히 물리적인 에뮬레이션에서 파이의 근사값을 계산하려고 시도합니다(그러나 확률적 ) 프로세스.
이 기술은 몬테카를로 방식 , 그의 기본 개념은 임의의 프로세스를 에뮬레이트하는 것인데, 이 프로세스는 여러 번 반복될 때 흥미로운 수학적 양의 근사치를 생성합니다.
사각형 다트 판을 상상해보십시오.
그런 다음 내부에 원이 그려진 다트판이 모든 측면에 닿습니다.
그런 다음 다트를 던집니다. 무작위로 . 즉, 일부는 원 안에, 일부는 외부에 떨어집니다. 그러나 어떤 다트도 보드 밖으로 떨어지지 않는다고 가정합니다.
다트 던지기 세션이 끝나면 던진 총 다트 수 중 원 안에 떨어진 다트의 비율을 셉니다. 그 숫자에 4를 곱하십시오.
결과 숫자는 파이여야 합니다. 또는 다트를 많이 던진 경우 근사치입니다.
아이디어는 무엇입니까?
아이디어는 매우 간단합니다. 다트를 많이 던지면 다트가 원 안에 떨어질 확률은 원의 면적과 정사각형 판의 면적의 비율입니다. . 기본 수학의 도움으로 이 비율이 파이/4임을 알 수 있습니다. 따라서 파이를 얻으려면 해당 숫자에 4를 곱하면 됩니다.
행렬의 numpy 순위
여기서 핵심은 많은 다트를 던지는 것을 시뮬레이션하여 (원 안에 떨어지는 다트의) 분수를 확률과 동일하게 만들고, 많은 시도의 한계에서만 유효한 주장 이 무작위 이벤트의. 이것은 다수의 법칙 또는 빈도론자의 확률 정의에서 비롯됩니다.
파이썬 코드
ㅏ Python 코드를 설명하는 Jupyter 노트북은 여기 내 Github 저장소에 제공됩니다. . 자유롭게 복사하거나 포크하십시오. 단계는 간단합니다.
먼저 다트의 무작위 던지기를 시뮬레이트하는 함수를 만듭니다.
|_+_|compute_pi_dart_1.py
그런 다음 착지 좌표가 주어지면 다트가 원 안에 떨어지는지 확인하는 함수를 작성합니다.
|_+_|compute_pi_dart_2.py
마지막으로 다수의 다트 던지기를 시뮬레이션하는 함수를 작성하고 누적 결과에서 pi 값을 계산합니다.
|_+_|compute_pi_dart_3.py
그러나 프로그래밍은 여기서 멈추지 않아야 합니다. 우리는 근사값이 얼마나 좋은지, 무작위로 던지는 횟수에 따라 어떻게 변하는지 테스트해야 합니다. 모든 Monte Carlo 실험과 마찬가지로 실험 횟수가 많을수록 근사치가 좋아질 것으로 예상됩니다. .
이것이 데이터 과학 및 분석의 핵심입니다. 예상 출력을 인쇄하고 거기서 멈추는 함수를 작성하는 것만으로는 충분하지 않습니다. 필수 프로그래밍이 완료될 수 있지만 과학적 실험은 가설에 대한 추가 탐색 및 테스트 없이는 여기서 멈추지 않습니다.
www tcm.com/activate
평균을 계산하고 더 나은 근사치를 얻기 위해 많은 수의 무작위 던지기를 몇 번 반복할 수 있음을 알 수 있습니다.
|_+_|compute_pi_dart_4.py
간단한 코드, 풍부한 아이디어
이 기술의 이론과 코드는 매우 간단해 보입니다. 그러나 이 간단한 연습의 겉모습 뒤에는 몇 가지 꽤 흥미로운 아이디어가 숨겨져 있습니다.
함수형 프로그래밍 접근 : 기술에 대한 설명은 모놀리식 코드 블록을 사용하여 코딩할 수 있습니다. 그러나 실제 인간의 행동을 모방하는 간단한 기능으로 작업을 분할하는 방법을 보여줍니다.
- 다트를 던지고,
- 다트의 착지 좌표를 조사하여 원 안에 착지했는지 판단하는 단계,
- 이 과정을 임의의 횟수만큼 반복
대규모 프로그램을 위한 고품질 코드를 작성하려면 이러한 종류의 코드를 사용하는 것이 좋습니다. 모듈화된 프로그래밍 스타일.
응급 행동 : 이 코드의 어디에도 파이 또는 원의 속성과 관련된 공식이 사용되지 않았습니다. 어쨌든 파이의 가치는 다트 다트를 보드에 무작위로 던지고 분수를 계산하는 집단 행동에서 나옵니다. 이것은 예입니다 응급 행동 어느 수학적 패턴은 상호 상호 작용을 통해 유사한 종류의 반복 실험을 많이 반복하여 발생합니다.
확률의 빈번한 정의 : 확률의 정의에는 크게 두 가지 범주가 있으며 치열한 경쟁을 벌이는 두 진영이 있습니다. 빈도주의자와 베이지안 . 빈도주의자로 생각하고 확률을 사건의 빈도(총 무작위 시행 횟수의 일부)로 정의하기 쉽습니다. 이 코딩 연습에서 우리는 확률의 특정 개념이 무작위 시도를 여러 번 반복하여 어떻게 나타나는지 볼 수 있습니다.
확률적 시뮬레이션 : 다트 던지기의 핵심 기능은 그 중심에 랜덤 생성기를 사용합니다. 이제 컴퓨터에서 생성된 난수는 진정한 난수는 아니지만 모든 실용적인 목적을 위해 하나라고 가정할 수 있습니다. 이 프로그래밍 실습에서는 |_+_| 파이썬의 모듈. 이러한 종류의 무작위화 방법의 사용은 데이터 과학 실습에서 사용되는 강력한 방법인 확률적 시뮬레이션의 핵심입니다.
반복 시뮬레이션 및 시각화를 통한 어설션 테스트 : 종종 데이터 사이언스에서는 많은 시뮬레이션/실험을 기반으로 테스트해야 하는 확률적 과정과 확률적 모델을 다룹니다. 따라서 그러한 점근적 용어로 생각하고 데이터 모델 또는 과학적 주장의 유효성을 통계적으로 건전한 방식으로 테스트하는 것이 필수적입니다.
요약(독자를 위한 도전 과제)
우리는 수학적 프로그래밍 습관을 기르는 것이 무엇을 의미하는지 보여줍니다. 본질적으로 그것은 당신이 마음 속에서 개발하고 있는 수학적 속성이나 데이터 패턴을 테스트하기 위해 프로그래밍 측면에서 생각하는 것입니다. 이 간단한 습관은 미래의 데이터 과학자를 위한 모범 사례 개발에 도움이 될 수 있습니다.
간단한 기하학적 정체성, 확률적 시뮬레이션의 개념 및 빈도주의적 확률 정의를 사용하여 예제가 시연되었습니다.
더 많은 도전을 원하신다면,
시뮬레이션하여 파이를 계산할 수 있습니까? 랜덤 워크 이벤트 ?
이 재미있는 연습을 위해 코드를 포크하려면 이 레포를 포크해주세요 .
30년대 광고
hnt 헬륨 구입처
☞ 데이터 과학 A-Z™: 실생활 데이터 과학 연습 포함
☞ 데이터 과학 과정 2019: 완전한 데이터 과학 부트캠프
☞ 데이터 과학 A-Z™: 실생활 데이터 과학 연습 포함