Softmax 分类器

简介: 机器学习中的 Softmax 分类器是一种常用的多分类模型,它将逻辑回归(Logistic Regression)推广到多分类问题中。在 Softmax 分类器中,我们使用一个二维平面(或多维空间中的超平面)来将不同类别的数据分开。这个超平面由一个线性函数决定,该线性函数可以表示为:y = w1 * x1 + w2 * x2 +... + wn * xn 其中,y 是输出变量(通常为类别的概率向量),x1, x2,..., xn 是输入变量,w1, w2,..., wn 是需要学习的权重。Softmax 分类器的主要优点是它可以处

机器学习中的 Softmax 分类器是一种常用的多分类模型,它将逻辑回归(Logistic Regression)推广到多分类问题中。在 Softmax 分类器中,我们使用一个二维平面(或多维空间中的超平面)来将不同类别的数据分开。这个超平面由一个线性函数决定,该线性函数可以表示为:y = w1 x1 + w2 x2 +... + wn * xn 其中,y 是输出变量(通常为类别的概率向量),x1, x2,..., xn 是输入变量,w1, w2,..., wn 是需要学习的权重。
Softmax 分类器的主要优点是它可以处理多维输入变量和多类别输出变量之间的关系。这使得它在许多实际应用场景中具有很好的表现,例如图像分类、文本分类等。
要使用 Softmax 分类器,可以按照以下步骤进行:

  1. 收集数据:收集包含输入变量和输出变量的数据集。这些数据可以是实验室测量值、历史数据或现实世界中的观测值。
  2. 数据预处理:处理数据中的异常值、缺失值,并将连续变量标准化(例如归一化)以提高模型性能。
  3. 划分数据集:将数据集划分为训练集和测试集。训练集用于训练模型,而测试集用于评估模型性能。
  4. 训练模型:使用训练集数据,通过最小化代价函数(如交叉熵损失,Cross-Entropy Loss)来调整模型参数(权重)。
  5. 评估模型:使用测试集数据,评估模型的性能。如果性能不佳,可以调整学习率、迭代次数等超参数,或尝试使用其他模型。
  6. 应用模型:将训练好的模型应用于新数据,进行预测。
    总之,Softmax 分类器是一种用于解决多分类问题的机器学习模型,通过拟合一个二维平面(或多维空间中的超平面),将不同类别的数据分开。通过收集数据、预处理数据、划分数据集、训练模型、评估模型和应用模型等步骤,我们可以使用 Softmax 分类器来预测连续值和解决分类问题。


Ch 04: Concept 01
Linear regression for classification (just for demonstrative purposes)
Import the usual libraries:

%matplotlib inline
import tensorflow as tf
import numpy as np
import matplotlib.pyplot as plt
Let's say we have numbers that we want to classify. They'll just be 1-dimensional values. Numbers close to 5 will be given the label [0], and numbers close to 2 will be given the label [1], as designed here:

x_label0 = np.random.normal(5, 1, 10)
x_label1 = np.random.normal(2, 1, 10)
xs = np.append(x_label0, x_label1)
labels = [0.] * len(x_label0) + [1.] * len(x_label1)

plt.scatter(xs, labels)
<matplotlib.collections.PathCollection at 0x7f5be2699fd0>

Define the hyper-parameters, placeholders, and variables:

learning_rate = 0.001
training_epochs = 1000

X = tf.placeholder("float")
Y = tf.placeholder("float")

w = tf.Variable([0., 0.], name="parameters")
Define the model:

def model(X, w):
    return tf.add(tf.multiply(w[1], tf.pow(X, 1)),
                  tf.multiply(w[0], tf.pow(X, 0)))
Given a model, define the cost function:

y_model = model(X, w)
cost = tf.reduce_sum(tf.square(Y-y_model))
Set up the training op, and also introduce a couple ops to calculate some metrics, such as accuracy:

train_op = tf.train.GradientDescentOptimizer(learning_rate).minimize(cost)
correct_prediction = tf.equal(Y, tf.to_float(tf.greater(y_model, 0.5)))
accuracy = tf.reduce_mean(tf.to_float(correct_prediction))
Prepare the session:

sess = tf.Session()
init = tf.global_variables_initializer()
sess.run(init)
Run the training op multiple times on the input data:

for epoch in range(training_epochs):
    sess.run(train_op, feed_dict={X: xs, Y: labels})
    current_cost = sess.run(cost, feed_dict={X: xs, Y: labels})
    if epoch % 100 == 0:
        print(epoch, current_cost)
0 8.63226
100 3.23953
200 2.14632
300 1.90881
400 1.8572
500 1.84599
600 1.84356
700 1.84303
800 1.84291
900 1.84289
Show some final metrics/results:

w_val = sess.run(w)
print('learned parameters', w_val)

print('accuracy', sess.run(accuracy, feed_dict={X: xs, Y: labels}))

sess.close()
learned parameters [ 1.28786051 -0.25033307]
accuracy 0.95
Plot the learned function

all_xs = np.linspace(0, 10, 100)
plt.plot(all_xs, all_xs*w_val[1] + w_val[0])
plt.scatter(xs, labels)
plt.show()
目录
相关文章
|
1月前
|
机器学习/深度学习 资源调度 自然语言处理
Softmax激活函数介绍
【10月更文挑战第2天】
75 0
WK
|
2月前
|
机器学习/深度学习 算法 数据挖掘
什么是逻辑回归分类器
逻辑回归分类器是一种广泛应用于二分类问题的统计方法,它基于线性组合并通过Sigmoid函数将输出映射为概率值进行分类。核心原理包括:线性组合假设函数、Sigmoid函数转换及基于概率阈值的预测。该模型计算高效、解释性强且鲁棒性好,适用于信用评估、医疗诊断、舆情分析和电商推荐等多种场景。利用现有机器学习库如scikit-learn可简化其实现过程。
WK
32 1
WK
|
2月前
|
机器学习/深度学习
在神经网络的反向传播中,Tanh和Sigmoid哪个更快
在神经网络反向传播中,Tanh与Sigmoid函数的速度差异并无定论,受网络结构、数据特性及参数设置影响。Sigmoid在远离零时易导致梯度消失,而Tanh因输出范围为(-1, 1)且以0为中心,能更好地缓解此问题,理论上训练速度更快。两者计算复杂度相近,现代硬件优化使这一差距不明显。实际应用中,Sigmoid常用于二分类输出层,Tanh则适用于隐藏层以加速收敛并减少权重更新偏向。随着深度学习发展,ReLU等新激活函数因高效性和轻度梯度消失问题成为主流选择。综合来看,Tanh可能比Sigmoid稍快,但需根据具体任务和网络结构选择。
WK
56 0
|
4月前
|
机器人 计算机视觉 Python
K-最近邻(KNN)分类器
【7月更文挑战第26天】
45 8
|
5月前
|
机器学习/深度学习 数据采集 数据处理
多层感知机(MLP)解决二分类任务
分类任务: 开发一个神经网络,预测一氧化碳 (CO) 浓度是否超过某一阈值(CO(GT) 值的平均值)。这项任务涉及二元分类,即您的模型学会将实例分为两类:高于或低于阈值。阈值。要确定阈值,您必须首先计算CO(GT) 的平均值,其中不包括未知数据(缺失值)。然后,使用该阈值来预测网络预测的值是高于还是低于该阈值。但是您的网络应该能够处理缺失值。
|
5月前
|
机器学习/深度学习 算法
损失函数
【6月更文挑战第14天】损失函数。
44 2
|
机器学习/深度学习 算法 PyTorch
Softmax回归(Softmax Regression)
Softmax回归(Softmax Regression),也称为多类别逻辑回归或多项式回归,是一种用于解决多类别分类问题的统计学习方法。它是逻辑回归在多类别情况下的扩展。
260 3
|
机器学习/深度学习 数据挖掘 PyTorch
Softmax Classifier 多分类问题
Softmax Classifier 多分类问题
99 0
|
机器学习/深度学习 数据可视化 计算机视觉
图像分类_03分类器及损失:线性分类+ SVM损失+Softmax 分类+交叉熵损失
解释:w的每⼀⾏都是其中⼀个类的分类器。这些数字的⼏何解释是,当我们改变w的⼀行时,像素空间中相应的线将以不同的⽅向旋转。⽽其中的偏置是为了让我们避免所有的分类器都过原点。
167 0
|
机器学习/深度学习 算法 TensorFlow
Softmax 多分类 | 学习笔记
快速学习 Softmax 多分类
Softmax 多分类 | 学习笔记