✏️
LiHang-TongJiXueXiFangFa
  • Introduction
  • 第2章 感知机 - 原始形式
    • 学习策略的推导
    • 梯度下降法的算法过程
    • 梯度下降法的推导过程
    • 梯度下降法的收敛证明
  • 第2章 感知机 - 对偶形式
    • 学习模型的推导
    • 梯度下降法的算法过程
    • 梯度下降法的推导过程
  • 第3章 k近邻算法
    • 模型三要素
    • 构造平衡kd树
    • 用kd树的k近邻搜索
    • kd树的原理与改进
  • 第4章 朴素贝叶斯
    • 模型公式的推导
    • 策略公式的推导
    • 最大似然估计算法过程
    • 贝叶斯估计算法过程
  • 第5章 决策树
    • 决策树的模型
    • 信息增益的算法
    • ID3决策树的生成算法
    • C4.5决策树的生成算法
    • 决策树的剪枝算法
  • 第5章 CART决策树
    • CART树的生成
    • CART树的剪枝
  • 第6章 逻辑回归
    • 二分类逻辑回归模型
    • 多分类逻辑回归模型
  • 第6章 最大熵模型
    • 最大熵的原理
    • 最大熵模型的定义
    • 最大熵的学习过程
    • 根据最大熵的学习过程推导最大熵模型
    • 证明:对偶函数的极大化=模型的极大似然估计
  • 第6章 目标函数最优化问题
    • 改进的迭代尺度法(IIS)
    • IIS算法公式(1)推导
    • A和B的推导
    • 拟牛顿法
  • 第7章 支持向量机
    • 函数间隔与几何间隔
  • 第7章 线性可分SVM
    • 凸二次规划问题推导
    • 支持向量
    • 凸二次规划问题求解
    • 原始问题转换为对偶最优化问题
  • 第7章 线性SVM
    • 原始问题转换为对偶最优化问题
    • 根据 a 求 w 和 b*
    • 支持向量
  • 第7章 非线性SVM
    • 核函数与核技巧
    • 核技巧在SVM中的应用
    • 7.3.2 正定核
    • 常用的核函数
  • 第7章 序列最小最优化算法
    • 选择变量
    • 推导1
    • 推导2
    • 推导3
    • 推导4
    • 推导5:update b
  • 第8章 adaboost
    • 算法过程
    • 训练误差分析
    • 加法模型
    • 前向分步算法
    • adaboost一种特殊的加法模型
  • 第8章 提升树
    • 回归问题提升树的推导
    • 回归问题提升树前向分步算法
    • 一般决策问题梯度提升算法
  • 第9章 EM算法
    • 算法过程
    • Q函数的推导
    • 关于算法的收敛性
    • 高斯混合模型参数估计的EM算法
    • Q函数推导
    • 推导2
  • 第10章 隐马尔可夫模型
    • 定义
    • 概率计算问题 - 直接计算法
    • 概率计算问题 - 前向算法
    • 概率计算问题 - 后向算法
    • 学习问题 - 监督学习
    • 学习问题 - 非监督学习
    • Baum - Welch算法推导
    • 推导1
    • 预测问题 - 近似算法
    • 预测问题 - 维特比算法
    • 维特比算法推导过程
  • 第11章 条件随机场
    • 概率无向图模型
  • 遗留问题
Powered by GitBook
On this page

Was this helpful?

  1. 第2章 感知机 - 对偶形式

梯度下降法的算法过程

Previous学习模型的推导Next梯度下降法的推导过程

Last updated 5 years ago

Was this helpful?

输入: 训练数据集T=(x1,y1),(x1,y1),⋯ ,(xn,yn)T={(x_1, y_1), (x_1, y_1), \cdots, (x_n, y_n)}T=(x1​,y1​),(x1​,y1​),⋯,(xn​,yn​),其中

xi∈Rnyi∈y=−1,+1,i=1,2,⋯ ,n\begin{aligned} x_i \in R^n \\ y_i \in y = {-1, +1}, \\ i = 1, 2, \cdots, n \end{aligned}xi​∈Rnyi​∈y=−1,+1,i=1,2,⋯,n​

学习率为η\etaη 输出: a, b 感知机模型f(x)=sign(∑j=1majyjxj⋅x+b)f(x) = sign(\sum_{j=1}^ma_jy_jx_j \cdot x + b)f(x)=sign(∑j=1m​aj​yj​xj​⋅x+b) 过程: 1. 选取初值a0 = 0, b_0 = 0 2. 在训练集中选取数据(xi,yi)(x_i, y_i)(xi​,yi​) 3. 如果$$y_i(\sum{j=1}^ma_jy_jx_j \cdot x_i + b) \le 0$$,则

{ai←ai+ηb←b+ηyi\begin{cases} a_i \leftarrow a_i + \eta \\ b \leftarrow b + \eta y_i \end{cases}{ai​←ai​+ηb←b+ηyi​​
  1. 转至2,直至训练集中没有错误分类点

对偶形式中训练数据仅以内积的形式出现。为了方便,可以预先将训练集中的特征向量的内积计算出来,并以矩阵的形式存储。这个矩阵就所谓的Gram矩阵(Gram matrix)

G=[xi⋅xj]m×mG = [x_i \cdot x_j]_{m \times m}G=[xi​⋅xj​]m×m​

代码:

def calcGramMaxtrix(X):
    m = X.shape[0]
    gram = np.zeros((m, m))
    for i in range(m):
        for j in range(i, m):
            gram[i, j] = X[i].dot(X[j])
            gram[j, i] = X[i].dot(X[j])
    return gram

def calcI(X, y, a, b, i, gram):
    #print (X.shape, y.shape, a. shape)
    sum = 0
    for j in range(X.shape[0]):
        sum += a[j] *y[j] * gram[j, i]
    return (sum + b)*y[i]

# 感知机原始形式
def perceptron(X, y, eta):
    a, b = np.zeros(X.shape[0]),0
    gram = calcGramMaxtrix(X)
    isFinished = False
    while not isFinished:
        isFinished = True
        for i in range(X.shape[0]):
            if calcI(X, y, a, b, i, gram) <= 0:
                isFinished = False
                a[i] += eta
                b += eta * y[i]
    def f(x):
        sum = 0
        for j in range(X.shape[0]):
            sum += a[j] *y[j] * X[j].dot(x)
        return sum + b
    return a, b, f
https://github.com/windmissing/LiHang-TongJiXueXiFangFa/blob/master/Chapter2/perceptron-2.ipynb