文本分类
文本分类和文本聚类的区别
分类问题:一般是指事先确定好类别,然后将集合中的元素分别划分到相应类别中的问题。
聚类问题:一般是指事先没有确定好类别,而是根据集合中各元素的某些特点而形成的分类,也就是子集。
文本表示方法
空间向量模型
也就是用特征构造的向量来表示(N维空间)
将文字转换为坐标值的方法→One-Hot编码
但是语料库太大了,这样表示的话每个向量都巨大无比。
Bags-of-Words(BOW,词袋模型)
和One-Hot差不多
我们并没有表达单词在原来句子中出现的次序,这也是 Bag-of-Words 模型的缺点之一。
N-Gram模型
可以当成是BOW的改进版,多了个滑窗,也就是相近的两个单词为一个,所以考虑了句子原来的次序。
TF-IDF模型
看看例题
文本预处理-分词
这一步就是为了获取文本中的词语信息的。
文本预处理主要包括 分词、去除停用词和特殊符号。
英语的基本单位是单词,可以根据空格和标点符号进行分词,然后提取词根和词干。
中文的基本单位是字,需要一些算法来进行分词。
基于字符串的分词方法
该方法就是将待分词的字符串从头到尾开始切分出字串,再与现存几乎所有的中文词语的词典匹配,若匹配成功,则字串是一个词语。
基于统计及机器学习的分词方法
jieba分词
jieba库有三种分词模式:
原理是这个:
本质就是,构造DAG图。
然后采取动态规划的策略,查找最大概率的路径(这个是个切分组合)
对于未登录词,用HMM模型来处理。
特征提取
如果以词为特征的话,特征向量的维度可能过大,学习算法无法处理这个高的维度。
所以需要特征提取。
了解就行(
分类方法
基于决策树的分类
决策树中一个重要的定义就是信息熵。
熵
熵在信息论中被用来度量信息量,熵越大,所含的有用信息越多。其不确定性就越大。熵越少,确定性越大。
在决策树中,用熵来表示样本集的不纯度,如果某个样本集合中只有一个类别,其确定性最高,熵为0。
反之,熵越大,越不确定,表示样本集中的分类越多样。
所以信息量的大小,不是数据集的大小,而是不确定性。
计算信息熵
信息增益
信息增益:熵-条件熵。表示在一个条件下,信息不确定性减少的程度。
计算信息增益
信息增益率
懂了!
决策树是一棵树,包含所有可能的分支,所以初始化需要训练。
计算好信息增益之后,将值比较大的放在前面(树的前面),因为信息增益是表明哪个能够显著减少不确定性的。这样子构建一棵树,每次走的时候按照信息增益判断就行了,目的是最大程度减少不确定性。
信息增益率
假如某个条件极其严格,比如某个同学提前知道了所有选题的答案,那么将选题的序号作为条件,不存在任何不确定性,所以可以得到最大的信息增益。但是这个条件是没有意义的,假设老师换一份考卷答案就全部作废了。
信息增益率在信息增益的基础上增加了惩罚项,惩罚项是特征的固有值,是避免上述情况而设计的。
基于贝叶斯的分类
用好这条公式
因为比较的时候P(X)是一致的,所以关注P(X|H)*P(H),也就是概率计算。
举个例子:
H0为癌症,H1无癌症
P(H0) = 0.008,P(H1) = 0.992
P(+|H0) = 0.98,P(-|H0) = 0.02
P(+|H1) = 0.03,P(-|H0) = 0.97
所以式子1为0.98 * 0.008 = 0.00784
式子2为0.03 * 0.992 = 0.029759999999999998
所以应该判定为患有癌症。
tips:当分子出现0的时候,请实用拉普拉斯平滑处理,对每一个特征都+1,分母加上特征量N
支持向量机SVM
基本思想和原理
SVM是一种监督性学习,对数据进行二元分类的广义线性分类器。
决策边界是对学习样本求解的最大边距超平面。
SVM使用损失函数计算经验风险并加入了正则化项以优化结构风险,是一个具有稀疏性核稳健性的分类器。
实际上一句话概括就是,SVM是最大间隔线性分类器。通过核函数将数据从低纬映射到高纬,在高维上实现数据可分。
有一些公式:
M = margin Width = 2 / iroot(w.w, 2),这里是w点乘w向量
w.w’ = w1 * w’1 + w2 * w’2 + w3 * w’3 + … + wn * w’n
计算最小w需要使用 梯度下降/退火算法等。这里不在研究范围之内。
核函数
实际上就是低维数据到高维数据的映射
不同的核函数会导致不同的SVM算法
KNN K-最近邻分类
基本思想和原理
距离公式:欧氏距离
曼哈顿距离
闵科夫斯基距离
训练阶段主要是通过计算样本之间的相似度来构建一个特征空间模型,并保存训练样本数据。
在KNN算法中,没有像其他机器学习算法那样需要学习和调整参数的过程。KNN算法的主要任务是在预测阶段根据新样本与训练样本之间的相似性,通过计算最近邻的投票或平均值来进行分类或回归预测。
k-means算法(聚类) → 基于划分的方法
这里的k是质心数,也就是有多少个类。
DBSCAN → 基于密度的方法
DBSCAN算法将数据点分为三类:
1、核心点:在半径Eps内含有超过MinPts数目的点。
2、边界点:在半径Eps内点的数量小于MinPts,但是落在核心点的邻域内的点。
3、噪音点:既不是核心点也不是边界点的点。
两个参数:半径r和指定范围内的数目MinPts