1.PPT中定理的证明

P:证明,当w0=0w0=0w_0=0时,经过TTT次迭代,有以下关系式:

wfT‖wf‖wT‖wT‖≥T⋅constant" role="presentation">wTf‖wf‖wT‖wT‖≥T‾‾√⋅constantwfT‖wf‖wT‖wT‖≥T⋅constant\begin{equation}\frac{w_f^T}{\|w_f\|}\frac{w_T}{\|w_T\|}\ge\sqrt{T}\cdot constant\end{equation}

  • 下图中通过wfwfw_f与wtwtw_t这两个向量之间求内积说明wtwtw_t与wfwfw_f之间是越来越接近的。见图1:
  • 但是内积变大有可能是向量的坐标值的变化,要证明两个向量变的更加接近,还需解决向量长度的问题。见图2:

    要证明wTf‖wf‖wT‖wT‖≥T‾‾√⋅constantwfT‖wf‖wT‖wT‖≥T⋅constant\begin{equation}\frac{w_f^T}{\|w_f\|}\frac{w_T}{\|w_T\|}\ge\sqrt{T}\cdot constant\end{equation}并求出constantconstantconstant,首先,
    根据图2,‖wt+1‖2≤‖wt‖2+maxn‖ynxn‖2‖wt+1‖2≤‖wt‖2+maxn⁡‖ynxn‖2\|w_{t+1}\|^2\le\|w_t\|^2+\mathop{max}\limits_{n}\|{y_n}{x_n}\|^2,那么 ‖wt+T‖2≤‖wt‖2+T⋅maxn‖ynxn‖2‖wt+T‖2≤‖wt‖2+T⋅maxn⁡‖ynxn‖2\|w_{t+T}\|^2\le\|w_t\|^2+T\cdot\mathop{max}\limits_{n}\|{y_n}{x_n}\|^2,
    当t=0t=0t=0,并且令w0=0w0=0w_0=0时,上式变为,‖wT‖2≤0+T⋅maxn‖ynxn‖2‖wT‖2≤0+T⋅maxn⁡‖ynxn‖2\|w_{T}\|^2\le0+T\cdot \mathop{max}\limits_{n}\|{y_n}{x_n}\|^2
    ∴∴\therefore1‖wT‖≥1T√⋅maxn‖ynxn‖1‖wT‖≥1T⋅maxn⁡‖ynxn‖\frac{1}{\|w_{T}\|}\ge\frac{1}{\sqrt T\cdot \mathop{max}\limits_{n}\|{y_n}{x_n}\|}
    根据图1, wTfwt+1≥wTfwt+minn ynwTfxnwfTwt+1≥wfTwt+minn⁡ynwfTxnw_f^T w_{t+1}\ge w_f^T w_t+\mathop{min}\limits_{n}\space y_nw_f^Tx_n,那么wTfwt+T≥wTfwt+T⋅minn ynwTfxnwfTwt+T≥wfTwt+T⋅minn⁡ynwfTxnw_f^T w_{t+T}\ge w_f^T w_t+T\cdot\mathop{min}\limits_{n}\space y_nw_f^Tx_n,当t=0t=0t=0并且w0=0w0=0w_0=0时,则得到,wTfwT≥T⋅minn ynwTfxnwfTwT≥T⋅minn⁡ynwfTxnw_f^T w_{T}\ge T\cdot \mathop{min}\limits_{n}\space y_nw_f^Tx_n
    ∴∴\thereforewTfwT‖wf‖≥T⋅minn ynwTfxn‖wf‖wfTwT‖wf‖≥T⋅minn⁡ynwfTxn‖wf‖\frac{w_f^T w_{T}}{\|w_f\|}\ge\frac{T\cdot \mathop{min}\limits_{n}\space y_nw_f^Tx_n}{\|w_f\|}
    将上述两式相乘,
    ∴∴\thereforewTfwT‖wf‖‖wT‖≥T‾‾√minn ynwTfxn‖wf‖maxn ‖ynxn‖wfTwT‖wf‖‖wT‖≥Tminn⁡ynwfTxn‖wf‖maxn⁡‖ynxn‖\frac{w_f^T w_{T}}{\|w_f\|\|w_T\|}\ge\sqrt T\frac{\mathop{min}\limits_{n}\space y_nw_f^Tx_n}{\|w_f\|\mathop{max}\limits_{n}\space \|y_nx_n\|}
    由此也可以求出constantconstantconstant的表达式。

2.PLA代码实现

  • 数据下载,放到与代码同级目录下,linux下打开终端运行:
wget https://raw.githubusercontent.com/lxrobot/lxrobot-s-code/master/train_data.txt
  • 代码:
#!/usr/bin/env python2
# -*- coding: utf-8 -*-
"""
Created on Sat Jul 14 17:59:47 2018@author: lx
"""
from __future__ import division
import pandas as pd
import numpy as np
import randomdef getDate(filename):df=pd.read_csv(filename,delim_whitespace=True,names=['x0','x1','x2','x3','y'])x=np.asarray(df)random.shuffle(x)x_train=x[0:300,:-1]x_test=x[300:400,:-1]    y_train=x[:300,-1]y_test=x[300:400,-1]return x_train,y_train,x_test,y_test
def sign(x):return -1 if x<0 else 1;
def naive_PLA(X,Y,w,b,alpha,max_steps):num=len(X)flag=1step=0for i in xrange(max_steps):flag=1for j in xrange(num):y_=w.dot(X[j])+bif sign(y_)!=Y[j]:print "The loss of %d step is %5.5f."%(i,y_*Y[j])flag=0w+=alpha*Y[j]*X[j]b+=alpha*Y[j]breakelse:continueif flag==1:step=ibreakreturn w,b,step
def getAccuracy(X,Y,w,b):y_=[]for i in range(len(Y)):y0=sign(X[i].dot(w)+b)y_.append(y0)y_=np.array(y_,dtype=float)correct=np.flatnonzero(y_-Y)num=len(Y)return y_,len(correct)/numif __name__=='__main__':filename='train_data.txt'x_train,y_train,x_test,y_test=getDate(filename)
#   w=np.random.random((4))
#   b=random.random()w=np.zeros((4,))b=0alpha=0.00001max_step=100000w,b,step=naive_PLA(x_train,y_train,w,b,alpha,max_step)print "The actual training step is {}".format(step)y_,acc=getAccuracy(x_test,y_test,w,b)print y_[:15]print y_test[:15]print "The accuracy of PLA is %2.4f%%."%((1.0-acc)*100)

机器学习基石PLA相关相关推荐

  1. 台湾大学林轩田教授机器学习基石课程理解及python实现----PLA

    最近在班主任的带领下,开始观看台湾大学林轩田教授的机器学习基石课程,虽然吧,台湾人,汉语说得蛮6,但是还是听着怪怪的,不过内容非常值得刚刚入门的机器学习 小白学习,话不多说,直接进入正题. 1.基本介 ...

  2. 台湾大学林轩田机器学习基石课程学习笔记7 -- The VC Dimension

    红色石头的个人网站:redstonewill.com 前几节课着重介绍了机器能够学习的条件并做了详细的推导和解释.机器能够学习必须满足两个条件: 假设空间H的Size M是有限的,即当N足够大的时候, ...

  3. 机器学习基石第三讲:types of learning

    博客已经迁移至Marcovaldo's blog (http://marcovaldong.github.io/) 刚刚完毕机器学习基石的第三讲.这一讲主要介绍了机器学习的分类.对何种问题应该使用何种 ...

  4. 台大机器学习基石学习笔记

    台大机器学习基石学习笔记 标签(空格分隔): 机器学习 目录 台大机器学习基石学习笔记 目录 Lecture 1 The Learning Problem Course Introduction Wh ...

  5. 机器学习基石05:训练与测试(Training versus Testing)

    上一篇文章介绍了机器学习的可行性.本文将讨论机器学习的核心问题,严格证明为什么机器可以学习. 系列文章 机器学习基石01:机器学习简介 机器学习基石02:感知器算法(Perceptron Algori ...

  6. 机器学习基石1(ML基本概念和VC dimension)

    文章目录 一.什么是机器学习? 二.什么时候可以使用机器学习? 三.感知机perceptron 四.机器学习的输入形式 五.机器真的可以学习吗? 六.vc dimension 一.什么是机器学习? 其 ...

  7. 太赞了!NumPy 手写所有主流 ML 模型,由普林斯顿博士后 David Bourgin打造的史上最强机器学习基石项目!...

    关注上方"深度学习技术前沿",选择"星标公众号", 资源干货,第一时间送达! 用 NumPy 手写所有主流 ML 模型,普林斯顿博士后 David Bourgi ...

  8. NumPy 手写所有主流 ML 模型,由普林斯顿博士后 David Bourgin打造的史上最强机器学习基石项目!...

    关注上方"深度学习技术前沿",选择"星标公众号", 资源干货,第一时间送达! 用 NumPy 手写所有主流 ML 模型,普林斯顿博士后 David Bourgi ...

  9. 台湾大学林轩田机器学习基石课程学习笔记1 -- The Learning Problem

    红色石头的个人网站:redstonewill.com 最近在看NTU林轩田的<机器学习基石>课程,个人感觉讲的非常好.整个基石课程分成四个部分: When Can Machine Lear ...

最新文章

  1. 2021-08-29概率论—第四章随机变量的数字特征
  2. HTML5中各种标签总结(body标签)
  3. BZOJ3434 [Wc2014]时空穿梭
  4. MySQL(6)---数据库 管理
  5. [Java] 蓝桥杯ADV-135 算法提高 三角形面积
  6. OSS实现多文件多线程的断点下载(java)
  7. 嵌入式软件设计之设计模式
  8. git push报错:fatal: unable to access ‘https://XXX.git/‘: Failed toconnect to github.com port 443
  9. 一个程序员和一个黑客群的故事
  10. dsp中C语言线性缓冲,TI C64x+ DSP CACHE 一致性分析与维护
  11. 国外CPA广告联盟经验分享
  12. 程序员 你读过的书,藏着自己的命运 | 技术类(一)
  13. iOS微信网页长按图片问题解决
  14. Android 中怎么重启APP、重启系统
  15. 2021年度总结 -- 万粉博主的写作荣誉分享,写博客是一种心灵的修行
  16. 西部数据硬盘序列号查询网站
  17. 拉结尔如何在电脑上玩 拉结尔模拟器玩法教程
  18. Y2K Accounting Bug poj-2586
  19. 【Linux】修改文件或文件夹权限的命令
  20. 计算密码子频率的代码R语言_科学网—R语言终止密码子统计 - 熊荣川的博文

热门文章

  1. bzoj 3450: Tyvj1952 Easy(概率DP)
  2. bzoj 4236: JOIOJI(map+pair)
  3. multisim仿真D触发器设计的模六计数器并在数码管显示0-5
  4. SCUT - 290 - PARCO的因数游戏 - 博弈论
  5. 计蒜客 蒜头君的数轴
  6. [BZOJ1572] [Usaco2009 Open]工作安排Job(贪心 + 堆)
  7. FJNU 1196 汪老司机(DP or 建图+最短路)
  8. 第1天线性表顺序存储
  9. WCF编程系列(六)以编程方式配置终结点
  10. 在WPF中自定义你的绘制(二)