感知机时二分类的线性分类模型,其目的就是寻找通过训练将实例划分为正负两类的分离超平面,其采用的策略是根据现有的超平面和输出值来识别出误分类点,也就是说y*(w*t+b)<=0,并采用随机梯度下降的方法不断修改参数,直至没有误分类点。其实质是最小化误分类点到超平面的距离总和。
具体感知机学习的具体算法,包括原始形式和对偶形式。实验采用的是《统计学习方法》中的例2.1:
1)原始形式代码如下:
#include <iostream>
using namespace std;
int x[3][2] = {
{3, 3},
{4, 3},
{1, 1}
};
int y[3] = {1, 1, -1};
int w[2] = {0};
int b = 0;
int L(int y, int* x)
{
int temp = (w[0] * x[0] + w[1] * x[1] + b) * y;
if (temp <= 0)
return 1;//存在错误点
else
return 0;
}
int main(void)
{
int j = 1;
while (true)
{
cout << j++ << " ";
int i;
int num = 0;
for (i = 0; i < 3; i++)
{
if (L(y[i], x[i]) == 1)
{
cout << "error point:";
cout << "x" << i <<" w:";
int j;
for (j = 0; j < 2; j++)
{
w[j] += y[i] * x[i][j];
cout << w[j] << " ";
}
b += y[i];
cout << "b:" << b <<endl;
num++;
break;
}
}
if (num == 0)
break;
}
return 0;
}
实验结果:
1 error point:x0 w:3 3 b:1
2 error point:x2 w:2 2 b:0
3 error point:x2 w:1 1 b:-1
4 error point:x2 w:0 0 b:-2
5 error point:x0 w:3 3 b:-1
6 error point:x2 w:2 2 b:-2
7 error point:x2 w:1 1 b:-3
这跟p30的结果是一样的,不过要注意的是,在极小化的过程中,为了达到书中的结果,选择的误分类点都是第一次遇到的误分类点,而实际上在选择误分类点时应该采用随机的方法来选取,而且每次梯度下降的时候并不是对所有误分类点进行梯度下降,而是只对随机选择的一个误分类点进行梯度下降。结果与误分类点的选择有关。
2)对偶形式,代码如下:
#include <iostream>
using namespace std;
int x[3][2] = {
{3, 3},
{4, 3},
{1, 1}
};
int y[3] = {1, 1, -1};
int b = 0;
int a[3] = {0};
int G[3][3] = {
{18, 21, 6},
{21, 25, 7},
{6, 7, 2}
};//Gram matrix
int L(int j)
{
int temp = 0;
for (int i=0 ;i < 3; i++)
{
temp += a[i] * G[i][j] * y[i];
}
temp += b;
temp *= y[j];
if (temp <= 0)
return 1;//存在错误点
else
return 0;
}
int main(void)
{
int j = 1;
while (true)
{
cout << j++ << " ";
int i;
int num = 0;
for (i = 0; i < 3; i++)
{
if (L(i) == 1)
{
cout << "error point:";
cout << "x" << i <<" a:";
int j;
a[i] += 1;
for (j = 0; j < 3; j++)
{
cout << a[j] << " ";
}
b += y[i];
cout << "b:" << b <<endl;
num++;
break;
}
}
if (num == 0)
break;
}
return 0;
}
实验结果如下:
1 error point:x0 a:1 0 0 b:1
2 error point:x2 a:1 0 1 b:0
3 error point:x2 a:1 0 2 b:-1
4 error point:x2 a:1 0 3 b:-2
5 error point:x0 a:2 0 3 b:-1
6 error point:x2 a:2 0 4 b:-2
7 error point:x2 a:2 0 5 b:-3
结果与1)相同。(注:书中p35,k=4的数据有误,应该为a1=1 a2=0 a3=3 b=-2)
分享到:
相关推荐
标题 "machine-learning-ex5_macinelearning_coursera_machinelearning_" 暗示这是一个关于机器学习的课程作业或练习,可能来自于Coursera上的Andrew Ng教授的《机器学习》课程。"ex5"通常表示这是课程中的第五个...
3. **神经网络与感知器**(machine-learning-ex3) 这部分涉及了多层神经网络的训练,包括前向传播和反向传播算法。学习者将理解神经网络如何模拟人脑的工作方式,以及如何通过反向传播调整权重以优化模型性能。 4...
使用多种方法完成MNIST分类任务 Python 3.6 Pytorch 1.0 Scikit-learn 0.21 无需下载数据直接跑,代码自动下载 逻辑回归 Logistic ...多层感知机 MLP K近邻 KNN 支持向量机 SVM 卷积神经网络 CNN 循环神经网络 RNN
该压缩包包含的“machine-learning-octave-master”文件夹,很可能是包含了一系列的Octave脚本,这些脚本对应于不同的机器学习算法。通过这些脚本,我们可以了解到如何在Octave中实现以下常见机器学习算法: 1. **...
4. **machine-learning-ex4**:通常涉及神经网络和反向传播,可能包括多层感知器的训练,以及调整超参数如学习率和隐藏层大小。 5. **machine-learning-ex5**:这部分可能涵盖概率图模型,如朴素贝叶斯分类器和条件...
对于分类问题,常见的模型有逻辑回归、决策树、随机森林、支持向量机(SVM)以及各种神经网络结构,如多层感知器和卷积神经网络。在本项目中,开发者可能会尝试多种模型,并通过交叉验证来评估它们的性能,以选择...
随后,1957年,弗兰克·罗森布拉特开发了感知机,这是一种基于神经网络的简单学习机器。1967年,Walter Pitts和Warren McCulloch提出了人工神经元的概念,为后来的人工神经网络奠定了基础。 2. 20世纪80年代,随着...
### 机器学习(Machine Learning) #### 定义与概述 机器学习是人工智能的一个重要分支,其核心在于通过算法和统计模型让计算机系统自动地从数据中学习规律,并据此作出预测或决策,而无需人类进行显式的编程。...
标题 "SEP-787-Machine-Learning-Classification-Models" 暗示这是一个关于机器学习分类模型的项目或课程,可能包含多个实例或实验,用于深入理解和应用各种分类算法。描述中的信息比较简单,与标题相同,没有提供...
在"Machine-Learning-Coursera-Stanford-main"这个压缩包中,我们可以期待找到一系列与课程配套的MATLAB代码示例和解决方案,涵盖了从线性回归到支持向量机,再到神经网络等机器学习的核心内容。 1. **线性回归**:...
- **多层感知机**(Multi-Layer Perceptron, MLP):一种前馈神经网络模型,常用于模式识别任务。 - **K近邻算法**(K-Nearest Neighbors, KNN):基于实例的学习方法,用于分类和回归。 - **支持向量机**...
尽管关于机器学习的课程“6.036 Introduction to Machine Learning”尚未在MIT OCW上正式上线,但相关教学笔记已经存在,并涉及机器学习的多个方面。从提供的文件内容中,我们可以提取出关于机器学习的多个核心知识...
标题 "machine-learning-LIBS" 暗示我们关注的主题是机器学习库,特别是与Python相关的库。在Python中,有多个广泛使用的机器学习库,它们为数据预处理、建模、模型评估等提供了强大的工具。这篇概述将深入探讨这些...
项目中的文件列表可能包括了各种示例网络的实现,如简单的多层感知机(MLP)、卷积神经网络(CNN)用于图像分类,以及循环神经网络(RNN)用于序列数据处理。这些实例将带你逐步走进深度学习的世界,帮助你建立对...
量子ELM(Extreme Learning Machine)是一种融合了量子计算与传统机器学习算法的创新技术,主要基于量子感知器的概念。在本文中,我们将深入探讨量子计算的基础、极端学习机(ELM)的基本原理以及如何将两者结合,以...
- **《Brief History of Machine Learning》**:这篇文章详细介绍了机器学习的发展历程,从早期的感知机到后来的神经网络、决策树、支持向量机(SVM)、AdaBoost算法,直至近年来的随机森林以及深度学习技术。...
3. 自编码器与多层感知机:讨论自编码器在无监督学习中的应用,以及多层感知机(MLP)的结构和训练策略。 4. 卷积神经网络:详细阐述卷积神经网络(CNN)在图像识别和处理中的优势,包括卷积层、池化层、滤波器的...
此外,书中还介绍了自编码器和受限玻尔兹曼机(RBM),它们在无监督学习和特征学习中有重要应用。 机器学习的核心在于模型的训练和评估。书中详细讨论了梯度下降法、正规化、过拟合与欠拟合的识别以及交叉验证等...
介绍:这是一篇介绍机器学习历史的文章,介绍很全面,从感知机、神经网络、决策树、SVM、Adaboost到随机森林、Deep Learning. 介绍:这是瑞士人工智能实验室Jurgen Schmidhuber写的最新版本《神经网络与深度学习综述》...