文章吧手机版
《写给程序员的数据挖掘实践指南》读后感摘抄
日期:2020-10-25 03:40:34 来源:文章吧 阅读:

《写给程序员的数据挖掘实践指南》读后感摘抄

  《写给程序员的数据挖掘实践指南》是一本由[美] 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步,直到选够中心点为止

评价:中立好评差评
【已有2位读者发表了评论】

┃ 《写给程序员的数据挖掘实践指南》读后感摘抄的相关文章

┃ 每日推荐