《写给程序员的数据挖掘实践指南》是一本由[美] Ron Zacharski著作,人民邮电出版社出版的平装图书,本书定价:59.00,页数:400,特精心从网络上整理的一些读者的读后感,希望对大家能有帮助。
《写给程序员的数据挖掘实践指南》精选点评:
●习惯用字典代替矩阵
●实在太粗浅了,但凡有一点背景的人就完全完全不建议读,两三篇博客就能说清楚的内容能洋洋洒洒写一本书!还好原版不要钱。而且特别喜欢用一些乐队啊电影啊运动员啊举例子不了解的连一点intuition都没有,为啥就不能举点大家都知道的香蕉苹果大鸭梨的例子呢?!
●睡前读物,非常适合入门!很好很不错,公式讲解详细,初中生都能看懂,读过后对于数据挖掘的基本概念和基本术语有很好的了解。
●这本书理论比较简单,书中错误较少,动手锻炼较多,如果每个代码都自己写出来,收获不少。总结:适合入门。
●对于0基础的程序员非常适合。 1.只需要概念ok。不需要推导。 2.库都有现成的。干嘛要实现。 3.有实现就代表有思路。 反正挺适合我这种学渣快速撸一个推荐系统。不至于还需要发个1年时间抱着高数啃来啃去。
●鉴于python水平和算法难度,改成'写给高中生的数据挖掘实践指南'比较合适
●非常通俗易懂,看完立即就能写出程序,就像很久以前看Head First Design Pattern一样的感觉。
●入门
●浅显易懂,深入浅出。
●很简单易懂的一本书
《写给程序员的数据挖掘实践指南》读后感(一):适合初学者的好书
一本小众的书吧,不过对于初学者来说足够用了,这本书不是讲数据挖掘的理论,而是通过生活中的例子讲解了是数据挖掘,讲解了数据挖掘中常见的公式,而且通过python编程给出了源代码。公式的讲解不是从数学角度推理,演算,讲解的,而是从实用角度出发,通过例子,通过要解决的问题,一步步引出公式,使得公式非常容易接受和理解
《写给程序员的数据挖掘实践指南》读后感(二):在线中文版
[面向程序员的数据挖掘指南 · GitBook](https://www.gitbook.com/book/wizardforcel/guide-to-data-mining/details)
gt; 这本书以Creative Commons协议发布,可以免费下载。你可以任意分发这本书的副本,或者重新组织它的内容。也许将来我会提供一本纸质的书籍,不过这里的在线版本永远是免费的。
《写给程序员的数据挖掘实践指南》读后感(三):完整,适合入门,很好掌握
说说这本书的优点吧。
1. 这本书好在节奏上。虽说有300页,但其实看起来很轻松,可以很快看完。而且有一些篇幅直接是放的代码,较真的人可能觉得有点浪费纸张,但这样可以脱离操作电脑专注在书本上,还能对代码行写写画画做笔记。
2. 看这本书没有压力。所有的问题让你想一想后都会给出答案和代码。这样对自己思考的结果会有一个评判。还有,公式都特别大,据说公式放大看就显得看上去更简单。
3. 所用的数据集和案例简单易懂。看完这本书,可以说就入门了,以后看其他相关书籍都会觉得似曾相识的。
4. Python代码简洁、一致。代码很好懂,而且越看到后面会发现只是在前面代码上的少量叠加。熟能生巧,到后面自己尝试写新代码了吧。
目前不知道怎么说缺点,等我多看几本之后再来看能不能说出几条缺点来。
《写给程序员的数据挖掘实践指南》读后感(四):读书笔记
版权归作者所有,任何形式转载请联系作者。
作者:黄药师(来自豆瓣)
来源:https://www.douban.com/note/587325115/
第二章,协同过滤——爱你所爱(计算用户之间有多少共性)
曼哈顿距离(manhattan):各维直接相减(r=1)
欧氏距离(euclidean):利用勾股定理得到(r=2)
上确界距离:(r=∞)
注:r越大,某一维上的差异对最终影响越大
皮尔逊相关系数(pearson):不同用户评价尺度差异很大时,使用。(公式太复杂,参看下面的代码def pearson)
余弦相似度(cos):数据稀疏时,使用: x × y / (|x| × |y|) (结果为1代表完全相似,-1代表完全不相似)
k近邻:权重百分比 = pearson / ∑pearson。投影 = ∑(打分*权重百分比)
********************另********************
欧氏距离能够体现个体数值特征的绝对差异,
所以更多的用于需要从维度的数值大小中体现差异的分析,
如使用用户行为指标分析用户价值的相似度或差异。
余弦距离更多的是从方向上区分差异,而对绝对的数值不敏感,
更多的用于使用用户对内容评分来区分兴趣的相似度和差异,
同时修正了用户间可能存在的度量标准不统一的问题(因为余弦距离对绝对数值不敏感)。
用户对内容评分,按5分制,X和Y两个用户对两个内容的评分分别为(1,2)和(4,5),使用余弦相似度得到的结果是0.98,两者极为相似。但从评分上看X似乎不喜欢2这个 内容,而Y则比较喜欢,余弦相似度对数值的不敏感导致了结果的误差,需要修正这种不合理性就出现了调整余弦相似度,即所有维度上的数值都减去一个均值,比如X和Y的评分均值都是3,那么调整后为(-2,-1)和(1,2),再用余弦相似度计算,得到-0.8,相似度为负值并且差异不小,但显然更加符合现实。
********************另********************
第三章,协同过滤——基于物品的过滤
基于用户的过滤叫内存的协同过滤
基于物品的过滤叫模型的协同过滤
现基于模型,对用户a进行预测
1、先做产品之间的余弦相似度。(评分先减平均分,以抵消个人习惯影响)
2、归一化用户a的评分,将[1, 5]变为[-1, 1]
归一化公式:NR = 2 * (R-min) / (max-min) - 1
反归一化公式:R = (NR + 1) * (max-min) / 2 + min
3、∑(NR * cos) / ∑|cos| (两个商品的相似度越高,用户对此商品的打分,用来预测新商品时就越有效)
4、将上值再反归一化到[1, 5],得到最终分。
lope one算法
1、偏差(dev):a、b两商品的打分相减,求和后,除以打分人数。
2、(∑ (score + dev) * card) / ∑card (利用某人已有的打分,偏差出对该商品的打分,再以偏差人数为权重加权)
归一化:(推荐书目:the manga guide to statistics(漫画统计学))
标准差sd = √ ( ∑(x -  ̄x)^2 / card(x) )
标准分数 = (x -  ̄x) / sd
把均值改为中位数,可以减少离群点的剧烈影响: asd = (∑|x - x中位|) / card(x)
标准分数 = (x - x中位) / asd
近邻分类:找出离此商品最近的商品,看下用户对它的态度(或看它属于哪一类),得出结论。
问:为何书中用的是曼哈顿距离?
ormalization将数归入到[0,1]:(value - min) / (max - min)
tandardization使平均值变为0,效果比前者更好。
第五章,算法评估
注:不要把训练的数据用来测试。
10折交叉验证:分10份,9:1这样测10次。
留一法(leave one out):效率差,但结果准。而且不会像10折法一样,因为分法不同,而得出不同结果。
分层采样(stratification):10折时,每一类的数据均分到每一折里面。留一法不存在此问题。
混淆矩阵:一目了然,数据被错分到哪里去了。
kappa统计量:κ = (P(c) - P(r)) / (1 - P(r))
(c)是实际分类的正确率,P(r)是随机分类的正确率
kappa > 0.75 结果相当好;< 0.4 结果不太理想;< 0 比随机结果还差
rote分类器:只对训练集中出现过的物品进行分类。
近邻分类器的问题:遇到离群点时会发生问题。
kNN:考察N个最近的邻居。距离的倒数做成权重百分比,乘以分数。
更多数据vs更好算法:一个更大的数据集比一个好的算法更有效。所以提高算法的性能使之能处理更多的数据,比单纯改良算法更实用。
第六章,朴素贝叶斯
近邻方法被称为惰性学习器(lazy learner),每次都要遍历。
贝叶斯方法被称为勤快学习器(eager learner),通过训练构建模型,通过模型进行分类。分类速度更快。
(h|D) = P(h∩D) / P(D) = P(D|h) * P(h) / P(D)
先验概率P(h),后验概率P(h|D)
最大后验假设(the maximum a posteriori hypothesis): hmap = arg max P(D|h) * P(h) / P(D)
因为P(D)都一样,hmap = arg max P(D|h) * P(h)
(h|D) ≈ P(D|h) * P(h)
推荐书:the numerati(当我们变成一堆数字)太虚不喜欢
(x | y) = nc / n 调整为:
(x | y) = (nc + mp) / (n + m) 《机器学习》第179页
其中m是等效样本容量,有多少种选择,如2
为概率的先验估计,通常设为均匀分布,如0.5
这样防止出现概率0的情况,直接破坏结果。
贝叶斯就是计数,对于连续值比如考试分数:
方法一、可以按分数分为不同的类别,再套贝叶斯。
方法二、高斯分布。
总体标准差sd = √ ( ∑(x -  ̄x)^2 / card(x) )
样本标准差sd = √ ( ∑(x -  ̄x)^2 / (card(x) - 1) )
拿到所有数据时,前者更好;只拿到部分时,后者更优。
高斯分布就是正态分布,68%在一个标准差内,95%在两个标准差内。
通过公式算出某个取值的概率。
朴素贝叶斯 vs kNN:
贝叶斯需要的训练数据更少,性能更好。但无法学到特征间的相互作用,如我喜欢巧克力,也喜欢粥,但不喜欢巧克力加粥一起吃。
kNN不用假设数据有特定结构,但需要大量内存。训练集大时的好选择,如推荐系统、蛋白组学及图像分类等。
贝叶斯需要各属性之间互相独立,才能用乘法去算概率,然而很多时候并不满足,我们假装它满足然后去用,结果效果还不错。这里的假装就是“朴素”的来源。
第七章,非结构化文本分类
有序处理量太大,所以只看词的出现次数。
(w|h) = (n + 1) / (n + |vocabulary|)
注:|vocabulary|为词汇表中的词数
概率相乘时,数字太小容易变成0,所以改用math.log()后相加。
停词:去掉对分类没有关系的词,如i a the等
停词不等于常见词,work write school等虽常见,但对分类有用。
反对观点,不要盲目停词,如:
1、只使用最频繁的词时,能够判定阿拉伯语文档的写作地(埃及、苏丹、叙利亚还是英国)
2、在线聊天时,性犯罪者更多的使用i me you
第八章,聚类
聚类的种类:
1、k-means聚类:需要确定最后分成多少组。
2、层次聚类:开始时每个实例都看成一个簇,每迭代一次就合并两个最相似的簇,直到最后只有一个簇。
聚类距离计算方式:
1、单连接聚类:使用两集合中相距最近的两个元素来计算长度。
2、全连接聚类:使用两集合中相距最远的两个元素来计算长度。
3、平均连接聚类:一个集合中所有元素到另一集中中所有元素距离的平均。
k-means聚类:
1、随机取n个点作为类别
2、将每个实例分到离它最近的类别
3、计算每个类别的平均点,作为新的中心点: ( ̄x,  ̄y,  ̄z, ....) 其中, ̄x = (x1 + x2 + x3 + ... xn) / n
4、以上面的中心点再次分类,直到结果不再变化为止
此算法开始改善较多,后期只是微调,所以为了降低运算时间,
将“所有点不再从一个类别移到另一类别”放宽到,
“只有不到1%的点会从一个另类移到另一类别”。
误差平方和SSE,也称为散度scatter:
计算每个点到所属中心点距离的平方,并求和。
E = ∑dist(c,x)^2
多次k-means聚类得到不同结果时,SSE小的结果更好。
k-means++聚类,更好的选择初始点:
1、先随机选一个中心点
2、计算每个实例离各中心点的距离(开始为1个中心点,每次增加一个中心点)
3、每个实例选一个最近距离,作为选中此实例为中心点的概率,选一个中心点
4、重复第2步,直到选够中心点为止