机器学习数据处理学习(one-hot编码和文本嵌入)
机器学习的目的:
让机器从数据中自主学习规律,无需人工逐一编程,就能完成预测、分类、决策等特定任务。
为了让机器可以理解一些特征的含义,需要对其进行编码
为什么在文本处理或类别特征处理中使用 one-hot 编码而非数值编码:
核心原因是避免数值编码引入的 “虚假顺序关系”
数值编码(如将 “苹果”“香蕉”“橙子” 映射为 1、2、3)会让模型错误地认为类别之间存在 “1<2<3” 的数值大小关系,但实际上这些类别是平级的(无天然顺序),同时不能说“橙子”=“苹果”+“香蕉”。
这种虚假关系会干扰模型对特征的理解(比如线性模型会基于数值大小赋予权重,导致错误关联)。 而 one-hot 编码通过向量(如苹果 =[1,0,0]、香蕉 =[0,1,0])仅表示 “是否属于该类别”,既保留了类别信息,又避免了人为引入的顺序偏差,更适合处理无天然等级的名义变量(如文本中的词语、颜色、职业等)。
文本处理(processing text data):
第一步:文本变单词

第二步:计算单词词频,列哈希表,按照词频大小排序制作字典,对单词进行编码

如果不在词典里就加入词典,如果在词典里面就频率加一。

将表格按频率降序排列
注:可能会保留词频大小前10000词(举例),这样可以省略掉一些拼写的错词或者一些不常用的词,来减少计算量。
第三步:对原句子按照字典进行编码,有必要的话进行ONE-HOT编码

注:字典中找不到的词可以删掉或者将其变成0
文本编码流程举例:

第四步:对编码后的句子进行对齐Align(截断或者补零)

原因:数据集中的句子长短不一,有的很长,有的很短,但是对他们都要进行处理,同时资源有限。

词嵌入:
做完上面的步骤,你已经成功的把一段句子转化成为了一段长长的编码序列了,但是随之而来的问题是这个序列太长了,长到一个单词需要一个字典的长度!

那么接下来需要对这个字进行压缩,把高维ONE-HOT向量ei映射到低维ONE-HOT向量xi

这里的参数矩阵P是可以通过数据训练出来的矩阵,它通过任务驱动的优化过程从训练数据中学习,核心机制是梯度下降。
以 Word2Vec(如 CBOW、Skip-Gram)为例,输入是单词的one-hot向量(如e_i),与矩阵P^T(嵌入矩阵)相乘得到低维词嵌入x_i。 模型会定义一个任务(如 “根据上下文预测中心词” 或 “根据中心词预测上下文”),并通过最小化预测误差(如交叉熵损失)来反向传播更新矩阵 P 的参数。
最终,矩阵 P 的每一行(或列)就对应一个单词的低维语义表示,这个过程是有监督 / 自监督的学习,目的是让语义相似的单词在低维空间中距离更近。

总的流程的例子:


参考视频:
更多推荐
所有评论(0)