【机器学习】线性分类——感知机算法(理论+图解+公式推导)

简介: 【机器学习】线性分类——感知机算法(理论+图解+公式推导)

2021人工智能领域新星创作者,带你从入门到精通,该博客每天更新,逐渐完善机器学习各个知识体系的文章,帮助大家更高效学习。


概述

本篇文章将要讲解的算法为感知机算法,它最初是一种最简单的二分类算法,后来根据它的提出不断衍生了很多基于它的相关算法,比如支持向量机还有现在比较流行的神经网络,可以说神经网络就是多层感知机的叠加,不过还是优质的神经网络结构还是有其它的其它的网络块的。

感知机算法就是找到一条直线能够完全分类两种样本数据,但是感知机算法简单就简单在只是找到这么一条即可,因为在上图中可能存在很多条都能将两种样本进行分类,但是感知机只要找到一条即可,但是支持向量机不同,它是找到最优的那一条,让所有样本距离该直线距离最大的那一条,因为这样会增大模型的泛化能力,如果有新样本进来的话,大几率仍会正确分类。

感知机算法原理

感知机的原理就是不断调整参数w的值,直到拟合的直线能够区分所有的样本点,那么我们就需要定义一个损失函数来进行衡量。

假设我们的模型为:

f ( x ) = s i g n ( w T x + b ) f(x)=sign(w^Tx+b)f(x)=sign(wTx+b)

其中sign为越阶函数,如果函数值大于0,结果为1,反之为-1,那么就有:

s i g n ( w T x + b ) = { 1 w T x + b ≥ 0 − 1 w T x + b < 0 sign(w^Tx+b)=

{1wTx+b01wTx+b<0{1wTx+b≥0−1wTx+b<0

sign(wTx+b)={1wTx+b01wTx+b<0

所以我们就想能不能使用误分类的个数作为损失,那么构造的就是0-1损失:

L ( w ) = ∑ i = 1 m I ( y i ( w T x + b ) < 0 ) L(w)=\sum_{i=1}^mI(y_i(w^Tx+b)<0)L(w)=i=1mI(yi(wTx+b)<0)

该式中的 I ( x ) I(x)I(x) 为指示函数,意思是如果 x成立,结果为1,否则为0,我们的损失函数意思就是只要某个样本误分类,总的分类错误个数就+1。

但是这样也会存在问题,这个损失函数是不可导的,因为指示函数不连续,所以无法采用算法进行优化,那么就需要采用一种新的方式去进行衡量损失。

我们观察到只要满足 y i ( w T x + b ) < 0 y_i(w^Tx+b)<0yi(wTx+b)<0 ,就说明是误分类的,也就是说如果这个式子越接近0,那么代表的损失越小,但是因为它的乘积是小于0的,我们表示损失需要一个正数,该数值越小损失越小,所以我们在前面添加一个负号就变成了:

L ( w ) = ∑ i = 1 D − y i ( w T x + b ) L(w)=\sum_{i=1}^D-y_i(w^Tx+b)L(w)=i=1Dyi(wTx+b)

但是我们求和的不是所有样本,而是分类错误的样本数据,D为分类错误的样本数,我们只关注分类错误的,正确的不予理会。

然后针对于该损失函数,由于没有极值点,所以不可直接求导,我们需要使用梯度下降法找到接近最优解的参数 w。

w t + 1 = w t − λ ∂ L ( w ) ∂ w w_{t+1}=w_t-\lambda \frac{\partial L(w)}{\partial w}wt+1=wtλwL(w)


目录
相关文章
|
26天前
|
机器学习/深度学习 算法 数据挖掘
K-means聚类算法是机器学习中常用的一种聚类方法,通过将数据集划分为K个簇来简化数据结构
K-means聚类算法是机器学习中常用的一种聚类方法,通过将数据集划分为K个簇来简化数据结构。本文介绍了K-means算法的基本原理,包括初始化、数据点分配与簇中心更新等步骤,以及如何在Python中实现该算法,最后讨论了其优缺点及应用场景。
77 4
|
4天前
|
算法
PAI下面的gbdt、xgboost、ps-smart 算法如何优化?
设置gbdt 、xgboost等算法的样本和特征的采样率
21 2
|
22天前
|
机器学习/深度学习 算法 数据挖掘
C语言在机器学习中的应用及其重要性。C语言以其高效性、灵活性和可移植性,适合开发高性能的机器学习算法,尤其在底层算法实现、嵌入式系统和高性能计算中表现突出
本文探讨了C语言在机器学习中的应用及其重要性。C语言以其高效性、灵活性和可移植性,适合开发高性能的机器学习算法,尤其在底层算法实现、嵌入式系统和高性能计算中表现突出。文章还介绍了C语言在知名机器学习库中的作用,以及与Python等语言结合使用的案例,展望了其未来发展的挑战与机遇。
39 1
|
1月前
|
机器学习/深度学习 自然语言处理 算法
深入理解机器学习算法:从线性回归到神经网络
深入理解机器学习算法:从线性回归到神经网络
|
1月前
|
机器学习/深度学习 人工智能 算法
【手写数字识别】Python+深度学习+机器学习+人工智能+TensorFlow+算法模型
手写数字识别系统,使用Python作为主要开发语言,基于深度学习TensorFlow框架,搭建卷积神经网络算法。并通过对数据集进行训练,最后得到一个识别精度较高的模型。并基于Flask框架,开发网页端操作平台,实现用户上传一张图片识别其名称。
85 0
【手写数字识别】Python+深度学习+机器学习+人工智能+TensorFlow+算法模型
|
1月前
|
机器学习/深度学习 算法
深入探索机器学习中的决策树算法
深入探索机器学习中的决策树算法
37 0
|
1月前
|
机器学习/深度学习 算法 Python
机器学习入门:理解并实现K-近邻算法
机器学习入门:理解并实现K-近邻算法
36 0
|
2月前
|
机器学习/深度学习 算法 Java
机器学习、基础算法、python常见面试题必知必答系列大全:(面试问题持续更新)
机器学习、基础算法、python常见面试题必知必答系列大全:(面试问题持续更新)
|
2月前
|
机器学习/深度学习 人工智能 算法
【玉米病害识别】Python+卷积神经网络算法+人工智能+深度学习+计算机课设项目+TensorFlow+模型训练
玉米病害识别系统,本系统使用Python作为主要开发语言,通过收集了8种常见的玉米叶部病害图片数据集('矮花叶病', '健康', '灰斑病一般', '灰斑病严重', '锈病一般', '锈病严重', '叶斑病一般', '叶斑病严重'),然后基于TensorFlow搭建卷积神经网络算法模型,通过对数据集进行多轮迭代训练,最后得到一个识别精度较高的模型文件。再使用Django搭建Web网页操作平台,实现用户上传一张玉米病害图片识别其名称。
72 0
【玉米病害识别】Python+卷积神经网络算法+人工智能+深度学习+计算机课设项目+TensorFlow+模型训练
|
1月前
|
机器学习/深度学习 人工智能 算法
探索机器学习中的决策树算法
【10月更文挑战第29天】本文将深入浅出地介绍决策树算法,一种在机器学习中广泛使用的分类和回归方法。我们将从基础概念出发,逐步深入到算法的实际应用,最后通过一个代码示例来直观展示如何利用决策树解决实际问题。无论你是机器学习的初学者还是希望深化理解的开发者,这篇文章都将为你提供有价值的见解和指导。