20180319监督学习
一、监督学习算法
- 监督学习:样本标注上标签,从已知标签的数据(训练集)中学习出规律。主要由分类和回归两大算法。回归是预测一个连续的数值。分类是离散的。算法:SVM、决策树、神经网络、LR等
- 非监督学习:样本无标签,从样本集中发现规律算法:kmeans、lda、word2vec等
- 业界主要使用监督学习算法,研究和应用都是最广泛的,效果也非常好
监督学习算法流程:
现实生活中比较多的工作在与数据集、定义问题、寻找预料。
例子:
-
定义问题
情感极性分析,分析出文章、句子的情感极性。 -
寻找语料
寻找数据集:爬虫、众标注; -
特征工程
如何表示样本3.1. 抽取信息
比如一幅图片的信息:
毛发:黄
眼镜:2
特征需要具有区分性。
还需要消除噪音。
3.2 如何表示?
连续特征:(取值为实数域)
腿长度:0.5 毛长度:0.3 眼睛个数:2
二元特征:(取值为True/False)
吐舌头:0 四个腿:1
离散特征:(取值为有限集,枚举变量)
- 毛颜色:黄 (不是数值)
- 毛颜色: [1, 0, 0, 0] (黄色)
- 毛颜色: [1, 0, 1, 0] (又黄又蓝)
one-hot表示法
3.3 如何表示句子?
1.搜集数据集。
2.切词。
jieba、nlpc
今天/好/开心 好/高兴 不/开心
3.句子转换成向量(N-gram模型
切词:今天好 开心 高兴 不
uni-gram表示:label就是正向、负向。
4.bi-gram
uni-gram存在局限,考虑两句子的表示:我不开心 VS 不, 我开心
这里如果用uni-gram表示,则表示出来的向量是一样的。所以我们需要引入上下文相关,即引入两两词合并的特征,即bi-gram模型;注意,
稀疏、高维、模型处理更困难;最多到达5-gram。
5. 模型效果 = 特征(如何表示样本) + 模型(如何从样本中学习规律)
真实的数据挖掘场景下,大部分的精力是在特征工程,即如何更好地表示样本
深度学习:自动构建特征,无需人工定义
6. 除了直观的特征,还可以加入人工特征。
例如:TF-IDF、Topic特征、语义特征等
手工定义、统计、挖掘、模型输出等
二、模型建立(logistic regression)
- 线性回归模型
线性回归模型:利用直线来拟合历史数据
2.线性模型预测句子分类
3.如何得到句子的正向/负向的概率?
通过映射函数,映射到概率值
这里hw(x)指的是Sigmoid函数。因为值域与我们的y值一样,所以这里选用Sigmoid函数。
Sigmoid函数:
(0,1)取值范围,符合概率定义
处处光滑、二阶可导,其导数为:
4.最大似然目标函数
4.1 似然函数是一种关于统计模型中的参数的函数,表示模型参数中的似然性;
最大似然估计是样本的函数。
样本是由概率分布D抽样产生,通过样本构造似然函数,再推测概率分布D的参数。
- 构造似然函数
- 求解似然函数
4.2 观察到三个句子样本,由相互独立概率公式,似然函数为:
取对数似然函数:
应用公式得:
三、模型求解
随机梯度下降算法
while not coverage:
对最大似然函数使用SGD下降算法
while not coverage:
对每个参数求偏导数
- for sample x:#对于每个样本
- for i in feature_list:#再对于每个参数
本质上就是求偏导
第二种方法:最小二乘:
四、总结
最大似然估计:主要能求出label出现的概率即可以考虑使用此目标函数
业界主要使用监督学习算法,研究和应用都是最广泛的,效果也非常好