02.C1W1.Sentiment Analysis with Logistic Regression

目录

  • Supervised ML and Sentiment Analysis
    • Supervised ML (training)
    • Sentiment analysis
  • Vocabulary and Feature Extraction
    • Vocabulary
    • Feature extraction
    • Sparse representations and some of their issues
  • Negative and Positive Frequencies
  • Feature extraction with frequencies
  • Preprocessing
    • Preprocessing: stop words and punctuation
    • Preprocessing: Handles and URLs
    • Preprocessing: Stemming and lowercasing
  • Putting it all together
    • General overview
    • General Implementation
  • Logistic Regression Overview
  • Logistic Regression: Training
    • 图形化
    • 数学化
  • Logistic Regression: Testing
  • opt. Logistic Regression:Cost Function
  • 作业注意事项

Supervised ML and Sentiment Analysis

Supervised ML (training)

在这里插入图片描述
模型吃参数 θ θ θ来映射特征 X X X以输出标签 Y ^ \hat Y Y^,之前讲过太多,不重复了

Sentiment analysis

SA任务的目标是用逻辑回归分类器,预测一条推文的情绪是积极的还是消极的,如下图所示,积极情绪的推文都有一个标签:1,负面情绪的推文标签为0
在这里插入图片描述
在这里插入图片描述
大概步骤如上图:

  1. 处理训练集中的原始tweets并提取有用的特征 X X X
  2. 训练Logistic回归分类器,同时最小化成本函数
  3. 使用训练好的分类器对指定推文进行情感分析预测

Vocabulary and Feature Extraction

Vocabulary

假设有训练集中有m条推文:
在这里插入图片描述
则词表(库)可表示为所有不重复出现的所有单词列表,例如上面的I出现两次,只会记录一次:
在这里插入图片描述

Feature extraction

这里直接简单使用单词是否出现来对某个句子进行特征提取:
在这里插入图片描述
如果词表大小为10W,则该句子的特征向量大小为1×10W的,单词出现在句子中,则该词的位置为1,否则为0,可以看到,句子的特征向量非常稀疏(称为稀疏表示Sparse representation)。

Sparse representations and some of their issues

稀疏表示使得参数量大,对于逻辑回归模型,需要学习的参数量为n+1,n为词表大小,进而导致以下两个问题:
在这里插入图片描述

Negative and Positive Frequencies

将推文语料库分为两类:正面和负面 ;
计算每个词在两个类别中出现的次数。
假设语料如下(四个句子):

Corpus
I am happy because I am learning NLP
I am happy
I am sad, I am not learning NLP
I am sad

对应的词表如下(八个词):

Vocabulary
I
am
happy
because
learning
NLP
sad
not

对语料进行分类:

Positive tweetsNegative tweets
I am happy because I am learning NLPI am sad, I am not learning NLP
I am happyI am sad

按类型构造词频表(小伙伴们可以自行写上对应的数字,例如:happy数字为2)
在这里插入图片描述

在这里插入图片描述
总表如下:
在这里插入图片描述
接下来就是要利用以上信息来进行特征提取。

Feature extraction with frequencies

推文的特征可由以下公式表示:
在这里插入图片描述
其中freqs函数就是上节表中单词与情感分类对应的频率。
例子:
I am sad, I am not learning NLP
对应正例词频表(图中应该是下划线):
在这里插入图片描述
可以算出正例词频总和为:3+3+1+1=8
对应负例词频表:
在这里插入图片描述
可以算出负例词频总和为:3+3+1+1+2+1=11
则该推文的特征可以表示为三维向量:
X m = [ 1 , 8 , 11 ] X_m=[1,8,11] Xm=[1,8,11]
这样的表示去掉了推文稀疏表示中不重要的信息。

Preprocessing

数据预处理包括:
Removing stopwords, punctuation, handles and URLs;
Stemming;
Lowercasing.
中心思想:去掉不重要和非必要信息,提高运行效率

Preprocessing: stop words and punctuation

推文实例(广告植入警告):
@YMourri and @AndrewYNg are tuning a GREAT AI model at https://deeplearning.ai!!!
假设停用词表如下(词表通常包含的停用词比实际语料中的停用词要多):

Stop words
and
is
are
at
has
for
a

交叉比较去掉停用词中的内容后:
@YMourri @AndrewYNg tuning GREAT AI model https://deeplearning.ai!!!
假设标点表如下:

Punctuation
,
.
:
!

去掉标点后结果如下:
@YMourri @AndrewYNg tuning GREAT AI model https://deeplearning.ai
际这两个表可以合并在一块,当然有些任务标点符号也包含重要信息,因此是否去掉标点要根据实际需要来做。

Preprocessing: Handles and URLs

这里继续对标识符和网址进行处理,通常这些内容对于SA任务而言,并不能提供任何情绪价值。
上面的推文处理后结果如下:
tuning GREAT AI model
可以看到,去掉非必要信息后,得到结果是一条正面的推文。

Preprocessing: Stemming and lowercasing

Stemming 是一种文本处理技术,目的是将词汇还原到其基本形式,即词干。例如,将 “running” 还原为 “run”。
Lowercasing 是将所有文本转换为小写,以消除大小写带来的差异,便于统一处理。
例如第一个单词词干为tun:
在这里插入图片描述
第二个单词:
在这里插入图片描述
这样处理能减少词库中单词数量。最后推文处理后结果为:
[tun, great, ai, model]

Putting it all together

General overview

本节将对整组推文执行特征提取算法(Generalize the process)
根据之前的内容:数据预处理,特征提取,我们可以将下面推文进行处理:

I am Happy Because i am learning NLP @deeplearning
↓ Preprocessing后
[happy, learn, nlp]
↓ Feature Extraction后
[1,4 ,2]

其中,1 是Bias,4是Sum positive frequencies,2是Sum negative frequencies

对于多条推文则有:
在这里插入图片描述
最后的多个特征向量就可以组合成一个矩阵,大小为m×3,矩阵每一行都对应一个推文的特征向量
在这里插入图片描述

General Implementation

freqs =build_freqs(tweets,labels) #Build frequencies dictionary,已提供
X = np.zeros((m, 3 )) #Initialize matrix X
for i in range (m): #For every tweetp_tweet = process_tweet(tweets[i]) #Process tweet,已提供X[i, :]= extract_features(train_x[i], freqs)#需要在作业中自己实现

Logistic Regression Overview

最开始的有监督的机器学习中,回顾了主要步骤,这里我们只需要将中间的预测函数替换为逻辑回归函数Sigmoid即可。
在这里插入图片描述
Sigmoid函数形式为:
h ( x ( i ) , θ ) = 1 1 + e − θ T x ( i ) h(x^{(i)},\theta)=\cfrac{1}{1+e^{-\theta^Tx^{(i)}}} h(x(i),θ)=1+eθTx(i)1
i为第i条数据
θ是参数
x是数据对应的特征向量
图像形式为:
在这里插入图片描述
其函数值取决于 θ T x ( i ) \theta^Tx^{(i)} θTx(i)
在这里插入图片描述
例如:
@YMourri and @AndrewYNg are tuning a GREAT AI model
预处理后结果为:
[tun, ai, great, model]
根据词库进行特征提取后可能得到以下结果:
x ( i ) = [ 1 3476 245 ] and θ = [ 0.00003 0.00150 − 0.00120 ] \begin{equation*} x^{(i)} = \begin{bmatrix} 1 \\ 3476 \\ 245 \end{bmatrix} \quad \text{and} \quad \theta = \begin{bmatrix} 0.00003 \\ 0.00150 \\ -0.00120 \end{bmatrix} \end{equation*} x(i)= 13476245 andθ= 0.000030.001500.00120
带入sigmoid函数后得到:
在这里插入图片描述

Logistic Regression: Training

上一节内容中,我们使用了给定的参数 θ \theta θ来计算推文的结果,这一节我们将学会如何通过训练逻辑回归模型来找到最佳的参数 θ \theta θ(梯度下降)。

图形化

先将问题简化,假设LR模型中只有两个参数 θ 1 \theta_1 θ1 θ 2 \theta_2 θ2则函数的参数图像为下左,下右为Cost函数的迭代过程:
在这里插入图片描述
刚开始,我们初始化两个参数 θ 1 \theta_1 θ1 θ 2 \theta_2 θ2,对应的Cost值为:
在这里插入图片描述
根据GD方向进行参数更新,100次后:
在这里插入图片描述
200次后:
在这里插入图片描述
若干次后:
在这里插入图片描述
直到最佳cost附近:
在这里插入图片描述

数学化

整个梯度下降过程可以表示为下图,注意左右是一一对应关系,结合起来看:
在这里插入图片描述

Logistic Regression: Testing

使用验证集计算模型精度,并了解准确度指标的含义。
现在我们手上有验证集: X v a l , Y v a l X_{val},Y_{val} Xval,Yval,以及训练好的参数 θ \theta θ
先计算sigmoid函数值(预测值): h ( X v a l , θ ) h(X_{val},\theta) h(Xval,θ)
然后判断验证集中每一个数据的预测值是否大于阈值(通常为0.5):
p r e d = h ( X v a l , θ ) ≥ 0.5 pred=h(X_{val},\theta)\ge 0.5 pred=h(Xval,θ)0.5
在这里插入图片描述
最后的预测结果是一组矩阵:
在这里插入图片描述
有了预测结果,就可以将其与标签 Y v a l Y_{val} Yval比较,计算准确率:
∑ i = 1 m ( p r e d i = = y v a l ( i ) ) m \sum_{i=1}^m\cfrac{(pred^{i}==y^{(i)}_{val})}{m} i=1mm(predi==yval(i))
m是验证集中数据个数
分子如下图所示,绿色是预测正确,黄色是预测不正确的:
在这里插入图片描述
正确率计算实例:
假设计算的预测值与标签如下:
在这里插入图片描述
分子则为:
在这里插入图片描述
正确率: a c c u r a c y = 4 5 accuracy=\cfrac{4}{5} accuracy=54

opt. Logistic Regression:Cost Function

可选看内容:逻辑成本函数(又称二元交叉熵函数),公式为:
J ( θ ) = − 1 m ∑ i = 1 m [ y ( i ) log ⁡ h ( x ( i ) , θ ) + ( 1 − y ( i ) ) log ⁡ ( 1 − h ( x ( i ) , θ ) ] J(\theta)=-\cfrac{1}{m}\sum_{i=1}^m\left[y^{(i)}\log h(x^{(i)},\theta)+(1-y^{(i)})\log (1-h(x^{(i)},\theta)\right] J(θ)=m1i=1m[y(i)logh(x(i),θ)+(1y(i))log(1h(x(i),θ)]
1 m ∑ i = 1 m \cfrac{1}{m}\sum_{i=1}^m m1i=1m中,m是样本数量,这里是将所有训练样本的cost进行累加,然后求平均。
对于中括号的第一项 y ( i ) log ⁡ h ( x ( i ) , θ ) y^{(i)}\log h(x^{(i)},\theta) y(i)logh(x(i),θ),不同取值有不同结果,总体而言,负例样本 y ( i ) = 0 y^{(i)}=0 y(i)=0,无论预测值 h ( x ( i ) , θ ) h(x^{(i)},\theta) h(x(i),θ)是什么这项为0,而预测值与标签值相差越大,Cost越大:
在这里插入图片描述
在这里插入图片描述

对于中括号的第二项 ( 1 − y ( i ) ) log ⁡ ( 1 − h ( x ( i ) , θ ) (1-y^{(i)})\log (1-h(x^{(i)},\theta) (1y(i))log(1h(x(i),θ),正例样本 y ( i ) = 1 y^{(i)}=1 y(i)=1,无论预测值 h ( x ( i ) , θ ) h(x^{(i)},\theta) h(x(i),θ)是什么这项为0,同样预测值与标签值相差越大,Cost越大:
在这里插入图片描述
在这里插入图片描述

由于中括号里面的log是针对0-1之间的值,所以得到的结果是负数,为保证Cost函数是正值(这样才能求最小),在最前面加上了负号。

作业注意事项

nltk.download(‘twitter_samples’)失败可以到:
https://www.nltk.org/nltk_data/
手工下载twitter_samples.zip后放corpora目录,不用解压

utils.py文件可以在Assignment中找到

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/39262.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

玩具租赁系统(安装+讲解+源码)

技术栈: 后端: SpringBoot Mysql MybatisPlus 前端: Vue Element 分为 管理员端 用户端 功能: 用户端 管理员端 观看地址: B站搜: 【毕设者】玩具租赁系统(安装讲解源码)

Java高级重点知识点-13-数据结构、List集合、List集合的子类

文章目录 数据结构List集合List的子类(ArrayList集、LinkedList集) 数据结构 栈 stack,又称堆栈,它是运算受限的线性表,其限制是仅允许在标的一端进行插入和删除操作,不允许在其他任何位置进行添加、查找、删除等操作…

cesium 添加 Echarts图层(人口迁徒图)

cesium 添加 Echarts 人口迁徒图(下面附有源码) 1、实现思路 1、在scene上面新增一个canvas画布 2、通坐标转换,将经纬度坐标转为屏幕坐标来实现 3、将ecarts 中每个series数组中元素都加 coordinateSystem: ‘cesiumEcharts’ 2、示例代码 <!DOCTYPE html> <ht…

PCIe Switch

如图所示&#xff0c;pcie Switch 被定义为多个虚拟PCI-to-PCI Bridge设备的逻辑集合。所有交换机由以下基本规则管理。 . Switch在配置软件中表现为两个或多个逻辑PCI-to-PCI桥 不需要支持下行端口作为锁定请求的发起端口. 每个enable的端口必须符合“流量控制”规范。 .S…

Linux之进程控制(上)

目录 进程创建 进程终止 进程退出码 进程终止的方式 进程等待 进程等待的方式 status概述 总结 上期我们学习了Linux中进程地址空间的概念&#xff0c;至此进程的所有基本概念已经全部学习完成&#xff0c;今天我们将开始学习进程相关的操作。 进程创建 进程创建其实…

理解MySQL存储引擎:掌握数据存储与管理

在工作或学习过程中&#xff0c;作为一名数据库管理员或开发者&#xff0c;我们常常需处理大量数据&#xff0c;同时确保数据的可靠性与高效性。MySQL作为最受欢迎的开源数据库之一&#xff0c;其强大的性能和灵活性广为人知。而在MySQL背后的存储引擎则起到了至关重要的作用。…

强对抗的 SquidLoader 针对中国企业发起攻击

研究人员近期发现了一种高对抗强度的 Loader&#xff0c;其通过钓鱼邮件附件传递给受害者。根据恶意软件所具备的引诱和规避行为&#xff0c;研究人员将其命名为 SquidLoader。SquidLoader 最早在 2024 年 4 月下旬被发现&#xff0c;但研究人员认为其至少已经活跃了一个月以上…

Vue 数据大屏适配

1、准备俩个盒子 .dataScreen-content 盒子内容根据设计稿给的px单位进行正常的布局就行 2、盒子的CSS样式 .dataScreen-container {width: 100%;height: 100%;// 有背景图需要的样式background: url("./images/bg.png") no-repeat;background-repeat: no-repeat;b…

入门PHP就来我这(纯干货)04

~~~~ 有胆量你就来跟着路老师卷起来&#xff01; -- 纯干货&#xff0c;技术知识分享 ~~~~ 路老师给大家分享PHP语言的知识了&#xff0c;旨在想让大家入门PHP&#xff0c;并深入了解PHP语言。 我们接着《想入门PHP就来我这&#xff08;纯干货&#xff09;03》继续往下学习&am…

安装Rabbitmq遇到的坑

&#xff01;&#xff01;&#xff01;一定要对号版本号 不同的虚拟机unbontu、cetenos和不同的erlang和不同的rabbitmq之间要对应下载对应版本 下面给出我的版本centos7erlangrabbitmq 分割线 安装好后&#xff0c;如果在虚拟机的服务器上可以打开&#xff0c;在本地浏览器…

JavaScript中的Array(数组)对象

目录 一、Array数组对象 1、介绍 2、创建数组对象并赋值 3、访问数组元素 二、Array对象属性 1、constructor属性 2、length属性 3、prototype属性 三、Array对象的常用方法 1、isArray() 2、concat() 3、pop() 4、shift() 5、push() 6、unshift() 7、reverse(…

高性价比宠物空气净化器分享,希喂、霍尼韦尔、有哈PK

近期&#xff0c;家中的小猫咪仿佛化身为行走的“蒲公英”&#xff0c;掉毛现象愈发严重&#xff0c;家中每个角落乃至空气中都弥漫着难以忽视的猫毛&#xff0c;衣物更是无一幸免&#xff0c;披上了毛茸茸的“外衣”。更令人啼笑皆非的是&#xff0c;就连不经意间清理的眼屎中…

VQA视觉问答系统

这是一个典型的多模态问题,融合了CV与NLP的技术,计算机需要同时学会理解图像和文字。 Joint embedding 首先,图像和问题分别由CNN和RNN进行第一次编码得到各自的特征,随后共同输入到另一个编码器中得到joint embedding,最后通过解码器输出答案。 值得注意的是,有的工作…

小红书运营教程02

小红书大致会分享10篇左右。微博、抖音、以及视频剪辑等自媒体运营相关技能以及运营教程相关会陆续的进行分享。 上次分享涉及到的对比,母婴系列,或者可以说是服装类型,不需要自己过多的投入,对比知识类博主来说,自己将知识讲述出来,然后要以此账号进行变现就比较麻烦,…

如果这时你还不清理C盘,那只能眼睁睁看着电脑越来越卡 直到系统崩溃

如果这时候你还不清理C盘&#xff0c;那只能眼睁睁看着电脑越来越卡 直到系统崩溃。很多人就是想偷懒&#xff0c;当然这是人的天性&#xff0c;明明知道自己的C盘空间就那么大&#xff0c;一天天看着C盘空间越来越小&#xff0c;还不去清理C盘。 这样的人有两种&#xff0c;一…

软件开发案例参考

前言&#xff1a;基于平台现有需求进行新功能模块开发与实现&#xff0c;以下内容为部分源码解析&#xff0c;仅提供一些思路参考&#xff0c;不予以客观指导&#xff0c;毕竟条条大路通罗马嘛&#xff1b; 语言&#xff1a;C# 工具&#xff1a;visual studio 2017/visual st…

C++基础(二):C++入门(一)

C是在C的基础之上&#xff0c;容纳进去了面向对象编程思想&#xff0c;并增加了许多有用的库&#xff0c;以及编程范式 等。熟悉C语言之后&#xff0c;对C学习有一定的帮助&#xff0c;本篇博客主要目标&#xff1a; 1. 补充C语言语法的不足&#xff0c;以及C是如何对C语言设计…

【RabbitMQ实战】邮件发送(直连交换机、手动ack)

一、实现思路 二、异常情况测试现象及解决 说明:本文涵盖了关于RabbitMQ很多方面的知识点, 如: 消息发送确认机制 、消费确认机制 、消息的重新投递 、消费幂等性, 二、实现思路 1.简略介绍163邮箱授权码的获取 2.编写发送邮件工具类 3.编写RabbitMQ配置文件 4.生产者发起调用…

高考失利咨询复读,银河补习班客服开挂回复

补习班的客服在高考成绩出来后&#xff0c;需要用专业的知识和足够的耐心来回复各种咨询&#xff0c;聊天宝快捷回复软件&#xff0c;帮助客服开挂回复。 ​ 前言 高考成绩出来&#xff0c;几家欢喜几家愁&#xff0c;对于高考失利的学生和家长&#xff0c;找一个靠谱的复读补…

全面了解机器学习

目录 一、基本认识 1. 介绍 2. 机器学习位置 二、机器学习的类型 1. 监督学习 2. 无监督学习 3. 强化学习 三、机器学习术语 1. 训练样本 2. 训练 3. 特征 4. 目标 5. 损失函数 四、机器学习流程 五、机器学习算法 1. 分类算法 2. 聚类算法 3. 关联分析 4. …