(4

您所在的位置:网站首页 情绪情感是如何分类的 (4

(4

2024-07-05 22:54| 来源: 网络整理| 查看: 265

4.2  支持向量机(SVM)

支持向量机(Support Vector Machine,SVM)是一种强大的监督学习算法,通常用于分类和回归任务。SVM的目标是找到一个最佳的分隔超平面,以将不同类别的数据点分开。

4.2.1  支持向量机介绍

SVM的核心思想是找到一个最佳的超平面(在二维空间中是一条直线,而在更高维空间中是一个超平面),该超平面可以将不同类别的数据点分开,并且使得最接近超平面的数据点到该超平面的距离最大化。这些最接近超平面的数据点被称为"支持向量"。

SVM的主要原理如下所示:

间隔与超平面:SVM的核心思想是找到一个超平面,它可以在不同类别的数据点之间保持最大的间隔。这个间隔是指最接近超平面的数据点到该超平面的距离。这些最接近超平面的数据点被称为"支持向量"。核技巧:SVM可以通过核函数将数据从原始特征空间映射到一个更高维度的特征空间,从而使数据在新空间中更容易分隔。常用的核函数包括线性核、多项式核和高斯核。正则化参数:SVM引入了一个正则化参数(通常表示为C),它允许在最大化间隔和误分类之间进行权衡。较小的C值将导致更大的间隔但容忍一些误分类,而较大的C值将导致更小的间隔但减少误分类。最大间隔分类:SVM的目标是最大化间隔并且将数据点正确分类,这可以通过优化问题来实现。常见的SVM变种包括硬间隔SVM和软间隔SVM,软间隔SVM更容忍噪声数据。

SVM在许多领域都有广泛的应用,主要包括下面的领域:

文本分类:SVM可用于将文本文档分类为不同的类别,如垃圾邮件和非垃圾邮件、新闻主题分类等。图像分类:SVM可用于图像分类任务,例如将图像识别为不同的物体或场景。人脸识别:SVM在人脸识别领域也有应用,它可以用于检测和识别人脸。生物信息学:SVM可用于生物信息学任务,如蛋白质分类、基因表达分析等。金融领域:在金融领域,SVM可以用于信用评分、风险评估和股票价格预测。医学诊断:SVM可用于医学图像分析和诊断任务,例如肿瘤检测和疾病诊断。自然语言处理:除了文本分类,SVM还可以用于命名实体识别、情感分析和信息检索。

SVM是一个强大的算法,具有很好的泛化性能,适用于各种不同类型的数据集。它的性能在很多情况下优于其他分类算法。然而,SVM的计算复杂性较高,需要合适的参数调整,因此在大规模数据集上可能需要大量的计算资源。

4.2.2  线性SVM与非线性SVM

线性支持向量机(Linear SVM)和非线性支持向量机(Non-Linear SVM)是SVM的两种主要变体,用于处理不同类型的数据和分类问题。

1. 线性支持向量机 (Linear SVM)

原理:线性SVM通过一个线性超平面来分隔不同类别的数据。这意味着它适用于线性可分的情况,即可以使用一条直线(在二维空间中)或一个超平面(在高维空间中)将数据完全分开。应用:线性SVM常用于处理线性可分问题,如二元分类问题。它通常对高维数据和大规模数据集的分类具有很高的性能。特点:线性SVM训练速度相对较快,通常不需要太多的超参数调优。

2. 非线性支持向量机 (Non-Linear SVM)

原理:非线性SVM通过使用核技巧将数据从原始特征空间映射到一个更高维度的特征空间,以便在新空间中分隔不同类别的数据。这允许SVM处理非线性分类问题。应用:非线性SVM常用于非线性分类问题,其中数据在原始特征空间中不能被直线或线性超平面分隔。它在图像分类、文本分类和模式识别等任务中有广泛应用。特点:非线性SVM训练速度可能较慢,尤其是在高维空间和大规模数据集中。选择合适的核函数和优化参数对其性能至关重要。

如果数据在原始特征空间中是线性可分的,或者数据集相对小而特征维度较高,那么线性SVM是一个合适的选择,因为它通常训练速度快且性能良好。如果数据在原始特征空间中不是线性可分的,或者需要处理非线性分类问题,那么非线性SVM是更好的选择。在这种情况下,选择适当的核函数(如多项式核、高斯核等)和超参数调优至关重要。请看下面的例子,功能是使用线性SVM和非线性SVM来进行情感分析,即将文本评论分类为正面、负面或中性情感。

实例4-2:使用线性SVM和非线性SVM进行情感分析(源码路径:daima\4\svm.py)

实例文件svm.py的具体实现代码如下所示。

import numpy as np from sklearn.feature_extraction.text import TfidfVectorizer from sklearn.model_selection import train_test_split from sklearn.svm import LinearSVC, SVC from sklearn.metrics import accuracy_score from sklearn.datasets import load_files from sklearn.utils import shuffle # 加载电影评论数据集 movie_reviews_data = load_files('IMDb_data', shuffle=True) data, labels = shuffle(movie_reviews_data.data, movie_reviews_data.target) # 划分数据为训练集和测试集 X_train, X_test, y_train, y_test = train_test_split(data, labels, test_size=0.2, random_state=42) # 使用TF-IDF向量化文本数据 vectorizer = TfidfVectorizer(max_features=5000) X_train = vectorizer.fit_transform(X_train) X_test = vectorizer.transform(X_test) # 线性SVM分类器 linear_svm_classifier = LinearSVC() linear_svm_classifier.fit(X_train, y_train) linear_svm_predictions = linear_svm_classifier.predict(X_test) # 非线性SVM分类器 (使用高斯核) nonlinear_svm_classifier = SVC(kernel='rbf') nonlinear_svm_classifier.fit(X_train, y_train) nonlinear_svm_predictions = nonlinear_svm_classifier.predict(X_test) # 评估线性SVM和非线性SVM的性能 linear_svm_accuracy = accuracy_score(y_test, linear_svm_predictions) nonlinear_svm_accuracy = accuracy_score(y_test, nonlinear_svm_predictions) print("Linear SVM Accuracy: {:.2f}%".format(linear_svm_accuracy * 100)) print("Nonlinear SVM Accuracy: {:.2f}%".format(nonlinear_svm_accuracy * 100)) # 输入新评论并进行情感分析 new_reviews = ["This movie was fantastic!", "I did not enjoy this film at all.", "It was okay, not great but not terrible."] new_reviews = vectorizer.transform(new_reviews) linear_svm_sentiments = linear_svm_classifier.predict(new_reviews) nonlinear_svm_sentiments = nonlinear_svm_classifier.predict(new_reviews) print("Linear SVM Sentiments:", linear_svm_sentiments) print("Nonlinear SVM Sentiments:", nonlinear_svm_sentiments)

在上述代码中,首先加载了一个电影评论数据集,并将其分为训练集和测试集。然后,我们使用TF-IDF向量化文本数据,分别使用线性SVM和非线性SVM(使用高斯核)来进行情感分析。最后,我们评估了两种SVM分类器的性能,并对新的电影评论进行了情感分析。执行后会输出:

Linear SVM Accuracy: 84.50% Nonlinear SVM Accuracy: 84.75% Linear SVM Sentiments: [1 0 1] Nonlinear SVM Sentiments: [1 0 1]

根据评论文本,两个SVM模型分别对其进行了情感分类。在这个示例中,"This movie was fantastic!" 被分类为正面情感,"I did not enjoy this film at all." 被分类为负面情感,而 "It was okay, not great but not terrible." 被分类为中性情感。

未完待续



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3