C++机器学习(4)Logistic回归

部分资料下载地址: http://pan.baidu.com/s/1bpsgt5t 提取码fwxf
源码下载地址:https://github.com/fawdlstty/hm_ML

继续开始机器学习的研究。这次的内容叫Logistic回归。什么叫Logistic回归?直观理解就是,通过不断的迭代,使结果接近最优解。
如下图示例:
20160517120948
在由θ0、θ1以及J(θ0,θ1)组成的三维立体空间中,从最开始的山顶上,每走一步计算一下怎样走下山最快。通过不同的起点或不同的步长,甚至可以获得不同的结果,比如红色箭头所标注的位置。
继续阅读C++机器学习(4)Logistic回归

C++机器学习(3)朴素贝叶斯

部分资料下载地址: http://pan.baidu.com/s/1bpsgt5t 提取码fwxf
源码下载地址:https://github.com/fawdlstty/hm_ML

朴素贝叶斯这东西呢,主要用于文本相关处理,比如通过邮件内容判断是否是垃圾邮件等等。
具体实现思路是:比如判断某个邮件的内容是否是垃圾邮件,那么弄两个文本向量,分别代表正常邮件的关键字与垃圾邮件关键字,然后计算哪边关键字出现的多就按次数多的定义。比如正常邮件关键字有3个,垃圾邮件关键字有20个,那么这邮件是垃圾邮件的概率大于这是正常邮件的概率,那就定义这邮件为垃圾邮件。
这个对于英文来说非常容易实现,但对于中文来说就不是那么回事了,因为中华汉字博大精深嘛,关键字非常不好找,算法的学习也是一件非常耗时的工作。所以这儿呢,我就简单实现一个类似的东西吧,我将实现,判断一句话的情感状态。
首先是分词,我选择friso;然后是情感词库,我找的一个网上的情感词汇本体库。这些东西在上面的源代码下载里面已经包括了。
继续阅读C++机器学习(3)朴素贝叶斯

C++机器学习(2)决策树

部分资料下载地址: http://pan.baidu.com/s/1bpsgt5t 提取码fwxf
源码下载地址:https://github.com/fawdlstty/hm_ML

M$大大前段时间弄了个小冰读心术,大概意思是通过15个问题,回答是、否、不知道,小冰就可以猜出你想的是什么人物。连接在这 微软小冰·读心术
这种逻辑非常像二叉决策树,通过递归(高手也可以用迭代)判断特征,最终确定目标类型。每次判断的分支有两种类型,一种是二叉决策树,一种是多叉决策树,它们之间并没有绝对的优劣之差,各自有各自的优点。
示例决策如下图所示:
20160422211450
上图只是一个比较精简的决策的示例,可见决策树从速度上效率比之前的k-近邻算法强很多。实际上决策树也就是k-近邻算法的优化版,在损失一定精度情况下,可以使判断速度减少一个数量级。
继续阅读C++机器学习(2)决策树

C++机器学习(1)k-近邻算法

部分资料下载地址: http://pan.baidu.com/s/1bpsgt5t 提取码fwxf
源码下载地址:https://github.com/fawdlstty/hm_ML

又是一个神秘的领域,对于C++程序猿来说,机器学习就像小白对C++一样。什么手写识别,什么自动驾驶,对于C++程序猿来说,几乎是不可能的实现。但如果了解原理之后,机器学习也就这么回事。这篇文章简要介绍机器学习以及用C++实现一个简单的机器学习算法——k-近邻算法。
首先说一下变种病毒。变种病毒的核心实现是动态随机修改指令,用于绕过几乎所有的特征码杀毒引擎,实现上并不是病毒自身会进化,而是仅仅修改了实现方式。从汇编角度上来说,比如以下代码:

1
mov eax, 10h

以上代码的含义是,将16这个立即数放在eax寄存器里面。变种核心模块将以上代码替换为如下形式

1
2
3
4
5
push ebx
mov ebx, 12h
sub ebx, 2h
mov eax, ebx
pop ebx

以上代码的实现效果与上面那一行代码完全相同。如果之前的代码是杀毒引擎标记的特征的话,那么变种病毒经过这次变种后,杀毒引擎就找不到特征了,于是实现了过杀毒引擎的效果。虽然变种病毒听起来很恐怖,但实际上病毒所实现的效果并不会改变,也就是说,以前没有的功能,病毒并不会在自我升级中产生。
继续阅读C++机器学习(1)k-近邻算法