TensorFlow实现自编码器

TensorFlow实现自编码器 学习笔记

1. 了解概念

自编码器(AutoEncoder):可以使用自身的高阶特征编码自己。 自编码器其实也是一种神经网络,它的输入和输出是一致的,它借助稀疏编码的思想,目标是使用稀疏的一些高阶特征重新组合来重构自己。

特征的稀疏表达(Sparse Coding): 使用少量的基本特征组合拼装得到更高层抽象的特征。

特点:

  1. 期望输入/输出一致
  2. 希望用高阶特征来重构自己,而不只是复制像素点

2. 作用

自编码器的作用不仅局限于给监督训练做预训练,也可以直接使用自编码器进行特征提取和分析。

3. 对数据进行降维

自编码器的输入节点和输出节点是一致的,但如果只是单纯的复制节点则没有意义。自编码器通常使用少量稀疏的高阶特征来重构输入。所以可以加入以下限制:

  1. 限制中间隐含层节点的数量。如果再给中间隐含层的权重加一个L1的正则,那就可以根据惩罚系数控制隐含节点的稀疏程度。
  2. 给数据加入噪声,即 去躁自编码器(Denoising AutoEncoder),从噪声中学习出数据的特征。最常使用的是 加性高斯噪声(Additive Gaussian Noise, AGN).

4. TensorFlow 实现自编码器

Read More

Logistic回归

《机器学习实战》

回归

概念:假设有一些数据点,我们用一条直线对这些点进行拟合,这个拟合过程成为回归。这条线称之为 最佳拟合直线。

主要思想:根据现有数据对分类边界线建立回归公式,以此进行分类。

“回归”一词源于最佳拟合,表示要找到最佳拟合参数集。

Sigmoid函数

f(x) = 1/(1 + e(-x))

当 x = 0时, f(x) = 0; 随着 x 的增大,f(x) 逼近于1;随着 x 的减小,f(x) 逼近于0。

2.Logistic回归分类器原理:

我们可以在每个特征上都乘以一个回归系数,然后把所有的结果值相加,将这个总和代入Sigmoid函数中,进而得到一个0~1之间的数值。 任何大于0.5的数据被分为1类,小于0.5则被归为0类。 所以,Logistic回归也可以被看成是一种概率估计。

Read More

Bag-of-Words-Meets-Bags-of-Popcorn

Bag of Words Meets Bags of Popcorn

kaggle上的项目: https://www.kaggle.com/c/word2vec-nlp-tutorial

深入了解情感分析,用了朴素贝叶斯来做。没有用sk-learn

思路过程
  1. 下载 Data 并读取
  2. 对文本作 html 标签处理
  3. 得到所有词语
  4. 去除高频词
  5. 文本词语变成词向量
  6. 训练模型,得到条件概率
  7. 对测试数据,Words2Vec 处理
  8. classifyNB() 得到分类结果
  9. to_csv() 保存

代码

Read More

朴素贝叶斯

公式

P(Y|X) = P(X|Y)P(Y)/P(X)
P(Y,X) = P(Y|X)P(X) = P(X|Y)P(Y)
P('属于某类' | '具有某特征')

只需要找到一些包含已知特征标签的样本,即可训练。

思想

贝叶斯的核心思想:高概率对应的类别。

如果 P(‘属于A类’| ‘具有某特征’) > P(‘属于B类’| ‘具有某特征’),那么(x,y)属于A类。

概念

  • 分词:把一句话拆成更细粒度的词语来。
  • 停用词(stop words):无助于我们分类的词。
  • 词袋子模型(bag of words): 贝叶斯失去了词语之间的顺序信息。
  • 朴素贝叶斯: 加上条件独立假设的贝叶斯方法

使用python进行文本分类

Read More

strtok与sscanf

两者都可以分解字符串,下面用两个函数分别实现把”08:50:11”解析成对应的十分秒。

1.strtok函数

原型

1
char *strtok(char s[], const char *delim);

功能

分解字符串为一组字符串。s为要分解的字符串,delim为分隔符字符串。
例如:strtok(“abc,def,ghi”,”,”),最后可以分割成为abc def ghi.

代码部分

Read More