感知机
感知机是最早的线性分类模型之一,适用于二分类任务。它的核心思想是寻找一个超平面,把两类样本分开。
概念详解
给定样本
其中
如果样本被正确分类,则应满足:
当
数学公式及其推导
感知机损失函数只惩罚误分类点:
对单个误分类样本
分别对
使用梯度下降:
这就是感知机的更新规则。
应用代码
python
import numpy as np
class Perceptron:
def __init__(self, lr=0.1, epochs=100):
self.lr = lr
self.epochs = epochs
def fit(self, X, y):
self.w = np.zeros(X.shape[1])
self.b = 0.0
for _ in range(self.epochs):
errors = 0
for xi, yi in zip(X, y):
if yi * (np.dot(self.w, xi) + self.b) <= 0:
self.w += self.lr * yi * xi
self.b += self.lr * yi
errors += 1
if errors == 0:
break
def predict(self, X):
return np.where(X @ self.w + self.b >= 0, 1, -1)
X = np.array([[2, 1], [1, 3], [2, 4], [-1, -2], [-2, -1], [-3, -2]])
y = np.array([1, 1, 1, -1, -1, -1])
model = Perceptron()
model.fit(X, y)
print(model.w, model.b)
print(model.predict(X))小结
感知机只能处理线性可分数据,但它给出了“线性变换 + 激活函数 + 参数更新”的基本形式,是理解神经网络的起点。