朴素贝叶斯(naive Bayes)

简介

朴素贝叶斯法是基于贝叶斯定理与特征条件独立假设的分类方法。其基本的思路是:对于给定的训练数据集,首先基于特征条件独立假设学习输入和输出的联合概率分布,然后基于该模型,对于给定的输入x,利用贝叶斯定理求出后验概率最大的输出y。
朴素贝叶斯法实现简单,学习和预测的效率都很高,是一种比较常用的方法。

朴素贝叶斯法

朴素贝叶斯法是典型的生成学习方法。
输入空间$X$,输出空间$Y$,由训练数据学习联合概率分布$P(X,Y)$,然后求得后验概率分布$P(Y|X)$

条件独立性假设

条件概率分布
$P(X=x|Y=c_k)=P(X^{(1)}=x^{(1)},\ldots,X^{(n)}=x^{(n)}|Y=c_k), k=1,2,\ldots,K$

朴素贝叶斯法对条件概率分布作了条件独立性的假设:
$P(X=x|Y=c_k)$

$=P(X^{(1)}=x^{(1)},\ldots,X^{(n)}=x^{(n)}|Y=c_k)$

$=\prod^n_{j=1} P(X^{(j)}|Y=c_k)$
由于这一假设,模型的条件概率的数量大为减少,朴素贝叶斯法的学习与预测就简化了很多,并且容易实现。然而,这也导致分类的性能不是很高。

贝叶斯定理

朴素贝叶斯法利用贝叶斯定理与学到的联合概率模型进行分类预测。

$P(Y|X) = \frac{P(X,Y)}{P(X)}=\frac{P(Y)P(X|Y)}{\sum_YP(P(Y)P(X|Y))}$

对输入x得到后验概率最大的类y

$y=\arg \max_{c_k}P(Y=c_k)P(X_j=x^{(j)}|Y=c_k)$

$y=\arg \max_{c_k}P(Y=c_k) \prod_j P(X_j=x^{(j)}|Y=c_k)$

Read More

K近邻法与k-means

简介

K近邻法(knn)是一种基本的分类与回归方法。k-means是一种简单而有效的聚类方法。虽然两者用途不同、解决的问题不同,但是在算法上有很多相似性,于是将二者放在一起,这样能够更好地对比二者的异同。

算法描述

knn

算法思路:
如果一个样本在特征空间中的k个最相似(即特征空间中最邻近)的样本中的大多数属于某一个类别,则该样本也属于这个类别。

k近邻模型的三个基本要素:

  1. k值的选择:k值的选择会对结果产生重大影响。较小的k值可以减少近似误差,但是会增加估计误差;较大的k值可以减小估计误差,但是会增加近似误差。一般而言,通常采用交叉验证法来选取最优的k值。
  2. 距离度量:距离反映了特征空间中两个实例的相似程度。可以采用欧氏距离、曼哈顿距离等。
  3. 分类决策规则:往往采用多数表决。

k-means

算法步骤:

  1. 从n个数据中随机选择 k 个对象作为初始聚类中心;
  2. 根据每个聚类对象的均值(中心对象),计算每个数据点与这些中心对象的距离;并根据最小距离准则,重新对数据进行划分;
  3. 重新计算每个有变化的聚类簇的均值,选择与均值距离最小的数据作为中心对象;
  4. 循环步骤2和3,直到每个聚类簇不再发生变化为止。

k-means方法的基本要素:

  1. k值的选择:也就是类别的确定,与K近邻中k值的确定方法类似。
  2. 距离度量:可以采用欧氏距离、曼哈顿距离等。

    Read More

Perl过滤、复制文件

功能

从指定的目录中,根据文件列表,将文件复制到指定的目录中。

注意:文件列表没有指定文件后缀,输入参数中要指定文件后缀。

核心部分:复制文件

样例(demo)

use File::Copy;
copy("sourcefile","destinationfile") or die "Copy failed: $!";

介绍(description)

copy函数需要两个参数:复制源文件和复制目标文件。每个参数都可以是字符串,也可以是文件句柄引用或者文件句柄。

原文:(http://perldoc.perl.org/File/Copy.html

代码

源代码文件下载:https://github.com/shuaijiang/PerlScript/blob/master/filter.pl

#!/bin/perl
#This Perl script is copy files from given source directory to 
#given target directory according to given scp

#Author: shuaijiang
#Email: zhaoshuaijiang8@gmail.com
use strict;
use File::Copy;

if($#ARGV != 3)
{
    print "Usage: perl file.pl scp source_path target_path suffix\n";
    exit;
}
my $scp = $ARGV[0];
my $source_path = $ARGV[1];
my $target_path = $ARGV[2];
my $suffix = $ARGV[3];

open(SCP,"<$scp") or die "Can't open $!\n";
while (<SCP>) {
    chomp;
    my $file = $_;
    my $source_file = $source_path . '/' . $file . $suffix;
    my $target_file = $target_path . '/' . $file . $suffix;
    print "source_file=$source_file target_file=$target_file\n";
    copy("$source_file","$target_file") or die "Copy file failed!\n";
}
close(SCP);

《信息简史》读书笔记

起因

之前就有人推荐《信息简史》这本书,趁京东周年庆打折,就买了下来。作为计算机方向的小硕,自然不能错过了这方面的好书。
有很多业内知名人士推荐,有的还做了序,但是这些都掩盖不了原作者的低调和内涵。

引子

从香农的信息论开始说起。香农提出了比特这一概念,是用来测量信息的基本单位。从此之后,人类社会与以往任何时候大大不同了,人类迈入了影响至今的信息时代。
思维导图-信息

Read More

浅谈语音合成方法

引言

从整个语音合成的发展历史来看,早期的机械式语音合成器反映了人们对语音产生机理了解得比较粗略,现代语音合成方法基本上都是采用一种语音模型来合成语音。近期的语音合成方法可以归纳为四种:1.物理机理语音合成;2.源-滤波器语音合成;3.基于波形拼接技术的语音合成;4.可训练的语音合成。5.基于神经网络的语音合成。

Read More

基于DTW的孤立词语音识别

引言

近年来,语音识别已经成为一个非常活跃的研究领域。目前,语音识别技术已经作为一种重要的人机交互手段,辅助传统的键盘、鼠标等输入设备,在个人计算机上进行文字录入和操作控制。而在平板电脑、智能家电、工业现场控制等应用场合,语音识别技术则有更为广阔的发展前景。

在特定人孤立词语音识别中,最为简单有效的方法是采用动态时间规整(Dynamic Time Warping,DTW) 算法,该算法基于动态规划的思想,解决了语音长短不一的模板匹配问题,是语音识别中出现最早、较为经典的一种算法。

本文首先介绍基于DTW的孤立词语音识别系统,然后分别介绍系统各个部分的具体实现,最后介绍基于该系统进行的孤立数字识别实验和结果。

Read More

人性之恶

昨天晚上在百讲看了北大爱雅玛雅剧团《请君入瓮》,不说是精彩纷呈,也算是发人深省;几位学生演员虽不是最专业,却一定是最投入的。当然,其中所揭示的道理,简单而又深刻,不得不引起大家的共鸣和反思。

戏剧中的游戏是对一个人的审判,更是对人性的审判,让我们每个人都反思自己的人性,反思整个人类的丑与恶。我不想加入“人之初,性本善”与“人之初,性本恶”的争论之中,也不想惊叹人类千年所创造的文明。我只想反思人性之恶,反思人类的丑恶。

太多的悲剧,太多的冷漠,无不显现人性之恶。从千年来与人类文明一直共存,甚至可以称为兄弟的残酷战争;到现在职场上,尔虞我诈的明争暗斗。人性之恶从来没有离我们远去,反而有过之而无不及。甚至自己明明知道这样做是丑恶的,但还是为了自己的利益而放弃了人之善。

我不知道离开了善,是否还能够在这个社会上好好生存。但是,与恶为伍,终究会得到正义法庭的审判。

2014/5/16 23:57:19

基于HMM的参数式语音合成

背景介绍

20世纪90年代中期,参数式语音合成得到人们的关注;基于HMM的参数式语音合成快速发展,并成为主流。

隐马尔科夫模型(Hidden Markov Models, HMM)

20世纪60年代末,Baum在理论上给出了关于隐马尔科夫模型的数学推理。一直到80年代,才有人用来解释语音信号的产生过程。经过30多年的发展,HMM已经被广泛应用到语音识别、说话人识别和语音合成等领域,并取得了巨大的成功。

Read More