※ 학습 노트


이런 강의가 있다.


---


Data science from MIT 

 

Computer Science의 탑 1위 대학인 MIT 공대의 "Introduction to Computational Thinking and Data Science" 수업 영상 및 강의 자료를 한국어로 번역하여 여러분께 제공합니다.

해당 강좌에서는 데이터 과학이라는 분야를 시작하기 위한 알고리즘과 통계학 그리고 기계학습의 내용을 조금씩 나눠서 다루고 있으며, 프로그래밍 실습보다는 문제 해결방법 대해서 집중적으로 공부합니다. 본격적인 데이터 과학 분야에 진입하기에 앞서, 해당 분야를 배우기 위해서는 어떤 것을 더 학습해야 하는지 체험할 수 있는 강의입니다.


---


Edwith에서 수강할 예정이지만, MIT 강의라고 하니 글로벌 플랫폼에 업로드 되어있을 것 같아 찾아보았다.

>>edX와 Youtube에 있는 듯.

(Coursera에서 the most popular 과정 중 하나인 'Python for everybody(모두를 위한 파이썬)' 도 Edwith에 한글화된 버전으로 볼 수 있다.)





* 해당 분야를 배우기 위해서 어떤 것을 더 학습해야 하는지 체험할 수 있는 강의


학습해야할 새로운 영역들은 계속해서 생겨나는데, 

범위가 처음부터 정해져있지도 않거니와 계속해서 확장하고, 변화한다.

고등학교 때처럼 정해진 교과, 정해진 범위 내에서 체계적으로 공부하기가 어렵다.

(그때가 좋은 거였...다고 말하면 안되겠지..! ㅋ 그때는 그때만의 고통과 괴로움이 있었으니까-)


올해는 수행해야할 과제가 있어서 이것 저것 닥치는 대로 찾아보았다.

지금도 아주 초초초초보지만, 그래도 아주 처음보다는 들은 것, 본 것들이 생겼다.

학습 분야의 용어에 익숙해지는 것도 중요한 것 같다.


계속해서 업데이트하고 수정해야겠지만, 학습자만의 체계와 체크리스트를 만들어가는 것도 학습의 방법 중에 하나일 것 같아서,

조금씩 정리해보기로 했는데....



* 선수조건


1. 모두를 위한 프로그래밍: 파이썬

2. 모두를 위한 프로그래밍: 파이썬 자료구조

3. 모두를 위한 프로그래밍: 파이썬을 이용한 데이터베이스 처리

4. CS50 x edwith

5. Introduction to Computer Science and Programming in Python



그런데, 당황스럽게도 선수조건이 왜이렇게 많지...! ㅋㅋㅋ 해당 분야를 배우기 위해 어떤 것을 더 학습해야하는지 체험할 수 있는 강의라고 하여 아주아주 생초보자를 위한 것인줄 알았건만.!


다행히, 모두를 위한 프로그래밍을 학습한 후이긴하지만,

불행히, 이미 시간이 지나기도 했고, 학습을 기록해놓지를 않았기에, 

선수 조건인 과정부터 점검해보기로 하였다.


그런데 맙소사 ㅠ 내가 이미 들은 줄 알았던 과정도 '모두를 위한 프로그래밍: 파이썬' 만이다. 

갈길이 멀군



[모두를 위한 프로그래밍: 파이썬 자료구조] 부터 시작한다.

(Chapter 6~8)


*** 알아야할 것 : 타입 변환, 인덱싱, len 함수, for 루프


* len 함수 : 문자의 길이 >>>리스트가 몇 개의 항목을 가지고 있는지 확인 가능

* print(s[0:4]) - 4번째 인덱스는 읽지 않음!

  print(s[:2]) - 첫 번째나 마지막 인덱스 생략할 경우, 시작 또는 마지막까지 가정하고 반환

* strings는 object이고 object는 method라는 것을 가지고 있음

* replace (문자바꾸기)

* lstrip (왼쪽 공백 없애기), rstrip (오른쪽 공백 없애기), strip (양쪽 공백 없애기)

* startwith (시작 문자열 찾기)

* 파이썬3에서부터는 모든 내부 문자열이 유니코드 (한국어가 예시로 나온다!)

  유니코드 연산이어도 문자열로 인식. (파이썬3에서는 문자열이지만 유니코드 상수가 별개로 있었고 다른 자료형으로 인식함)

* open() 파일을 여는 것

\n >>> 다음 줄로

* read()

통상 프로그래밍은 알고리즘과 자료구조로 나눌 수 있음

   - 알고리즘: 특정 문제를 해결 하기 위한 규칙 또는 단계

   - 자료구조: 컴퓨터 내에서 자료를 구조화 하는 특별한 방식


* list(리스트)

  1. 리스트의 각 항목들은 '[]'로 둘러싸임
  2. 리스트 내의 항목들에 대한 구분은 ,(콤마)로 구분
  3. 리스트 내에 또 다른 리스트를 내포할 수 있음
  4. 비어 있는 리스트를 만들 수 있음
  5. 리스트의 항목들에 인덱스 값으로 접근 가능.
  6. 리스트의 항목들은 바뀔 수 있음


* range() >>> 인자로 전달되는 값에 따라서 숫자로 이루어진 리스트를 반환


* .list() >>> 리스트 만들기

* .append('book') >>리스트에 추가

* .sort() >>> 정렬

* .split() >>> 공백을 찾아 조각을 반환

  .split(';') >>> 세미콜론 기준으로 Split해주지 않으므로 별도 정의


* 컬렉션(collection)리스트나 딕셔너리 같은 변수를 가지는 상황. 하나의 정보보다는 여러 개의 정보를 저장할 때 사용

* 리스트(list): 순서대로 정렬한 컬렉션. 데이터를 추가하면 항상 리스트의 끝에 추가되고 0부터 n-1번 위치까지 순서대로 n개의 원소가 저장됨

딕셔너리(dictionary)

- 순서 없음. 대신 키(Key) 존재

-ooo={} 또는 dict()라는 생성자를 통해 생성

- {중괄호} 안에 Key:Value 형태로 저장


* get 함수 : 

counts.get(name,0)


>>>딕셔너리에 name이라는 키가 존재할 경우 값을 불러오고,

그렇지 않을 경우에는 딕셔너리의 name이라는 키에 0이라는 값을 갖는 데이터를 추가하라는 의미

if name in counts:

   x = counts[name]

else :

   x = 0 

 x = counts.get(name,0) 


* items 메소드

keys, values 메소드로는 딕셔너리의 키와 값의 쌍을 얻음 >>> items 메소드를 사용하면 됨

items 메소드를 실행하면 '튜플(tuple)'이라는 자료 구조 안에 키와 값이 쌍을 이루어 저장된 리스트가 반환됨


* Tuples(튜플) 리스트와 거의 비슷하지만 변경불가능(immutable), 즉 값 변경 (정렬, 값 추가, 순서 변경) 불가하다는 특성에서 차이가 있음

그러나 리스트보다 훨씬 효율적으로 작동함 (용량 적게 차지, 근 빠름)

* 내장된 함수 차이

l = list()

 dir(l)

# ['append', 'count', 'extend', 'index', 'insert', 'pop', 'remove', 'reverse', 'sort']

  t = tuple()

 dir(t)

# ['count', 'index']


* sorted 함수 :  딕셔너리는 키 기준으로 정렬된 값이 나옴

반응형

역시 사람은 물어봐야한다.

끝없이 헤매고 있다가 작년에 피플 애널리틱스를 시작한 동료에게 하소연하였더니 로지스틱 회귀분석을 찾아보라고 한다.

 

※학습노트

* 로지스틱회귀분석(logistic regression analysis)
  - 이항 로지스틱 회귀(binominal regression analysis) 종속변수의 범주 수가 2개 일 경우 
  - 다항 로지스틱 회귀(binominal regression analysis) 종속변수의 범주 수가 3개 이상일 경우
 
* 큰 값 (연구 관심 결과인 '있음')에 해당하는 경우로 분류될 확률
* Odds(비) Odds ratio (비의 비율) 로짓(Odds에 로그)

 

 

12-1. 로지스틱 회귀분석이란? - 로지스틱 회귀분석 (1)

* OLS 회귀 분석은 종속 변수가 nominal & continuous여야 함  

* 이항변수가 종속변수인 경우 OLS를 적용하였을 때 무엇이 문제인지 확인하는 예시를 다룸 

 > 기존 회귀계수를 해석하는데 문제가 있음 (x가 1증가할 때 y가 b만큼 증가한다고 할 수 없음), 0도 아닌 1도 아닌 예측값이 나옴

* 우리가 기대하는 것은 독립 변수가 1증가할 때 종속 변수가 1이 될 확률 >>> 엇, 내가 찾는 거 맞는 것 같다

 

12-2. 로짓과 로그오즈비란 - 로지스틱 회귀분석 (2)

* 종속변수가 이항변수인 경우 예) 성공/실패, 업/다운, 생존/죽음, Yes/No 등

로지스틱 회귀분석은, 

  - 이항 변수를 로짓이라는 개념을 통해 연속 변수처럼 바꾸어줌

  - 확률 개념 해석 가능

*오즈(Odds) = 확률 / (1-확)

*오즈비(Odd ratio)

*마이너스 무한대<로짓 = 로그(오즈비)<플러스 무한대

 

12-3.로지스틱 회귀분석을 해석해보자 - 로지스틱 회귀분석 (3)

* 일반 OSL & 로지스틱 분석 결과는 데이터의 유의미한 정도는 거의 비슷하게 나오나 해석이 다름

* estimate (회귀계수값)의 로그를 벗겨~

 엑셀에서 함수 exp(회귀계수) = 오즈비(odds ratio)

   - (오즈비-1) x 100은 %증가/감소로 해석 가능

*독립변수가 1단위 증가할때와 1단위 감소할때의 해석은 다름
 - {(1/(오즈비-1))=1} x 100으로 해석
 
*모든 독립변수 증감에 대해 종속 변수가 1(Y=1)이 되는 확률로 해석
 
12-3.로지스틱 회귀분석을 실습해보자 - 로지스틱 회귀분석 (4)
* 내가 가지고 있는 데이터로 따라해봐야지!

* jamovi > analysis > regression > binominal logistic regression

* 숫자인데 text로 읽히는 경우도 있어서 필요 시 데이터 속성 변경

  - norminal (명목척도), ordinal (순서척도), continuous (연속척도)
반응형



두 집단을 비교하는데에 t-test가 적합하다고 하여 번갯불에 콩구워먹듯이 공부를 했는데.

공부를 다하고도 몰랐다. 내가 가지고 있는 데이터에는 적합하지 않다는 것을.


자, 이제 공부했으니 데이터 분석을 해볼까, 하고 프로그램을 열고 가만- 생각해보니 뭔가 이상하다.

내가 가지고 있는 데이터(강점/보완점)는 명목 변수다.


값이 이항분포일 때에는 (유/무) t-test로 분석하기 어렵고 chi-square test를 해야한다고 한다.

치-스퀘어 테스트? 

,,, 카이 스퀘어 테스트였다. 


정말 울고 싶군 ㅋ





다행히, t-test 를 공부했던 유튜브 채널에 카이 스퀘어 테스트도 있다!


※학습노트

9-1. 카이제곱 검정에 대해 알아보자

* 음, 그런데 여기서는 독립 변수, 종속 변수 모두 명목 변수일 때 사용하는 것이 카이제곱 검정이라고 한다...!

  내가 가진 데이터의 독립 변수는 연속 변수인데 (...) 이미 시무룩

* 관찰된 빈도가 기대되는 빈도와 의미있게 다른지 검증하기 위해 사용

* 관찰 빈도는 자료, 기대 빈도는 개념적으로 기대하는 수치와 유사한 개념

* 테이블이나 그래프를 볼일은 많지 않음 


9-2. 일원 카이제곱 검정을 계산해 보자

* 일원 카이제곱 검정 (One-way) 

* 검정의 유의성이 의미하는 것은 무엇인가 다르다, 정도

  - 그래서 카이제곱 검정을 적합도라고 부르기도 한다.


9-3. 이원 카이제곱 검정을 계산해 보자3

* 이원 카이제곱 검정 (Two-way) 

* 두 변수 모두 명목 변수일 때, 두 변수 사이에 어떠한 연관성이 있는지 확인해보는 것

* 카이제곱 감정은 인과관계가 아니고 상관관계 (연관성이 있다,)

* 기대 빈도 = (행합계 x 열합계) / 총합계


9-4. 카이제곱 검정을 넘어서

의료계에서 많이 쓰이는 편 

* 각 셀의 기대빈도가 5이상이어야 함

*...오...먼말인지 몰라지는....모르겠다 아무튼, 한계가 많은 검정임...안되겠다...

* 상대위험도는 두 확률의 차이가 아니라 비율로 나타냄 

* 오즈(odds)란 어떤 확율이 일어날 확율 / 일어나지 않을 확율 (행열을 바꿔서 계산해도 오즈비는 거의 비슷) 

* 두 명목 척도인 변수가 연관성이 있을 경우, 상관계수를 구하는 방법 > Contingency coefficient (분할계수/c계수), Phi and Cremer's V

  변수가 순위 척도 & 연관성이 있을 경우, 상관계수를 구하는 방법 > Kendall's tau-b, Gamma


9-5. 카이제곱 검정을 실습해보자

* Jamovi > frequency에 있음

* 결과가 유의하게 나와도 통계적으로 유의미한 설명하기 어려움


ㅠ-ㅠ 큰일났다! 이것도 아닌 것 같다...

반응형

 

이터 분석력 0인데 숙제는 해야하는 상태

 

조직 특성(구성)에 따라 리더십 진단 결과에 차이가 있는지 분석하기로 하였는데, 

리더십 진단 결과가 점수가 아니라 강점과 보완점이다.

 

하여, 특정 리더십 역량이 강점 또는 보완점으로 나온 집단과 그렇지 않은 집단을 비교해보기로 하고

두 집단을 비교하는 t-test를 공부해보기로함 

 

뭐하고 있는지도 모르겠으나, 

하다보면...길이 나오려나...ㅠ

 

 

 

 

우선 유튜브에서 듣기 편한 영상을 찾았고, 2편까지 보고, 정리하면서 보면 좋을 것 같아서 블로그를 열었다

 

학습하기에 좋은 영상은 

- 속도가 적절하고 (영상 속도 조절만으로는 어려운, 말의 템포 &스타일이 있다)

- 내용에 차근차근 접근하며 (나는 진짜 똥멍청이급 초보니까)

- 예시를 잘 들어주는 특징이있는 것 같다

 

아무튼, ※학습노트

3-3. 너무 빨리 먹으면 체합니다 -t-test(3) = z-test

* z-text & t-test는 본질적으로 같음. z-text는 모집단, t-test는 표본집단을 대상으로 함

 

* 정규 분포

   - 정규 분포의 아래 면적은 확률을 의미

   - 표준 정규 분포는 평균이 0이고 표준 편차가 1인 정규 분포 

   - 정규 분포를 표준 정규 분포로 바꾼 후,

     z-score = (값-평균)/표준편차

   - 표준정규분포표의 확률표 참고

 

* t-test의 질문 (3-2 복습)

  - A대학 남학생 평균 키 vs. B대학 남학생 평균키가 우연히 같은 확률은? 

    . 두 집단의 차이가 표준편차보다 현저히 작으면 ㅡ 그 차이에 큰 의미를 둘 수 없음

    . 두 집단의 차이가 표준편차보다 현저히 크면 ㅡ 그 차이에 큰 의미를 둘 수 있음

  - 우연히 발생했을 확률 = 정규 분포 면적을 활용한 확률

  - 다만, t-test는 정규분포가 아닌 다른 분포 곡선을 사용 

 

3-4 단순하지만 헷갈릴 수도... - t-test (4)

* 양측 검정 vs. 단측 검정

   - 양측 검정과 단측 검정의 차이는 대립 가설의 차이에서 발생

   - 양측은 0보다 크거나 작은 두 가지를 모두 포함하므로 분포 곡선의 양쪽 꼬리의 면접의 합이 5%에 들어갈만큼 크거나 작아야함

   - 단측은 0보다 크다(우측검정)와 0보다 작다(좌측검정)의 두 가지로 나누어볼 수 있고 한쪽 꼬리의 면적이 5%에 들어갈만큼 크거나 작아야 한다

   - 0을 기준으로 양측이든 단측이든 95%안에 들어오면 두 평균값의 차이는 우연히 발생한 것

 

3-5 이제야 t-test를 하다니 - t-test (5)

* t-value = 두 집단의 평균 차이 / (표본의 표준 편차 / 표본의 갯수)

  - 표본의 갯수가 많아지리 수록 t-value는 높아지고 정규 분포에 가까워짐 

* df(degree of freedom) = 표본 개수 - 1

* t-table에서 df와 confidence level의 critical value를 찾아 t-value와 비교 

 

3-6 종류별로 알아보자 - t-test (6)

* t-test의 종류 : two-sample t-test, one-sample t-test, paired t-test    

* 계산은 컴퓨터에 맡기자!!! >> 아주 마음에 드는 부분ㅋ

 

3-7 t-test를 컴퓨터에서 실습해보자 - t-test (7)

*Jamovi www.jamovi.org

 - 영문으로 작성된 데이터만 사용 가능

 

내일 데이터 분석해보면 뭐라도 나오겠지.

희망을 가지고 여기까지.

반응형

+ Recent posts