非常普通的学习笔记
如果把有监督学习算法归结成$f(x)\rightarrow y$ ,那么在NLP中,可以把 $x$看做j句子里的一个词语,$y$是这个词语的上下文词语,于是这里的$f$就是语言模型(Language model),它的作用是判断$(x,y)$是否符合NLP法则
Word2vec 来源于这个思想;但不同的是,它的最终目的,只关心模型训练完后的副产物—模型参数(这里特指神经网络的权重),并将这些参数,作为输入 x 的某种向量化的表示,这个向量便叫做—词向量
从语言模型的概念出发有
现在我们想通过输入的$x$来预测$y$,但是这里的数学模型直接受数值型的输入,同样由于这个是训练之前,我们也不可以用word2vec,我们现在想要的是$x$的一个原始输入形式— one-hot encoder
One hot encoding is a process by which categorical variables are converted into a form that could be provided to ML algorithms to do a better job in prediction.
The categorical value assignment can be done using sklearn’s LabelEncoder. However, problem with label encoding is that it assumes higher the categorical value, better the category.
举例:产生这个的原因,假如现在有三家公司名字分别为XYZ,当他们转换成 Label Encoder 之后会变成1 2 3。这时,就会导致在分析的时候机器会认为Z>Y>X,甚至还会出现 (X+Z)/2 = Y的情况,但是这显然是不对的
所以,当我们想要二进制化目录同时保留他们原有的特性(每个词语的唯一性)的时候我们更多的是使用one-hot encoder
$x$ 就是上面提到的 one-hot encoder 形式的输入,$y$ 是在这 $V$ 个词上输出的概率,我们希望跟真实的 $y$ 的 one-hot encoder 一样。
首先,隐层的激活函数其实是线性的,相当于没做任何处理(这也是 Word2vec 简化之前语言模型的独到之-------处),我们要训练这个神经网络,用反向传播算法,本质上是链式求导,在此不展开说明了,
当模型训练完后,最后得到的其实是神经网络的权重,比如现在输入一个 x 的 one-hot encoder: [1,0,0,…,0],则在输入层到隐含层的权重里,只有对应 1 这个位置的权重被激活,这些权重的个数,跟隐含层节点数是一致的,从而这些权重组成一个向量 $vx$ 来表示$x$,而因为每个词语的 one-hot encoder 里面 1 的位置是不同的,所以,这个向量 $vx$ 就可以用来唯一表示 $x$
另外,输出 $y$ 也是用 $V$ 个节点表示的,对应V个词语。激活的是隐含层到输出层的权重,这些权重的个数,跟隐含层一样,也可以组成一个向量 $vy$,他的维度和 $vx$ 一样,并且可以看做是该词语的另一种词向量。而这两种词向量 $vx$ 和 $vy$,成为输入向量和输出向量
Word2vec 本质上是一种降维操作—把词语从 one-hot encoder 形式的表示降维到 Word2vec 形式
更一般的情形为:当 y 有多个词的时候,这时候的网络结构图会变成并联
。。。
Word2vec的本质是语言模型,输出的本质是一个多分类问题。然而实际当中,词语的个数非常非常多,会造成极大的计算困难,于是需要技巧来加速训练
The sentence embedding is defined as the average of the source word embeddings of its constituent words. This model is furthermore augmented by also learning source embedding for not only uni-grams but also n-grams of words present in each sentence, and averaging the n-gram embedding along with the words.
Predict from source word sequences to target words, as opposed to character sequences to target words.
决策树是一种依托于策略抉择而建立起来的树。是一种预测模型,代表的是一种对象特征属性与对象目标值之间的一种映射关系。
决策树只有单一输出;如果有多个输出,可以分别建立独立的决策树来处理不同的输出
J. Ross Quinlan于1975提出的一种贪心算法
建立在奥卡姆剃刀
的基础上,越是小型的决策树越优于大的决策树
奥卡姆剃刀(英语:Occam's Razor, Ockham's Razor),又称“奥坎的剃刀”,拉丁文为lex parsimoniae,意思是简约之法则,是由14世纪逻辑学家、圣方济各会修士奥卡姆的威廉(William of Occam,约1287年至1347年,奥卡姆(Ockham)位于英格兰的萨里郡)提出的一个解决问题的法则,他在《箴言书注》2卷15题说“切勿浪费较多东西,去做‘用较少的东西,同样可以做好的事情’。”换一种说法,如果关于同一个问题有许多种理论,每一种都能作出同样准确的预言,那么应该挑选其中使用假定最少的。尽管越复杂的方法通常能做出越好的预言,但是在不考虑预言能力(即结果大致相同)的情况下,假设越少越好。
信息增益越大,区分样本的能力就越强,越具有代表性。于是根据信息增益的分支标准来划分数据,重复之后生成决策树,这是一种从上向下的贪心算法
ID3并非不能用于连续值,只是当处理连续值得时候会有非常多可分点,于是时间复杂度会变得大,计算缓慢
C4.5在ID3的基础上进行了改进,克服了两个缺点
CART(Classification And Regression Tree)算法既可以用于创建分类树,也可以用于创建回归树。其重要特点包含其中三个方面
当特征的值是离散的,同时是具有两个以上的取值,则算法会考虑将目标类别合并成两个超类别,即双化
上面的过程完成了决策树的生成
通过算法生成的决策树非常详细而且庞大,在如此详细的情况下,这样的分类在训练数据上会表现的非常完好,但代价就是在测试数据上的表现会很差,简单来说就是过度拟合。
剪枝可分为预剪枝和后剪枝