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()
目录
相关文章
|
Python 机器学习/深度学习
Cross Entropy Loss 交叉熵损失函数公式推导
表达式 输出标签表示为{0,1}时,损失函数表达式为: $L = -[y log \hat{y} + (1-y)log(1- \hat{y})]$ 二分类 二分类问题,假设 y∈{0,1} 正例:$P(y = 1| x) = \hat{y}$ 反例:$P(y=0|x) = 1-\hat{y}$ 取似然函数 似然函数就是所有样本在参数θ下发生概率最大的那种情况,由于样本独立同分布,因此概率最大的情况就是每个样本发生概率的连乘。
15939 0
|
4月前
|
机器学习/深度学习 算法 Serverless
三元组损失Triplet loss 详解
在这篇文章中,我们将以简单的技术术语解析三元组损失及其变体批量三元组损失,并提供一个相关的例子来帮助你理解这些概念。
96 2
|
6月前
|
机器学习/深度学习 数据采集 数据处理
多层感知机(MLP)解决二分类任务
分类任务: 开发一个神经网络,预测一氧化碳 (CO) 浓度是否超过某一阈值(CO(GT) 值的平均值)。这项任务涉及二元分类,即您的模型学会将实例分为两类:高于或低于阈值。阈值。要确定阈值,您必须首先计算CO(GT) 的平均值,其中不包括未知数据(缺失值)。然后,使用该阈值来预测网络预测的值是高于还是低于该阈值。但是您的网络应该能够处理缺失值。
|
6月前
|
机器学习/深度学习 算法 计算机视觉
YOLOv5改进 | 损失函数 | EIoU、SIoU、WIoU、DIoU、FocusIoU等多种损失函数
💡💡💡本专栏所有程序均经过测试,可成功执行💡💡💡
|
机器学习/深度学习 算法 PyTorch
Softmax回归(Softmax Regression)
Softmax回归(Softmax Regression),也称为多类别逻辑回归或多项式回归,是一种用于解决多类别分类问题的统计学习方法。它是逻辑回归在多类别情况下的扩展。
276 3
|
机器学习/深度学习 数据挖掘 PyTorch
Softmax Classifier 多分类问题
Softmax Classifier 多分类问题
110 0
|
机器学习/深度学习 数据可视化 计算机视觉
图像分类_03分类器及损失:线性分类+ SVM损失+Softmax 分类+交叉熵损失
解释:w的每⼀⾏都是其中⼀个类的分类器。这些数字的⼏何解释是,当我们改变w的⼀行时,像素空间中相应的线将以不同的⽅向旋转。⽽其中的偏置是为了让我们避免所有的分类器都过原点。
175 0
|
PyTorch 算法框架/工具
【pytorch】交叉熵损失函数 F.cross_entropy()
【pytorch】交叉熵损失函数 F.cross_entropy()
539 0
|
机器学习/深度学习 算法 TensorFlow
Softmax 多分类 | 学习笔记
快速学习 Softmax 多分类
Softmax 多分类 | 学习笔记
|
机器学习/深度学习
softmax回归的相关知识
机器学习在监督学习领域主要解决两个问题,分类和回归问题。
131 0
softmax回归的相关知识