1주차 학습정리_4

Pandas

Groupby

  • SQL groupby와 동일
df.groupby(["시군구명", "지번본번지"])["건물명"].value_counts()
'''
시군구명  지번본번지  건물명        
강릉시   1      세인트존스호텔        16
             효산콘도미니엄        13
             임당시장            7
             명정그린빌라          4
      2      강릉종합운동장         2
                            ..
횡성군   1060   SK강림주유소         1
      1511   횡성(인천방향)휴게소     6
             횡성휴게소(인천방향)     3
      1530   횡성휴게소(강릉방향)    17
             횡성(강릉방향)휴게소     6
Name: 건물명, Length: 9517, dtype: int64
'''

groupby 특징

  • 위와 같이 column을 묶어서 어떤 컬럼을 기준으로 표현할 수 있다.

  • Groupby 명령의 결과물도 결국은 dataframe 두 개의 column으로 groupby를 할 경우, index가 두개 생성된다.

  • unstack() = Group으로 묶여진 데이터를 matrix 형태로 전환해줌

  • swaplevel() = Index level을 변경할 수 있음

dff = df.groupby(["가해자연령층", '발생월'])['사망자수'].sum()
dff , dff.swaplevel()
'''
(가해자연령층  발생월
 20세이하   1      5
         2      6
         3      8
         4      5
         5      9
               ..
 불명      8      0
         9      0
         10     0
         11     0
         12     0
 Name: 사망자수, Length: 96, dtype: int64,
 발생월  가해자연령층
 1    20세이하     5
 2    20세이하     6
 3    20세이하     8
 4    20세이하     5
 5    20세이하     9
               ..
 8    불명        0
 9    불명        0
 10   불명        0
 11   불명        0
 12   불명        0
 Name: 사망자수, Length: 96, dtype: int64)
 '''

Groupby - gropued
추출된 group 정보에는 세가지 유형의 적용이 가능하다

  • Aggregation : 요약한 통계정보를 추출한다.

특정 컬럼에 여러개의 function을 적용할 수 있다.(sum, mean 등)

  • Transformation : 해당 정보를 변환한다.
    Aggregation과 달리 key값 별로 요약된 정보가 아니며 개별 데이터의 변환을 지원한다.
    Column별로 function을 수행하되, 개별로 각각 다른 값이 들어갈 때 효과적
  • Filtration : 특정 정보를 제거하여 보여주는 필터링 기능
    특정 조건으로 데이터를 검색할 때 사용한다.

Pivot Table

  • Index 축은 groupby와 동일함, Column에 추가로 labeling 값을 추가하여, Value에 numeric type 값을 aggregation 하는 형태

  • Crosstab

    • 특허 두 칼럼에 교차 빈도, 비율, 덧셈 등을 구할 때 사용
    • Pivot table의 특수한 형태

Merge
pd.merge(df_a, df_b, on = 기준 column, how = option)

  • 두 개의 데이터를 하나로 합침
  • SQL과 마찬가지로 left, right, outer, inner가 있음

concat

AI Math

vector

norm = 원점에서부터의 거리

L1L_1

두 벡터 사이의 각도
cosθ=<x,u>x2y2cos\theta = \frac{<\mathsf{x}, \mathsf{u}>}{||\mathsf{x}||_2 ||\mathsf{y}||_2}

정사영 proj(x)proj(\mathsf{x}) = xcosθ||\mathsf{x}||\cos\theta

matrix

유사역행렬 (Moore-Penrose 역행렬)

nmn \geq m

유사역행렬을 이용하면 연립방정식의 해를 구할 수 있다.
연립방정식은 행렬을 사용하면 Ax=bA\mathsf{x} = b

또한 유사 역행렬을 이용하면 선형모델로 해석하는 선형 회귀식을 찾을 수 있다.
Xβ=yX\beta = \mathsf{y}

경사 하강법

미분은 함수 f의 주어진점 (x,f(x))(x, f(x))에서의 접선의 기울기를 구한다.
한 점에서의 접선의 기울기를 알면, 어느 방향으로 점을 움직여야 함수값이 증가, 감소하는지 알 수 있다.
미분값을 빼면 함수값이 극소값으로 감소하게 되며, 이를 경사하강법(gradient descent)이라 한다.

경사하강법을 이용해 선형모델을 찾게 되면, 역행렬을 이용하지 않고 얻을 수 있다.

  1. 선형회귀의 목적식은 yXβ2||\mathsf{y} - X\beta||_2

    βkyXβ2=βk{1ni=1n(yij=1dXijβj)2}1/2=XkT(yXβ)nyXβ2\partial_{\beta_k}||\mathsf{y} - X\beta||_2 = \partial_{\beta_k}\{\frac{1}{n}\sum_{i = 1}^n(y_i - \sum_{j = 1}^d X_{ij}\beta_j)^2\}^{1/2} = -\frac{X_k^T(\mathsf{y} - X\beta)}{n||\mathsf{y} - X\beta||_2}

복잡해 보이지만, XβX\beta를 계수 β\beta에 대해 미분한 결과인 XTX^T만 곱해지는 것과 같다.

목적식을 최소화하는 β\beta를 구하는 경사 하강법 알고리즘은 다음과 같다.
β(t+1)=β(t)λβyXβ(t)=β(t)+λnXT(yXβ(t))yXβ(t)\beta^{(t+1)} = \beta^{(t)} - \lambda\nabla_\beta||\mathsf{y} - X\beta^{(t)}|| = \beta^{(t)} + \frac{\lambda}{n}\frac{X^T(\mathsf{y} - X\beta^{(t)})}{||\mathsf{y} - X\beta^{(t)}||}

확률적 경사하강법(SGD)

확률적 경사하강법은 모든 데이터를 사용해서 업데이트하는 대신 데이터 한개 또는 일부를 활용하여 업데이트한다. 볼록하지 않은(non-convex)목적식은 SGD를 통해 최적화 할 수 있다.
전체 데이터 (X,y)(X, y)가 아닌 미니배치((X(b),y(b))(X_{(b)}, y_{(b)})

좋은 웹페이지 즐겨찾기