代价函数

机器学习 - 图1其中机器学习 - 图2

  1. def computeCost(X, y, theta):
  2. inner = np.power(((X * theta.T) - y), 2)
  3. return np.sum(inner) / (2 * len(X))

归一

机器学习 - 图3

学习率

机器学习 - 图4

正规方程

机器学习 - 图5
机器学习 - 图6

  • 不需要学习率
  • 一次算出
  • n小于10000可以求逆
  • 只用于线性模型
  • 机器学习 - 图7不可逆很少发生

    1. import numpy as np
    2. def normalEqn(X, y):
    3. #np.linalg.div求矩阵的逆
    4. theta = np.linalg.inv(X.T@X)@X.T@y #X.T@X等价于X.T.dot(X)
    5. return theta

    S型函数

    机器学习 - 图8

    1. import numpy as np
    2. def sigmoid(z):
    3. return 1 / (1 + np.exp(-z))

    判定边界

  • 常规的一条直线划分:一次方

  • 圆形:二次方

    逻辑回归的代价函数

    和线性回归不同,带入机器学习 - 图9后的代价函数是非凸函数,有很多局部最小值,重定义:
    机器学习 - 图10
    机器学习 - 图11
    机器学习 - 图12
    机器学习 - 图13

    1. import numpy as np
    2. def cost(theta, X, y):
    3. theta = np.matrix(theta)
    4. X = np.matrix(X)
    5. y = np.matrix(y)
    6. first = np.multiply(-y, np.log(sigmoid(X* theta.T)))
    7. second = np.multiply((1 - y), np.log(1 - sigmoid(X* theta.T)))
    8. return np.sum(first - second) / (len(X))

    一对多

  • 将剩余的归于负类

    过拟合

  • 高次项导致

  • 惩罚
  • 不惩罚机器学习 - 图14

机器学习 - 图15
机器学习 - 图16

减少误差

  • 更多训练杨本
  • 减少特征值
  • 尝试更多特征
  • 增加多项式特征
  • 减少正则化程度
  • 增加正则化程度

SVM

PCA

协同过滤

随机梯度