zoukankan      html  css  js  c++  java
  • 《python数据分析与挖掘实战》-张良均

    【读书笔记与思考】《python数据分析与挖掘实战》-张良均

    最近看一些机器学习相关书籍,主要是为了拓宽视野。在阅读这本书前最吸引我的地方是实战篇,我通读全书后给我印象最深的还是实战篇。基础篇我也看了,但发现有不少理论还是讲得不够透彻,个人还是比较倾向于 《Machine Learning》--Tom M.Mitchell,Andrew 的 machine learning 课程,或周华志的《机器学习》,Jiawei Han 的 《data mining》。相对于本书的基础篇,这些侧重于理论基础的课程和书籍对基础模型的理解和阐释要更系统化。另外,值得注意的是本书基础篇有多处错误,比如高斯分布的公式,阅读时应当留意。

    机器学习的工程实践过程大致可分为如下几个步骤:问题抽象、确定目标、采集数据、数据预处理(探索、清洗和变换)、模型选择与构建、模型评价和模型应用。

    • 其中问题的抽象和目标确定很关键,只有充分的理解“我们想要什么”才能更好的去思考“如何做”。
    • 数据采集的手段多种多样,常见的有传感器、互联网数据库、爬虫等,采集的手段往往和业务背景密切联系。
    • 数据预处理,这个环节往往要耗费大量时间并且需要灵活的思考,为了保证数据的质量这一步骤尤为关键。我们需要调研一些领域知识,基于领域知识和统计特征对数据进行前期的探索,在进一步清洗的基础上进行数据变换,即特征提取。特征工程往往是模型成败的关键,这里需要多加思考、联合领域知识并反复尝试评估。
    • 模型选择与构建,机器学习和数据挖掘发展至今已经有很多成熟的模型可供使用。很多时候我们需要基于业务的场景以及任务目标对比不同的模型进行选择。我们需要深入理解模型的原理、应用场景和优缺点。
    • 模型的评价,机器学习的最终目的是降低泛化误差,然而我们只能通过有限的数据(训练数据)对其进行近似计算。如何根据不同的任务,选择合适的指标对模型进行评估很关键。比如回归问题的 RMSE。分类问题的 accuracy, precision, recall, f1-scall 等。充分利用图表,比如 ROC等。
    • 模型的应用,对资源、模型的实时性等方面进行综合考虑。我们需要定期的更新我们的模型以适应环境的变化。

    本书涉及的主要内容包括时间序列分析分类回归预测关联关系挖掘推荐系统。以下是我读过的一些书籍整理,可以作为进一步的扩展。这里还想到了本科时学的《数学建模》,实际上和数据挖掘的流程很相似。

    • 时间序列分析可以进一步参考《时间序列分析及应用》——Jonathan D.Cryer,《Time Series Analysis and Its Applications with R examples》-- Robert H. Shumway。相对于 Python,其实 R 在时间序列分析上的支持更为完善。
    • 统计机器学习(分类,回归预测):sklearn 官方的 tutorial 我觉得很好,理论的话,《Machine Learning》--Tom M.Mitchell,Andrew 的 machine learning 课程,或周华志的《机器学习》。
    • 数据挖掘:最为经典的Jiawei Han 的 《data mining》,其中涉及了数据挖掘的基本流程和方法、数据处理、数据仓库、分类、预测、异常检测、关联关系挖掘等内容。“Data Mining”--Charu C.Aggarwal,其特点是加入了时序数据处理的内容,可作为进阶内容。
    • 推荐系统:《推荐系统实践》——项亮,很好的入门书籍。
    • 关于工具,我觉得官网的 tutorial 是很好的入门资料。

    我没有动手实操,阅读旨在拓宽自己的视野,也是出于对各个行业如何应用机器学习的好奇。如果时间有余的读者不妨过一遍书本的例子,应该会有更深的认识。此外通过 kaggle 等比赛平台去进行实践也是不错的。

    总的来说,对于 data driven 的工程实践还是应该做足调研,几乎不可能有一个全新的方向和全新的难题。因此学会在巨人的肩膀上去拓展很重要,尤其是在数据科学这一交叉领域,注意团队合作。平时注重积累,处理问题发散思考很重要,很多特征的设计都很巧妙且有意思。

    完整版,更多内容

    概要总结

    作者:张良均、王路、谭立云、苏剑林
    注意:这本书有多处地方有误,尤其是公式推导部分。

    • 基础篇
    • 实战篇
      • 06. 电力窃漏电用户自动识别:基于 5 年所有窃电用户的有关数据(用户基本信息,各种用电功率等)对窃电用户进行识别。基于目标对数据进行清洗,缺失值填充。基于领域知识构建了 3 个指标:电量趋势下降指标-用电量趋势,线损指标-线损增长率,告警类指标-与窃漏电相关的终端告警数。基于 3 个指标利用 Keras 构建 LM 神经网络模型,准确率为 94%;Scikit-Learn CART 决策树的准确率为 94%。使用 ROC 曲线对模型进行评估。
      • 07. 航空公司客户价值分析:借助航空公司客户数据对客户进行分类,在此基础上对不同类客户进行对比分析发现有价值的模式。基于分析结果提供个性化服务,制定相应的营销策略。基于领域知识了解到 LRFMC模型,由此可计算 5 个关键指标作为特征,分别为客户关系长度 L, 消费时间间隔 R, 消费频率 F, 飞行里程 M 和折扣系数的平均 C。采用 k-means 聚类划分用户群,采用图表的形式分析不同用户群的特点并制定营销策略。
      • 08. 中医证型关联规则挖掘:借助三阴乳腺癌患者的病理信息,挖掘患者的症状与中医证型之间的关联关系。对截断治疗提供依据,挖掘潜在性证素。由于医疗数据的缺乏,通过问卷调查的形式获取数据。问卷调查仅针对患病者并且具有一定中以诊断学基础,能清除的描述病情。根据领域知识得到 6 种证型得分作为后期模型分析的基础。采用Apriori 算法进行关联关系挖掘,注意选择合适的最小支持度、最小置信度。
      • 09. 基于水色图像的水质评价:有经验的从事渔业生产的从业者可通过观察水色变化调控水质,以维持养殖水体生态系统中浮游植物、微生物、浮游动物等合理的动态平衡。我们期望通过机器学习的方法将这一过程自动化。通过拍摄照片获取不同水质的图片。这里我们还需要通过专家对数据打 label,这个过程很是费时费力,并且质量奖影响整体模型的效果。使用直接提取的方式对图片进行切割,在此基础上计算 一阶颜色矩,二阶颜色矩,三阶颜色矩 3 个特征。将特征向量输入到 svm 分类器中,这里有个需要注意的细节,征的范围都在 0~1 之间,如果直接输入 SVM,彼此之间区分度会比较小,因此不妨将所有特征统一乘以一个适当的常数 k,经过反复测试最佳的 k=30。
        实际上对于图片的处理,现在大多都直接采用 DNN,尤其是 CNN 在图像处理中表现出非常好的效果。
      • 10. 家用电器用户行为分析与事件识别:对热水器使用中的用水事件进行识别。分析过程涉及到领域知识和基于数据观察的手工特征,并没有涉及太多的模型,几乎都是基于阈值进行数据的处理。最后使用 BP 神经网络进行分类识别,准确率 85.5%。
      • 11. 应用系统负载分析与磁盘容量预测:这是时间序列预测的一个典型案例,主要涉及到 ARIMA 模型应用的细节。
      • 12. 电子商务网站用户行为分析及服务推荐:这是推荐系统的一个应用实例。爬虫获取数据,数据的探索分类,这一过程占了不少工作量。基于物品和基于用户的协同过滤推荐之间的权衡。为用户和物品之间建立关系,使得用户更容易发现潜在有价值的物品,同时使得长尾物品更容易被发掘出来。基本步骤为(1)计算物品之间的相似度;(2)根据物品的相似度和用户的历史行为给用户生成推荐列表。对于推荐系统的评价应该考虑 3 个方面:用户、物品提供者和提供推荐系统的网站。
      • 13. 财政收入影响因素分析及预测模型:通过 Adative-Lasso 模型进行特征选择。灰色预测与神经网路组合模型进行预测。
      • 14. 基于基站定位数据的商圈分析:计算 4 个指标,工作日上班时间人均停留时间、凌晨人均停留时间、周末人均停留时间、日均人流量。基于以上 4 个指标进行层次聚类,根据谱系聚类图可以聚成 3 类。通过图表观察每个簇的特征。“轨迹挖掘”是一个新兴的研究主题,尤其是面向拼车推荐应用是轨迹挖掘。
      • 15. 电商产品评论数据情感分析: 主要是主题模型的应用。“八爪鱼”爬虫工具爬取评论数据,并进行文本去重、机械压缩去词和短句删除等数据预处理操作。(1)构建情感倾向性模型对评论进行分类,即分为正面、负面和中性 3 类评论。这里有两个关键点,一个是文本的表示,训练栈式自编码网络;另一方面是类别标注,人工标注费时。本案例使用 ROST 系统完成情感倾向性分析的任务。(2)基于语义网络的评论分析,抽取正面、负面两组,以进行语意网络的构建与分析。由于中性评论过于复杂本案例没有进一步分析。(3)基于 LDA 模型的主题分析,针对正面和负面的文本分别使用 LDA 发现潜在的主题。基于前 3 个分析结果给出改进建议。
  • 相关阅读:
    Redis的四种模式,单机、主从、哨兵、集群
    .NET 跨域问题
    C# 利用正则表达式获取富文本框中所有图片路劲
    ActiveMQ入门实例(.NET)
    ActiveMQ的使用以及应用场景
    关于消息队列的使用方法(RocketMQ)
    Redis系列 需要注意事项
    .NET:在线悲观锁、在线乐观锁、离线悲观锁、离线乐观锁代码示例
    C# 简单介绍Redis使用
    API Get跟Post 的区别?
  • 原文地址:https://www.cnblogs.com/fanling999/p/8254010.html
Copyright © 2011-2022 走看看