def linear_gradient(x, y, theta):
    """
    특정 데이터 (x, y)에서 기울기와 y절편에 대한
    편미분 벡터 리턴

    :param x: 실제 데이터
    :param y: 실제 데이터
    :param theta: [theta1, theta2] 벡터(리스트). [기울기, y절편]
    """
    slope, intersect = theta
    y_hat = slope * x + intersect  # 예상값
    error = y_hat - y  # 오차
    # error**2을 최소화하는 slope(기울기), intersect(절편) 찾기
    # 점(x,y)에서 [기울기에 대한 편미분, 절편에 대한 편미분]
    gradient = [error * x, error]
    return gradient