精华内容
下载资源
问答
  • 入门学习Linux常用必会60个命令实例详解doc/txt

    千次下载 热门讨论 2011-06-09 00:08:45
    入门学习Linux常用必会60个命令实例详解 Linux必学的60个命令 Linux提供了大量的命令,利用它可以有效地完成大量的工作,如磁盘操作、文件存取、目录操作、进程管理、文件权限设定等。所以,在Linux系统上工作离不...
  • 机器学习算法应用场景实例六十则

    千次阅读 2020-12-17 14:47:57
    原文链接:https://blog.csdn.net/liulingyuan6/article/details/53648273本文整理了60个机器学习算法应用场景实例,含分类算法应用场景20个、回归算法应用场景20个、聚类算法应用场景10个以及关联规则应用场景10个...

    原文链接:blog.csdn.net/liulingyu

    本文整理了60个机器学习算法应用场景实例,含分类算法应用场景20个、回归算法应用场景20个、聚类算法应用场景10个以及关联规则应用场景10个。包含了天池、DataCastle、DataFountain中所有竞赛场景。

    目录

    1 分类算法应用场景实例

    1.1 O2O优惠券使用预测

    1.2 市民出行选乘公交预测

    1.3待测微生物种类判别

    1.4 基于运营商数据的个人征信评估

    1.5 商品图片分类

    1.6 广告点击行为预测

    1.7 基于文本内容的垃圾短信识别

    1.8 中文句子类别精准分析

    1.9 P2P网络借贷平台的经营风险量化分析

    1.10 国家电网客户用电异常行为分析

    1.11 自动驾驶场景中的交通标志检测

    1.12 大数据精准营销中搜狗用户画像挖掘

    1.13 基于视角的领域情感分析

    1.14 监控场景下的行人精细化识别

    1.15 用户评分预测

    1.16 猫狗识别大战

    1.17 微额借款用户人品预测

    1.18 验证码识别

    1.19 客户流失率预测

    1.20 汽车4S店邮件营销方案

    2回归算法应用场景实例

    2.1 机场客流量分布预测

    2.2 音乐流行趋势预测

    2.3 需求预测与仓储规划方案

    2.4 新浪微博互动量预测

    2.5 货币基金资金流入流出预测

    2.6 电影票房预测

    2.7 农产品价格预测分析

    2.8 基于多源数据的青藏高原湖泊面积预测

    2.9 微博传播规模和传播深度预测

    2.10 鲍鱼年龄预测

    2.11 学生成绩排名预测

    2.12 网约车出行流量预测

    2.13 红酒品质评分

    2.14搜索引擎的搜索量和股价波动

    2.15 中国人口增长分析

    2.16 农村居民收入增长预测

    2.17 房地产销售影响因素分析

    2.18 股价走势预测

    2.19 全国综合运输总量预测

    2.20 地震预报

    3聚类算法应用场景实例

    3.1 基于用户位置信息的商业选址

    3.2 中文地址标准化处理

    3.3 国家电网用户画像

    3.4 非人恶意流量识别

    3.5 求职信息完善

    3.6 搜索引擎查询聚类以进行流量推荐

    3.7 生物种群固有结构认知

    3.8 保险投保者分组

    3.9 网站关键词来源聚类整和

    3.10 图像分割

    4关联规则应用场景实例

    4.1 穿衣搭配推荐

    4.2 互联网情绪指标和生猪价格的关联关系挖掘和预测

    4.3 依据用户轨迹的商户精准营销

    4.4 地点推荐系统

    4.5 气象关联分析

    4.6 交通事故成因分析

    4.7 基于兴趣的实时新闻推荐

    4.8 银行金融客户交叉销售分析

    4.9 电子商务搭配购买推荐

    4.10 银行营销方案推荐


    1 分类算法应用场景实例

    1.1 O2O优惠券使用预测

    以优惠券盘活老用户或吸引新客户进店消费是O2O的一种重要营销方式。然而随机投放的优惠券对多数用户造成无意义的干扰。对商家而言,滥发的优惠券可能降低品牌声誉,同时难以估算营销成本。个性化投放是提高优惠券核销率的重要技术,它可以让具有一定偏好的消费者得到真正的实惠,同时赋予商家更强的营销能力。


    现有O2O场景相关的丰富数据,希望通过分析建模,精准预测用户是否会在规定时间内使用相应优惠券。


    1.2 市民出行选乘公交预测


    基于海量公交数据记录,希望挖掘市民在公共交通中的行为模式。以市民出行公交线路选乘预测为方向,期望通过分析广东省部分公交线路的历史公交卡交易数据,挖掘固定人群在公共交通中的行为模式,分析推测乘客的出行习惯和偏好,从而建立模型预测人们在未来一周内将会搭乘哪些公交线路,为广大乘客提供信息对称、安全舒适的出行环境,用数据引领未来城市智慧出行。


    1.3待测微生物种类判别


    DNA是多数生物的遗传物质,DNA上的碱基(A,T,C和G)就储藏了遗传信息,不同物种的DNA序列在序列长度和碱基组成上差异显著。所以我们能够通过DNA序列的比较分析,来判断DNA序列是来自哪些物种。由于测序技术限制,我们只能得到一定长度的DNA序列片段。通过DNA序列片段与已知的微生物DNA序列进行比较,可以确定DNA片段的来源微生物,进而确定待测微生物种类。


    期望在相关数据基础上,建立分析方法,在计算资源消耗尽量小的情况下,尽可能快地给出准确的结果,以满足临床诊断需求。


    1.4 基于运营商数据的个人征信评估


    运营商作为网络服务供应商,积累了大量的用户基本信息及行为特征数据,如终端数据、套餐消费数据、通信数据等等。实名制政策保证了运营商用户数据能与用户真实身份匹配,并真实客观的反映用户行为。广泛覆盖的网络基础设施提供了积累大量实时数据的条件,这些用户数据实时反馈着用户的各个维度的信息及特征。


    在我国,个人征信评估主要通过引用央行个人征信报告,但对于很多用户没有建立个人信用记录的用户,金融机构想要了解他们的信用记录成本又较高,传统征信评估手段难以满足目前多种多样的新兴需求。金融业务不同于其他大数据业务,对数据的真实性、可信度和时效性要求较高,而这正是运营商数据的价值所在。


    期望利用运营商用户数据,提供完善的个人征信评估。


    1.5 商品图片分类


    京东含有数以百万计的商品图片,“拍照购”“找同款”等应用必须对用户提供的商品图片进行分类。同时,提取商品图像特征,可以提供给推荐、广告等系统,提高推荐/广告的效果。


    希望通过对图像数据进行学习,以达到对图像进行分类划分的目的。


    1.6 广告点击行为预测


    用户在上网浏览过程中,可能产生广告曝光或点击行为。对广告点击进行预测,可以指导广告主进行定向广告投放和优化,使广告投入产生最大回报。


    希望基于100万名随机用户在六个月的时间范围内广告曝光和点击日志,包括广告监测点数据,预测每个用户在8天内是否会在各监测点上发生点击行为。


    1.7 基于文本内容的垃圾短信识别


    垃圾短信已日益成为困扰运营商和手机用户的难题,严重影响到人们正常生活、侵害到运营商的社会形象以及危害着社会稳定。而不法分子运用科技手段不断更新垃圾短信形式且传播途径非常广泛,传统的基于策略、关键词等过滤的效果有限,很多垃圾短信“逃脱”过滤,继续到达手机终端。


    希望基于短信文本内容,结合机器学习算法、大数据分析挖掘来智能地识别垃圾短信及其变种。


    1.8 中文句子类别精准分析


    精确的语义分析是大数据必备技术,在分析句子时,不同句子类别即使用类似的关键词,表达的含义仍有很大差别,特别是在情感判断中。


    希望通过新闻以及微博等文本数据,对其句子类别进行判断。


    1.9 P2P网络借贷平台的经营风险量化分析


    P2P网络借贷即点对点信贷,其风险情况始终触碰着投资人的神经。据网贷之家统计,截止今年9月份,出现问题的网贷平台一共有1008家,而仅仅今年就有641家平台出现问题,这说明了随着我国p2p行业的迅猛发展,P2P平台的风险预测已经成为一个至关重要的问题。P2P平台的风险主要是在运营过程中产生的,与运营数据有着密不可分的关系。P2P平台的风险预测并非无线索可寻,像借款期限和年化收益率等指标,就对P2P平台的风险预测有很重要的参考意义。


    希望通过互联网数据,构建出P2P网贷平台的经营风险模型,从而能够比较准确的预测P2P网贷平台的经营风险,促进我国P2P行业向正规化方向发展。


    1.10 国家电网客户用电异常行为分析


    社会经济的发展使得社会用电量逐年增加,受利益驱使,窃电现象也日益严重。窃电行为不仅给供电企业造成了重大经济损失,也严重影响了正常的供用电秩序。根据国家电网公司统计,近年因窃电导致的损失达上千万元。近年来,窃电方式也由野蛮窃电发展到设备智能化、手段专业化、行为隐蔽化、实施规模化的高科技窃电,给反窃电工作进一步增加了很大的难度。随着电力系统升级,智能电力设备的普及,国家电网公司可以实时收集海量的用户用电行为数据、电力设备监测数据,因此,国家电网公司希望通过大数据分析技术,科学的开展防窃电监测分析,以提高反窃电工作效率,降低窃电行为分析的时间及成本。


    希望基于国家电网公司提供的关于用户用电量、电能表停走、电流失流、计量们打开灯计量异常情况、窃电行为等相关数据,以及经过现场电工人员现场确认的窃电用户清单,希望参赛者利用大数据分析算法与技术,发现窃电用户的行为特征,形成窃电用户行为画像,准确识别窃电用户,以帮助系统更快速、准确地识别窃电用户,提高窃电监测效率,降低窃电损失。


    1.11 自动驾驶场景中的交通标志检测


    在自动驾驶场景中,交通标志的检测和识别对行车周围环境的理解起着至关重要的作用。例如通过检测识别限速标志来控制当前车辆的速度等;另一方面,将交通标志嵌入到高精度地图中,对定位导航也起到关键的辅助作用。交通标志的检测是一项非常有挑战的任务,精确的检测对后续识别,辅助定位导航起着决定性的作用。交通标志的种类众多,大小、角度不依,本身就很难做到精确检测,并且在真实的行车环境中,受到天气、光照等因素的影响,使得交通标志的检测更加困难。


    希望机遇完全真实场景下的图片数据用于训练和测试,训练能够实际应用在自动驾驶中的识别模型。


    1.12 大数据精准营销中搜狗用户画像挖掘


    “物以类聚,人以群分”这句古语不仅揭示了物与人的自组织趋向,更隐含了“聚类”和“人群”之间的内在联系。在现代数字广告投放系统中,以物拟人,以物窥人,才是比任何大数据都要更大的前提。在现代广告投放系统中,多层级成体系的用户画像构建算法是实现精准广告投放的基础技术之一。其中,基于人口属性的广告定向技术是普遍适用于品牌展示广告和精准竞价广告的关键性技术。在搜索竞价广告系统中,用户通过在搜索引擎输入具体的查询词来获取相关信息。因此,用户的历史查询词与用户的基本属性及潜在需求有密切的关系。


    希望基于用户历史一个月的查询词与用户的人口属性标签(包括性别、年龄、学历)做为训练数据,通过机器学习、数据挖掘技术构建分类算法来对新增用户的人口属性进行判定。


    1.13 基于视角的领域情感分析


    情感分析是网络舆情分析中必不可少的技术,基于视角的领域情感分析更是情感分析应用于特定领域的关键技术。在对句子进行情感分析时,站在不同的视角,同一个句子的情感倾向判断结果将有所差别。


    给定一个句子,如果该句子中包含“视角”词语,则应针对这一视角进行情感分析;如果句子中包含多个“视角”词语,则应对不同的视角进行单独的情感分析;如果句子中不包含视角,则不做情感判别处理。


    1.14 监控场景下的行人精细化识别


    随着平安中国、平安城市的提出,视频监控被广泛应用于各种领域,这给维护社会治安带来了便捷;但同时也带来了一个问题,即海量的视频监控流使得发生突发事故后,需要耗费大量的人力物力去搜索有效信息。行人作为视频监控中的重要目标之一,若能对其进行有效的外观识别,不仅能提高视频监控工作人员的工作效率,对视频的检索、行人行为解析也具有重要意义。


    希望基于监控场景下多张带有标注信息的行人图像,在定位(头部、上身、下身、脚、帽子、包)的基础上研究行人精细化识别算法,自动识别出行人图像中行人的属性特征。标注的行人属性包括性别、头发长度和上下身衣着、鞋子及包的种类和颜色,并提供图像中行人头部、上身、下身、脚、帽子、包位置的标注。


    1.15 用户评分预测


    个性化推荐已经成为各大电子商务网站的必备服务。准确的推荐不仅可以提高商家的产品销量,更能为顾客提供优质快速的购物体验。推荐系统发展至今,已经有许多非常优秀的推荐算法,从各种不同的角度来为电子商务大厦添砖加瓦。迄今为止,已经有不少研究表明,用户在短期时间内会浏览相似的商品,但其兴趣可能会随时间发生些许变化。


    希望通过训练带有时间标记的用户打分行为,准确地预测这些用户对其他商品的打分。


    1.16 猫狗识别大战


    有人说,猫与狗上千年历史的敌对状态,主要是由于在长期进化过程中迫于对生存资源进行争夺而造成的残酷竞争导致的;也有人说,是他们天生的交流方式不同导致的;今天猫狗大战开始了,为了避免被这些家伙拆房的危险,各位智慧的人类,请速来隔离高冷猫和憨厚狗。


    希望从训练集里建立一个模型去识别测试集里的小狗来。


    1.17 微额借款用户人品预测


    互联网金融近年来异常火热,大量的资本和人才涌入这个领域发掘富藏价值。金融领域无论是投资理财还是借贷放款,风险控制永远是业务的核心基础。而在所有的互联网金融产品中,微额借款(借款金额500元~1000元)因其主要服务对象的特殊性,被公认为是风险最高的细分领域。


    希望通过数据挖掘来分析”小额微贷“申请借款用户的信用状况,以分析其是否逾期。


    1.18 验证码识别


    使用各类验证码的训练集进行学习、编码与测试,形成验证码算法模型。


    1.19 客户流失率预测


    我国的移动通信行业经过了前几年的高速发展,近一段时间的发展速度逐渐缓慢下来。注册用户常常处于一种动态变化的状态,即不断有老客户离网,又不断有新客户入网。大量的低消费客户和大量老客户的离网使得移动通信公司无法快速向前发展。


    希望建立客户流失模型,对新老客户进行分类。


    1.20 汽车4S店邮件营销方案


    直邮营销是直效行销的一种,是把传统邮件直接发送给消费者的营销方式涉及的行业主要是大型商场、大卖场、商业连锁店铺、专卖店等。一家汽车4S店,公司拥有完备的客户历史消费数据库,现公司准备举办一次高端品牌汽车的促销活动,为配合这次促销活动,公司计划为潜在客户寄去一份精美的汽车销售材料并附带一份小礼品。由于资源有限,公司仅有1000份材料和礼品的预算额度。


    希望根据与这次促销活动类似的已经举办过的促销活动的历史消费数据,用过机器学习算法得到一个分类器,对新客户进行分类,生成正类客户的客户列表,向他们寄出材料和礼品。


    2回归算法应用场景实例


    2.1 机场客流量分布预测


    为了有效利用机场资源,机场正利用大数据技术,提升生产运营的效率。机场内需要不断提升运行效率的资源有航站楼内的各类灯光电梯设施设备、值机柜台、商铺、广告位、安检通道、登机口,航站楼外的停机位、廊桥、车辆(摆渡车、清洁车、物流车、能源车),要想提升这些资源的利用率首先需要知道未来一段时间将会有多少旅客或航班会使用这些资源,其次需要精准的调度系统来调配这些资源和安排服务人员,帮助机场提升资源利用效率,保障机场安全与服务提升。


    以海量机场WiFi数据及安检登机值机数据,希望通过数据算法实现机场航站楼客流分析与预测。


    2.2 音乐流行趋势预测


    经过7年的发展与沉淀,目前某音乐平台拥有数百万的曲库资源,每天千万的用户活跃在平台上,拥有数亿人次的用户试听、收藏等行为。在原创艺人和作品方面,更是拥有数万的独立音乐人,每月上传上万个原创作品,形成超过几十万首曲目的原创作品库,如此庞大的数据资源库对于音乐流行趋势的把握有着极为重要的指引作用。


    以某音乐平台用户的历史播放数据为基础,期望通过对艺人的试听量的预测,挖掘出即将成为潮流的艺人,从而实现对一个时间段内音乐流行趋势的准确把控。


    2.3 需求预测与仓储规划方案


    拥有海量的买家和卖家交易数据的情况下,利用数据挖掘技术,我们能对未来的商品需求量进行准确地预测,从而帮助商家自动化很多供应链过程中的决策。这些以大数据驱动的供应链能够帮助商家大幅降低运营成本,更精确的需求预测,能够大大地优化运营成本,降低收货时效,提升整个社会的供应链物流效率,朝智能化的供应链平台方向更加迈进一步。高质量的商品需求预测是供应链管理的基础和核心功能。


    以历史一年海量买家和卖家的数据为依据,希望预测某商品在未来二周全国和区域性需求量。用数据挖掘技术和方法精准刻画商品需求的变动规律,对未来的全国和区域性需求量进行预测,同时考虑到未来的不确定性对物流成本的影响,做到全局的最优化。


    2.4 新浪微博互动量预测


    新浪微博作为中国最大的社交媒体平台,旨在帮助用户发布的公开内容提供快速传播互动的通道,提升内容和用户的影响力。希望能够最快找到有价值微博的方法,然后应用于平台的内容分发控制策略,对于有价值的内容可以增加曝光量,提高内容的传播互动量。对于一条原创博文而言,转发、评论、赞等互动行为能够体现出用户对于博文内容的兴趣程度,也是对博文进行分发控制的重要参考指标。


    希望根据抽样用户的原创博文在发表一天后的转发、评论、赞总数,建立博文的互动模型,并预测用户后续博文在发表一天后的互动情况。


    2.5 货币基金资金流入流出预测


    某金融服务机构拥有大量会员并且业务场景中每天都涉及大量的资金流入和流出,面对如此庞大的用户群,资金管理压力会非常大。在既保证资金流动性风险最小,又满足日常业务运转的情况下,精准地预测资金的流入流出情况变得尤为重要。


    期望能够通过用户基本信息数据、用户申购赎回数据、收益率表和银行间拆借利率等信息,对用户的申购赎回数据的把握,精准预测未来每日的资金流入流出情况。


    2.6 电影票房预测


    中国是全球第二大电影市场,同时也是增长最快的市场之一;随着市场的成熟,影响电影票房的因素也越来越多,包括题材、内容、导演、演员、编辑、发行方等等。因此对电影制作公司而言,依靠主观经验制作一部高票房的电影也越来越困难,而随着大数据技术的发展,借助大数据分析对电影市场进行分析,指导电影制作成为可能。


    希望依据历史票房数据、影评数据、舆情数据等互联网公众数据,对电影票房进行预测。


    2.7 农产品价格预测分析


    农产品价格受市场影响的程度特别大,特别是受农产品的供求关系影响较大,同时价格本身又受自然条件、社会和经济条件的影响,特别是国际市场的影响。从价格本身来看,受供求、季节等发生波动,受外界各种影响比较多,这就造成了价格预测的困难。但从长期看,农产品价格随着时间的推移仍然呈现一定规律性。价格预测是大数据的精华所在,通过大量的历史数据分析,预测未来的价格走势,为决策者提供更有力的数据支持。


    希望通过分析价格历史数据,对要求预测的农产品接下来固定时间的价格进行预测。并尽可能多的使用与价格有影响的其他数据以提高预测的准确率。


    2.8 基于多源数据的青藏高原湖泊面积预测


    全球气候变化对青藏高原的湖泊水储量有很大影响,因此精确的估计青藏高原湖泊面积变化对于研究气候变化变得很重要。海量多源异构数据和大数据处理与挖掘技术给湖泊面积变化研究带来新的解决思路;如何通过多源数据对青藏高原的湖泊面积进行预测,将大数据技术应用到全球气候变化研究中来成为一项新的挑战。


    希望通过研究青藏高原湖泊面积变化的多种影响因素,构建青藏高原湖泊面积预测模型。


    2.9 微博传播规模和传播深度预测


    近些年,一些研究表明,一条微博发出以后,只需要观察其在之后一小段时间内的转发情况,它的传播规模便可以被预测。但是不同类型的微博会有不同的传播方式,比如明星晒一张生活状态就能得到众多粉丝的热捧,具有较大的传播广度,但是往往在传播深度上稍显不足;相比之下,一些被广泛讨论的新闻类微博往往具有较深的传播深度。也有统计结果显示,一些谣言往往会得到大规模的传播,辟谣类的消息反而得不到广泛关注。不仅如此,我们在热门微博中能看到不少正能量的信息,同时也能看到一些话题被持正反两种不同意见的人掀起讨论热潮。简而言之,微博初期的传播速度、用户关系、信息类型、内容情感等特征都是影响微博传播规模和深度的重要影响因素。


    希望基于大约1-3万条微博及其它们的转发微博,结合微博用户的关注关系、微博的内容类型和情感分析以及初期的传播模式,来预测微博的传播规模和传播深度。


    2.10 鲍鱼年龄预测


    鲍鱼,在现代汉语中有多种含义。最常用的是指一种原始的海洋贝类,属于单壳软体动物,其只有半面外壳,壳坚厚、扁而宽,鲍鱼是中国传统的名贵食材,位居四大海味之首。直至现今,在人民大会堂举行的多次国宴及大型宴会中,鲍鱼经常榜上有名,成为中国经典国宴菜之一。被人们称为“海洋的耳朵”。和古代“用盐腌制的鱼”是两种东西。鲍鱼的优劣与年龄相关。一般来说,我们可以数鲍鱼的生长纹来确定鲍鱼的年龄,但数生长纹也是一件挺麻烦的事情。


    希望利用与鲍鱼年龄有关的因素来预测鲍鱼的年龄。


    2.11 学生成绩排名预测


    学生的校园行为数据,可以挖掘用户作息规律、兴趣爱好等,精准地预测学生之间的相对排名。通过对这些日常行为的建模来预测学生的学业成绩,可以实现提前预警学生的异常情况,并进行适当的干预,因而对学生的培养、管理工作将会起到极其重要的作用。从某高校的某个学院随机抽取一定比例学生,提供这些学生在三个学期的图书馆进出记录、一卡通消费记录、图书馆借阅记录、以及综合成绩的相对排名。这一部分数据将作为训练数据。我们从另外的某学院随机抽取一定比例的学生,然后提供他们在三个学期的图书馆进出记录、一卡通消费记录、图书借阅记录、以及前两个学期的成绩排名。


    希望通过借助大数据相关的挖掘技术和基础算法,预测第三学期的成绩排名。


    2.12 网约车出行流量预测


    在出行问题上,中国市场人数多、人口密度大,总体的出行频率远高于其他国家,这种情况在大城市尤为明显。然而,截止目前中国拥有汽车的人口只有不到10%,这也意味着在中国人们的出行更加依赖于出租车、公共交通等市场提供的服务。另一方面,滴滴出行占领了国内绝大部分的网络呼叫出行市场,面对着巨大的数据量以及与日俱增的数据处理需求。截止目前,滴滴出行平台每日需处理1100万订单,需要分析的数据量达到50TB,路径规划服务请求超过90亿。面对如此庞杂的数据,我们需要通过不断升级、完善与创新背后的云计算与大数据技术,从而保证数据分析及相关应用的稳定,实现高频出行下的运力均衡。供需预测就是其中的一个关键问题。供需预测的目标是准确预测出给定地理区域在未来某个时间段的出行需求量及需求满足量。调研发现,同一地区不同时间段的订单密度是不一样的,例如大型居住区在早高峰时段的出行需求比较旺盛,而商务区则在晚高峰时段的出行需求比较旺盛。


    希望能预测到在未来的一段时间内某些地区的出行需求量比较大,以提前对营运车辆提供一些引导,指向性地提高部分地区的运力,从而提升乘客的整体出行体验。


    2.13 红酒品质评分


    红酒口感的好坏,受很多因素的影响,例如年份、产地、气候、酿造的工艺等等。通过一些化学属性特征就能够很好地判断红酒的品质。通过监测红酒中化学成分的含量,可以控制红酒的品质和口感。


    希望基于红酒的化学特性,例如酸性、含糖量、氯化物含量、硫含量、酒精度、PH值、密度等,构建机器学习模型,对红酒品质进行评分。


    2.14搜索引擎的搜索量和股价波动


    上市公司在互联网中搜索量的变化,会显著影响公司股价的波动和趋势,即所谓的投资者注意力理论。该理论认为,公司在搜索引擎中的搜索量,代表了该股票被投资者关注的程度。因此,当一只股票的搜索频数增加时,说明投资者对该股票的关注度提升,从而使得该股票更容易被个人投资者购买,进一步地导致股票价格上升,带来正向的股票收益。


    2.15 中国人口增长分析


    中国从1971年开始全面开展了计划生育,使中国总和生育率很快从1970年的5.8降到1980年2.24,接近世代更替水平。此后,人口自然增长率很大程度上与经济的发展等各方面的因素相联系,与经济生活息息相关。影响中国人口自然增长率的因素有很多,如经济整体增长、居民消费水平、文化程度、人口分布,以及非农业与农业人口的比率等。


    希望通过历史数据分析,对未来人口增长率进行预测。


    2.16 农村居民收入增长预测


    “三农”问题的核心是农村居民收入问题。改革开放以来,农村经济蓬勃发展,农村居民收入有了较大幅度的增长,但与城镇居民的收入相比,却表现出增长缓慢、差距越来越大的趋势。


    希望对影响我国农村居民收入的因素进行分析,再运用实证方法对农民的经济统计数据进行分析,得到了影响农村居民纯收入的模型。为预测农村居民的收入增长趋势提供工具,为农村地区的政策措施提供参考建议。


    2.17 房地产销售影响因素分析


    改革开放以来,我国的经济突飞猛进对城市商品房的价格产生了巨大影响,特别是进入21世纪后,伴随着商品房价格日益增长,出现了房地产投资过热。在这种房价居高不下的形势下,国内外诸多专家学者认为我国的房地产市场已经出现价格泡沫,在房地产业对我国国民经济发展起着积极作用的大环境下,这种价格泡沫势必会对我国的经济发展造成重大影响。


    年人均收入、新增住房面积及上一年商品房价格等因素对房地产销售有影响,期望利用历史数据分析测度其对商品房价格的影响,找出了引起房地产价格波动的主要因素当年年人均收入,根据实证结论提出了控制房价的建议。


    2.18 股价走势预测


    随着经济社会的发展,以及人们投资意识的增强,人们越来越多的参与到股票市场的经济活动中,股票投资也已经成为人们生活的一个重要组成部分。然而在股票市场中,众多的指标、众多的信息,很难找出对股价更为关键的因素;其次股市结构极为复杂,影响因素具有多样性、相关性。这导致了很难找出股市内在的模式。


    希望在尽可能全面的收集股市信息的基础上,建立股价预测模。


    2.19 全国综合运输总量预测


    以全国同期国民经济主要产品产量,如原煤、原油、生铁、钢材、水泥、木材、粮食的历史数据,建立数据挖掘模型,对全国综合运输总运量进行预测。


    2.20 地震预报


    根据历史全球大地震的时空图,找出与中国大陆大地震有关的14个相关区,对这些相关区逐一鉴别,选取较优的9个,再根据这9个相关区发生的大震来预测中国大陆在未来一年内会不会有大震发生。


    3聚类算法应用场景实例


    3.1 基于用户位置信息的商业选址


    随着信息技术的快速发展,移动设备和移动互联网已经普及到千家万户。在用户使用移动网络时,会自然的留下用户的位置信息。随着近年来GIS地理信息技术的不断完善普及,结合用户位置和GIS地理信息将带来创新应用。如百度与万达进行合作,通过定位用户的位置,结合万达的商户信息,向用户推送位置营销服务,提升商户效益。


    希望通过大量移动设备用户的位置信息,为某连锁餐饮机构提供新店选址。


    3.2 中文地址标准化处理


    地址是一个涵盖丰富信息的变量,但长期以来由于中文处理的复杂性、国内中文地址命名的不规范性,使地址中蕴含的丰富信息不能被深度分析挖掘。通过对地址进行标准化的处理,使基于地址的多维度量化挖掘分析成为可能,为不同场景模式下的电子商务应用挖掘提供了更加丰富的方法和手段,因此具有重要的现实意义。


    3.3 国家电网用户画像


    随着电力体制改革向纵深推进,售电侧逐步向社会资本放开,当下的粗放式经营和统一式客户服务内容及模式,难以应对日益增长的个性化、精准化客户服务体验要求。如何充分利用现有数据资源,深入挖掘客户潜在需求,改善供电服务质量,增强客户黏性,对公司未来发展至关重要。


    对电力服务具有较强敏感度的客户对于电费计量、供电质量、电力营销等各方面服务的质量及方式上往往具备更高的要求,成为各级电力公司关注的重点客户。经过多年的发展与沉淀,目前国家电网积累了全网4亿多客户档案数据和海量供电服务信息,以及公司营销、电网生产等数据,可以有效的支撑海量电力数据分析。


    因此,国家电网公司希望通过大数据分析技术,科学的开展电力敏感客户分析,以准确地识别敏感客户,并量化敏感程度,进而支撑有针对性的精细化客户服务策略,控制电力服务人工成本、提升企业公众形象。


    3.4 非人恶意流量识别


    2016年第一季度Facebook发文称,其Atlas DSP平台半年的流量质量测试结果显示,由机器人模拟和黑IP等手段导致的非人恶意流量高达75% . 仅2016上半年,AdMaster反作弊解决方案认定平均每天能有高达 28% 的作弊流量。低质量虚假流量的问题一直存在,这也是过去十年间数字营销行业一直在博弈的问题。基于AdMaster海量监测数据,50%以上的项目均存在作弊嫌疑;不同项目中,作弊流量占广告投放5%到95%不等;其中垂直类和网盟类媒体的作弊流量占比最高;PC端作弊流量比例显著高于移动端和智能电视平台。广告监测行为数据被越来越多地用于建模和做决策,例如绘制用户画像,跨设备识别对应用户等。作弊行为,恶意曝光,网络爬虫,误导点击,甚至是在用户完全无感知的情况下被控制访问等产生的不由用户主观发出的行为给数据带来了巨大的噪声,给模型训练造成了很大影响。


    希望基于给定的数据,建立一个模型来识别和标记作弊流量,去除数据的噪声,从而更好的使用数据,使得广告主的利益最大化。


    3.5 求职信息完善


    有大约10万分优质简历,其中部分简历包含完整的字段,部分简历在学历、公司规模、薪水、职位名称等字段有些置空项。希望对数据进行学习、编码与测试,挖掘出职位路径的走向与规律,形成算法模型,再对数据中置空的信息进行预测。


    3.6 搜索引擎查询聚类以进行流量推荐


    在搜索引擎中, 很多网民的查询意图的比较类似的,对这些查询进行聚类,一方面可以使用类内部的词进行关键词推荐;另一方面, 如果聚类过程实现自动化,则也有助于新话题的发现;同时还有助于减少存储空间等。


    3.7 生物种群固有结构认知


    对动植物分类和对基因进行分类,获取对种群固有结构的认识。


    3.8 保险投保者分组


    通过一个高的平均消费来鉴定汽车保险单持有者的分组,同时根据住宅类型,价值,地理位置来鉴定一个城市的房产分组。


    3.9 网站关键词来源聚类整和


    以领域特征明显的词和短语作为聚类对象,在分类系统的大规模层级分类语料库中,利用文本分类的特征提取算法进行词语的领域聚类,通过控制词语频率的影响,分别获取领域通用词和领域专类词。


    3.10 图像分割


    图像分割广泛应用于医学、交通、军事等领域。图像分割就是把图像分成若干个特定的、具有独特性质的区域并提出感兴趣目标的技术和过程。它是由图像处理到图像分析的关键步骤。聚类算法先将图像空间中的像素用对应的特征空间点表示,根据它们在特征空间的聚集对特征空间进行分割,然后将它们映射回原图像空间,得到分割结果。


    4关联规则应用场景实例


    4.1 穿衣搭配推荐


    穿衣搭配是服饰鞋包导购中非常重要的课题,基于搭配专家和达人生成的搭配组合数据,百万级别的商品的文本和图像数据,以及用户的行为数据。期待能从以上行为、文本和图像数据中挖掘穿衣搭配模型,为用户提供个性化、优质的、专业的穿衣搭配方案,预测给定商品的搭配商品集合。


    4.2 互联网情绪指标和生猪价格的关联关系挖掘和预测


    生猪是畜牧业的第一大产业,其价格波动的社会反响非常敏感。生猪价格变动的主要原因在于受市场供求关系的影响。然而专家和媒体对于生猪市场前景的判断、疫情的报道,是否会对养殖户和消费者的情绪有所影响?情绪上的变化是否会对这些人群的行为产生一定影响,从而影响生猪市场的供求关系?互联网作为网民发声的第一平台,在网民情绪的捕捉上具有天然的优势。本次赛题希望参赛者可以基于海量提供的数据,挖掘出互联网情绪指标与生猪价格之间的关联关系,从而形成基于互联网数据的生猪价格预测模型,挖掘互联网情绪指标与生猪价格之间的关联关系和预测。


    4.3 依据用户轨迹的商户精准营销


    随着用户访问移动互联网的与日俱增,随着移动终端的大力发展,越来越多的用户选择使用移动终端访问网络,根据用户访问网络偏好,也形成了相当丰富的用户网络标签和画像等。如何根据用户的画像对用户进行精准营销成为了很多互联网和非互联网企业的新发展方向。如何利用已有的用户画像对用户进行分类,并针对不同分类进行业务推荐,特别是在用户身处特定的地点、商户,如何根据用户画像进行商户和用户的匹配,并将相应的优惠和广告信息通过不同渠道进行推送。


    希望根据商户位置及分类数据、用户标签画像数据提取用户标签和商户分类的关联关系,然后根据用户在某一段时间内的位置数据,判断用户进入该商户地位范围300米内,则对用户推送符合该用户画像的商户位置和其他优惠信息。


    4.4 地点推荐系统


    随着移动社交网路的兴起,用户的移动数据得到了大量的累积,使得这些移动数据能够基于地点推荐技术帮助人们熟悉周遭环境,提升地点的影响力等。


    希望利用用户的签到记录和地点的位置、类别等信息,为每个用户推荐50个感兴趣的地点。


    4.5 气象关联分析


    在社会经济生活中,不少行业,如农业、交通业、建筑业、旅游业、销售业、保险业等,无一例外与天气的变化息息相关。随着各行各业对气象信息的需求越来越大,社会各方对气象数据服务的个性化和精细化要求也在不断提升,如何开发气象数据在不同领域的应用,更好的支持大众创业、万众创新,服务民计民生,是气象大数据面临的迫切需求。


    为了更深入地挖掘气象资源的价值,希望基于共计60年的中国地面历史气象数据,推动气象数据与其他各行各业数据的有效结合,寻求气象要素之间、以及气象与其它事物之间的相互关系,让气象数据发挥更多元化的价值。


    4.6 交通事故成因分析


    随着时代发展,便捷交通对社会产生巨大贡献的同时,各类交通事故也严重地影响了人们生命财产安全和社会经济发展。为了更深入挖掘交通事故的潜在诱因,带动公众关注交通安全,贵阳市交通管理局开放交通事故数据及多维度参考数据,希望通过对事故类型、事故人员、事故车辆、事故天气、驾照信息、驾驶人员犯罪记录数据以及其他和交通事故有关的数据进行深度挖掘,形成交通事故成因分析方案。


    4.7 基于兴趣的实时新闻推荐


    随着近年来互联网的飞速发展,个性化推荐已成为各大主流网站的一项必不可少服务。提供各类新闻的门户网站是互联网上的传统服务,但是与当今蓬勃发展的电子商务网站相比,新闻的个性化推荐服务水平仍存在较大差距。一个互联网用户可能不会在线购物,但是绝大部分的互联网用户都会在线阅读新闻。因此资讯类网站的用户覆盖面更广,如果能够更好的挖掘用户的潜在兴趣并进行相应的新闻推荐,就能够产生更大的社会和经济价值。初步研究发现,同一个用户浏览的不同新闻的内容之间会存在一定的相似性和关联,物理世界完全不相关的用户也有可能拥有类似的新闻浏览兴趣。此外,用户浏览新闻的兴趣也会随着时间变化,这给推荐系统带来了新的机会和挑战。


    因此,希望通过对带有时间标记的用户浏览行为和新闻文本内容进行分析,挖掘用户的新闻浏览模式和变化规律,设计及时准确的推荐系统预测用户未来可能感兴趣的新闻。


    4.8 银行金融客户交叉销售分析


    某商业银行试图通过对个人客户购买本银行金融产品的数据进行分析,从而发现交叉销售的机会。


    4.9 电子商务搭配购买推荐


    电子购物网站使用关联规则中规则进行挖掘,然后设置用户有意要一起购买的捆绑包。也有一些购物网站使用它们设置相应的交叉销售,也就是购买某种商品的顾客会看到相关的另外一种商品的广告。


    4.10 银行营销方案推荐


    关联规则挖掘技术已经被广泛应用在金融行业企业中,它可以成功预测银行客户需求。一旦获得了这些信息,银行就可以改善自身营销。如各银行在自己的ATM机上就捆绑了顾客可能感兴趣的本行产品信息,供使用本行ATM机的用户了解。如果数据库中显示,某个高信用限额的客户更换了地址,这个客户很有可能新近购买了一栋更大的住宅,因此会有可能需要更高信用限额,更高端的新信用卡,或者需要一个住房改善贷款,这些产品都可以通过信用卡账单邮寄给客户。当客户打电话咨询的时候,数据库可以有力地帮助电话销售代表。销售代表的电脑屏幕上可以显示出客户的特点,同时也可以显示出顾客会对什么产品感兴趣。

    展开全文
  • 第二章 算法实例;一作业回顾;第6题;想一想;C;试一试;练一练;开始;列举;若一个三位数X=100a+10b+cabc都是个位数满足a3+b3+c3=X,则X称为水仙花数请设计算法找出所有的水仙花数 ;开始;枚举法的注意点 1选定合适的研究...
  • 《机器学习实战》学习笔记(一):机器学习基础

    万次阅读 多人点赞 2019-08-19 17:01:32
    机器学习在日常生活中的应用,从左上角按照顺时针方向依次使用到的机器学习技术分别为:人脸识别、手写数字识别、垃圾邮件过滤和亚马逊公司的产品推荐。 在本书中,给出的定义是:【简单地说,机器学习就是把...

    欢迎关注WX公众号:【程序员管小亮】

    【机器学习】《机器学习实战》读书笔记及代码 总目录

    GitHub代码地址:

    ——————————————————————————————————————————————————————

    本章内容

    • 机器学习的简单概述
    • 机器学习的主要任务
    • 学习机器学习的原因
    • Python语言的优势

    1、何谓机器学习

    什么是机器学习?书中举了一个很有意思的例子,我们来听一下,就当开胃菜了。

    最近我和一对夫妇共进晚餐,他们问我从事什么职业,我回应道:“机器学习。”妻子回头问丈夫:“亲爱的,什么是机器学习?”她的丈夫答道:“T-800型终结者。”在《终结者》系列电影中,T-800是人工智能技术的反面样板工程。
    在这里插入图片描述

    哈哈,承包了我一天的笑点,极其学习的概念到底是什么,这个我们在很多博客中都又提到过。

    如果你还是不清楚的话,实在是很过分了 😐,在深度学习大火的如今,机器学习也正是出现在人们视野中,现今,机器学习已应用于多个领域,远超出大多数人的想象,比如NLP,再比如推荐系统。
    在这里插入图片描述

    机器学习在日常生活中的应用,从左上角按照顺时针方向依次使用到的机器学习技术分别为:人脸识别、手写数字识别、垃圾邮件过滤和亚马逊公司的产品推荐。

    在本书中,给出的定义是:【简单地说,机器学习就是把无序的数据转换成有用的信息。】

    1. 传感器和海量数据

    虽然已从互联网上获取了大量的人为数据,但最近却涌现了更多的非人为数据。传感器技术并不时髦,已经发展了好多年的传统行业,但是如何将它们接入互联网这确实是新的挑战。地震预测是一个很好的例子,传感器手机了海量的数据,但是如何从这些数据中抽取出有价值的信息是一个非常值得研究的课题。

    1. 机器学习非常重要

    在过去的半个世纪里,发达国家的多数工作岗位都已从体力劳动转化为脑力劳动。过去的工作基本上都有明确的定义,类似于把物品从A处搬到B处,或者在这里打个洞,但是现在这类工作都在逐步消失。现今的情况具有很大的二义性,类似于“最大化利润”,“最小化风险”、“找到最好的市场策略”……诸如此类的任务要求都已成为常态。虽然可从互联网上获取到海量数据,但这并没有简化知识工人的工作难度。针对具体任务搞懂所有相关数据的意义所在,这正成为基本的技能要求。

    2、关键术语

    通过构建下面的鸟类分类系统,来对机器学习领域的常用术语进行一个总结。
    在这里插入图片描述
    机器学习的主要任务就是 分类。如何判断飞入进食器的鸟是不是象牙喙啄木鸟呢?(任何发现活的象牙喙啄木鸟的人都可以得到5万美元的奖励。)这个任务就是 分类,有很多机器学习算法非常善于 分类。本例中的类别就是鸟的物种,更具体地说,就是区分是否为象牙喙啄木鸟。

    我们决定使用某个机器学习算法进行 分类,首先需要做的是算法训练,即学习如何 分类。通常我们为算法输入大量已分类数据作为算法的 训练集训练集 是用于训练机器学习算法的数据样本集合,表1-1是包含六个训练样本的训练集,每个训练样本有4种 特征(体重、翼展、脚蹼和后背颜色)、一个 目标变量(种属),目标变量 是机器学习算法的预测结果,在 分类 算法中目标变量的类型通常是标称型的,而在 回归 算法中通常是连续型的。训练样本集必须确定知道 目标变量 的值,以便机器学习算法可以发现 特征目标变量 之间的关系。正如前文所述,这里的目标变量 是种属,也可以简化为标称型的数值。我们通常将分类问题中的目标变量称为 类别,并假定分类问题只存在有限个数的 类别

    为了测试机器学习算法的效果,通常使用两套独立的样本集:训练数据测试数据。当机器学习程序开始运行时,使用 训练样本集 作为算法的输入,训练完成之后输入 测试样本。输入 测试样本 时并不提供 测试样本目标变量,由程序决定样本属于哪个类别。比较 测试样本 预测的 目标变量 值与 实际样本类别 之间的差别,就可以得出算法的实际精确度。

    假定这个鸟类分类程序,经过测试满足精确度要求,是否我们就可以看到机器已经学会了如何区分不同的鸟类了呢?这部分工作称之为 知识表示,某些算法可以产生很容易理解的知识表示,而某些算法的知识表示也许只能为计算机所理解。知识表示 可以采用规则集的形式,也可以采用概率分布的形式,甚至可以是训练样本集中的一个实例。在某些场合中,人们可能并不想建立一个专家系统,而仅仅对机器学习算法获取的信息感兴趣。此时,采用何种方式 表示知识 就显得非常重要了。

    3、机器学习的主要任务

    分类问题的主要任务是将实例数据划分到合适的分类中;回归问题的主要任务是预测数值型数据。分类和回归属于监督学习,之所以称之为 监督学习,是因为这类算法必须知道预测什么,即 目标变量的分类信息,也就是label。

    监督学习 相对应的是 无监督学习,此时数据没有 类别信息,也不会给定 目标值。在 无监督学习 中,将数据集合分成由类似的对象组成的多个类的过程被称为 聚类;将寻找描述数据统计值的过程称之为 密度估计。此外,无监督学习 还可以减少数据特征的维度,以便我们可以使用二维或三维图形更加直观地展示数据信息。

    在这里插入图片描述

    4、如何选择合适的算法

    从上面的表格中可以看出,如果我们能确定算法的目的,想要算法完成何种任务,再加上确定需要分析或手机的数据是什么,就能大概确定哪一个算法更适合了。

    首先考虑使用机器学习算法的目的。

    • 如果想要预测目标变量的值,则可以选择监督学习算法
      • 如果目标变量是离散型,则可以选择分类器算法
      • 如果目标变量是连续型的数值,则需要选择回归算法
    • 如果不想预测目标变量的值,则可以选择无监督学习算法
      • 进一步分析是否需要将数据划分为离散的组。如果这是唯一的需求,则使用聚类算法;
      • 如果还需要估计数据与每个分组的相似程度,则需要使用密度估计算法。

    其次需要考虑的是数据问题。主要应该了解数据的以下特性:特征值是离散型变量还是连续型变量,特征值中是否存在缺失的值,何种原因造成缺失值,数据中是否存在异常值,某个特征发生的频率如何(是否罕见得如同海底捞针),等等。

    一般说来发现最好算法的关键环节是反复试错的迭代过程。

    5、开发机器学习应用程序的步骤

    机器学习算法开发应用程序通常遵循以下的步骤。
    (1) 收集数据
    (2) 准备输入数据
    (3) 分析输入数据
    (4) 训练算法
    (5) 测试算法
    (6) 使用算法

    6、Python 语言的优势

    选择Python作为实现机器学习算法的编程语言的原因:
    (1) Python的语法清晰;
    (2) 易于操作纯文本文件;
    (3) 使用广泛,存在大量的开发文档。

    7、NumPy 函数库基础

    机器学习算法涉及很多线性代数知识,因此在使用Python语言构造机器学习应用时,会经常使用NumPy函数库。如果不熟悉线性代数也不用着急,这里用到线性代数只是为了简化不同的数据点上执行的相同数学运算。将数据表示为矩阵形式,只需要执行简单的矩阵运算而不需要复杂的循环操作。

    8、总结

    尽管现在引起很多人的注意,但是机器学习算法其实还是一个专业的学科,很多人都是道听途说,仍然有很长的路要走。随着每天我们需要处理的数据在不断地增加,能够深入理解数据背后的真实含义,是数据驱动产业必须具备的基本技能。如果你想走这个方向,就要下定决心,走到黑,加油,共勉。

    下一章我们将介绍第一个分类算法——k-近邻算法。

    参考文章

    • 《机器学习实战》
    展开全文
  • MySQL 面试题

    万次阅读 多人点赞 2019-09-02 16:03:33
    为什么互联网公司一般选择 MySQL 而不是 Oracle? 免费 、流行、够用。 ? 当然,这个回答要稍微润色下。不过一般,很少问这个问题了。 数据库的三范式是什么?什么是反模式? 艿艿:重点在于反模式的回答。...

    MySQL 面试题

    MySQL 涉及的内容非常非常非常多,所以面试题也容易写的杂乱。当年,我们记着几个一定要掌握的重心:

    重点的题目添加了【重点】前缀。

    1. 索引。
    2. 锁。
    3. 事务和隔离级别。

    因为 MySQL 还会有部分内容和运维相关度比较高,所以本文我们分成两部分【开发】【运维】两部分。

    • 对于【开发】部分,我们需要掌握。
    • 对于【运维】部分,更多考验开发的知识储备情况,当然能回答出来是比较好的,特别是对于高级开发工程师、架构师等。

    开发

    为什么互联网公司一般选择 MySQL 而不是 Oracle?

    免费、流行、够用。

    ? 当然,这个回答要稍微润色下。不过一般,很少问这个问题了。

    数据库的三范式是什么?什么是反模式?

    艿艿:重点在于反模式的回答。实际开发中,不会严格遵守三范式。

    胖友直接看 《服务端指南 数据存储篇 | MySQL(07) 范式与反模式》

    MySQL 有哪些数据类型?

    MySQL 支持多种类型,大致可以分为三类:数值、日期/时间和字符串(字符)类型。具体可以看看 《MySQL 数据类型》 文档。

    • 正确的使用数据类型,对数据库的优化是非常重要的。

    ? MySQL 中 varchar 与 char 的区别?varchar(50) 中的 50 代表的涵义?

    • 1、varchar 与 char 的区别,char 是一种固定长度的类型,varchar 则是一种可变长度的类型。
    • 2、varchar(50) 中 50 的涵义最多存放 50 个字符。varchar(50) 和 (200) 存储 hello 所占空间一样,但后者在排序时会消耗更多内存,因为 ORDER BY col 采用 fixed_length 计算 col 长度(memory引擎也一样)。所以,实际场景下,选择合适的 varchar 长度还是有必要的。

    ? int(11) 中的 11 代表什么涵义?

    int(11) 中的 11 ,不影响字段存储的范围,只影响展示效果。具体可以看看 《MySQL 中 int 长度的意义》 文章。

    ? 金额(金钱)相关的数据,选择什么数据类型?

    • 方式一,使用 int 或者 bigint 类型。如果需要存储到分的维度,需要 *100 进行放大。
    • 方式二,使用 decimal 类型,避免精度丢失。如果使用 Java 语言时,需要使用 BigDecimal 进行对应。

    ? 一张表,里面有 ID 自增主键,当 insert 了 17 条记录之后,删除了第 15,16,17 条记录,再把 MySQL 重启,再 insert 一条记录,这条记录的 ID 是 18 还是 15?

    • 一般情况下,我们创建的表的类型是 InnoDB ,如果新增一条记录(不重启 MySQL 的情况下),这条记录的 ID 是18 ;但是如果重启 MySQL 的话,这条记录的 ID 是 15 。因为 InnoDB 表只把自增主键的最大 ID 记录到内存中,所以重启数据库或者对表 OPTIMIZE 操作,都会使最大 ID 丢失。
    • 但是,如果我们使用表的类型是 MyISAM ,那么这条记录的 ID 就是 18 。因为 MyISAM 表会把自增主键的最大 ID 记录到数据文件里面,重启 MYSQL 后,自增主键的最大 ID 也不会丢失。

    最后,还可以跟面试官装个 x ,生产数据,不建议进行物理删除记录。

    ? 表中有大字段 X(例如:text 类型),且字段 X 不会经常更新,以读为为主,请问您是选择拆成子表,还是继续放一起?写出您这样选择的理由

    • 拆带来的问题:连接消耗 + 存储拆分空间。

      如果能容忍拆分带来的空间问题,拆的话最好和经常要查询的表的主键在物理结构上放置在一起(分区) 顺序 IO ,减少连接消耗,最后这是一个文本列再加上一个全文索引来尽量抵消连接消耗。

    • 不拆可能带来的问题:查询性能。

      如果能容忍不拆分带来的查询性能损失的话,上面的方案在某个极致条件下肯定会出现问题,那么不拆就是最好的选择。

    实际场景下,例如说商品表数据量比较大的情况下,会将商品描述单独存储到一个表中。即,使用拆的方案。

    MySQL 有哪些存储引擎?

    MySQL 提供了多种的存储引擎:

    • InnoDB
    • MyISAM
    • MRG_MYISAM
    • MEMORY
    • CSV
    • ARCHIVE
    • BLACKHOLE
    • PERFORMANCE_SCHEMA
    • FEDERATED

    具体每种存储引擎的介绍,可以看看 《数据库存储引擎》

    ? 如何选择合适的存储引擎?

    提供几个选择标准,然后按照标准,选择对应的存储引擎即可,也可以根据 常用引擎对比 来选择你使用的存储引擎。使用哪种引擎需要根据需求灵活选择,一个数据库中多个表可以使用不同的引擎以满足各种性能和实际需求。使用合适的存储引擎,将会提高整个数据库的性能。

    1. 是否需要支持事务。

    2. 对索引和缓存的支持。

    3. 是否需要使用热备。

    4. 崩溃恢复,能否接受崩溃。

    5. 存储的限制。

    6. 是否需要外键支持。

      艿艿:目前开发已经不考虑外键,主要原因是性能。具体可以看看 《从 MySQL 物理外键开始的思考》 文章。

    目前,MySQL 默认的存储引擎是 InnoDB ,并且也是最主流的选择。主要原因如下:

    • 【最重要】支持事务。
    • 支持行级锁和表级锁,能支持更多的并发量。
    • 查询不加锁,完全不影响查询。
    • 支持崩溃后恢复。

    在 MySQL5.1 以及之前的版本,默认的存储引擎是 MyISAM ,但是目前已经不再更新,且它有几个比较关键的缺点:

    • 不支持事务。
    • 使用表级锁,如果数据量大,一个插入操作锁定表后,其他请求都将阻塞。

    艿艿:也就是说,我们不需要花太多力气在 MyISAM 的学习上。

    ? 请说明 InnoDB 和 MyISAM 的区别

    InnoDBMyISAM
    事务支持不支持
    存储限制64TB
    锁粒度行锁表锁
    崩溃后的恢复支持不支持
    外键支持不支持
    全文检索5.7 版本后支持支持

    更完整的对比,可以看看 《数据库存储引擎》「常用引擎对比」 小节。

    ? 请说说 InnoDB 的 4 大特性?

    艿艿:貌似我面试没被问过…反正,我是没弄懂过~~

    • 插入缓冲(insert buffer)
    • 二次写(double write)
    • 自适应哈希索引(ahi)
    • 预读(read ahead)

    ? 为什么 SELECT COUNT(*) FROM table 在 InnoDB 比 MyISAM 慢?

    对于 SELECT COUNT(*) FROM table 语句,在没有 WHERE 条件的情况下,InnoDB 比 MyISAM 可能会慢很多,尤其在大表的情况下。因为,InnoDB 是去实时统计结果,会全表扫描;而 MyISAM 内部维持了一个计数器,预存了结果,所以直接返回即可。

    详细的原因,胖友可以看看 《高性能 MySQL 之 Count 统计查询》 博客。

    ? 各种不同 MySQL 版本的 Innodb 的改进?

    艿艿:这是一个选择了解的问题。

    MySQL5.6 下 Innodb 引擎的主要改进:

    1. online DDL
    2. memcached NoSQL 接口
    3. transportable tablespace( alter table discard/import tablespace)
    4. MySQL 正常关闭时,可以 dump 出 buffer pool 的( space, page_no),重启时 reload,加快预热速度
    5. 索引和表的统计信息持久化到 mysql.innodb_table_stats 和 mysql.innodb_index_stats,可提供稳定的执行计划
    6. Compressed row format 支持压缩表

    MySQL5.7 下 Innodb 引擎的主要改进:

    • 1、修改 varchar 字段长度有时可以使用

      这里的“有时”,指的是也有些限制。可见 《MySQL 5.7 online ddl 的一些改进》

    • 2、Buffer pool 支持在线改变大小

    • 3、Buffer pool 支持导出部分比例

    • 4、支持新建 innodb tablespace,并可以在其中创建多张表

    • 5、磁盘临时表采用 innodb 存储,并且存储在 innodb temp tablespace 里面,以前是 MyISAM 存储

    • 6、透明表空间压缩功能

    重点】什么是索引?

    索引,类似于书籍的目录,想找到一本书的某个特定的主题,需要先找到书的目录,定位对应的页码。

    MySQL 中存储引擎使用类似的方式进行查询,先去索引中查找对应的值,然后根据匹配的索引找到对应的数据行。

    ? 索引有什么好处?

    1. 提高数据的检索速度,降低数据库IO成本:使用索引的意义就是通过缩小表中需要查询的记录的数目从而加快搜索的速度。
    2. 降低数据排序的成本,降低CPU消耗:索引之所以查的快,是因为先将数据排好序,若该字段正好需要排序,则正好降低了排序的成本。

    ? 索引有什么坏处?

    1. 占用存储空间:索引实际上也是一张表,记录了主键与索引字段,一般以索引文件的形式存储在磁盘上。
    2. 降低更新表的速度:表的数据发生了变化,对应的索引也需要一起变更,从而减低的更新速度。否则索引指向的物理数据可能不对,这也是索引失效的原因之一。

    ? 索引的使用场景?

    • 1、对非常小的表,大部分情况下全表扫描效率更高。

    • 2、对中大型表,索引非常有效。

    • 3、特大型的表,建立和使用索引的代价随着增长,可以使用分区技术来解决。

      实际场景下,MySQL 分区表很少使用,原因可以看看 《互联网公司为啥不使用 MySQL 分区表?》 文章。

      对于特大型的表,更常用的是“分库分表”,目前解决方案有 Sharding Sphere、MyCAT 等等。

    ? 索引的类型?

    索引,都是实现在存储引擎层的。主要有六种类型:

    • 1、普通索引:最基本的索引,没有任何约束。

    • 2、唯一索引:与普通索引类似,但具有唯一性约束。

    • 3、主键索引:特殊的唯一索引,不允许有空值。

    • 4、复合索引:将多个列组合在一起创建索引,可以覆盖多个列。

    • 5、外键索引:只有InnoDB类型的表才可以使用外键索引,保证数据的一致性、完整性和实现级联操作。

    • 6、全文索引:MySQL 自带的全文索引只能用于 InnoDB、MyISAM ,并且只能对英文进行全文检索,一般使用全文索引引擎。

      常用的全文索引引擎的解决方案有 Elasticsearch、Solr 等等。最为常用的是 Elasticsearch 。

    具体的使用,可以看看 《服务端指南 数据存储篇 | MySQL(03) 如何设计索引》

    ? MySQL 索引的“创建”原则?

    注意,是“创建”噢。

    • 1、最适合索引的列是出现在 WHERE 子句中的列,或连接子句中的列,而不是出现在 SELECT 关键字后的列。

    • 2、索引列的基数越大,索引效果越好。

      具体为什么,可以看看如下两篇文章:

    • 3、根据情况创建复合索引,复合索引可以提高查询效率。

      因为复合索引的基数会更大。

    • 4、避免创建过多的索引,索引会额外占用磁盘空间,降低写操作效率。

    • 5、主键尽可能选择较短的数据类型,可以有效减少索引的磁盘占用提高查询效率。

    • 6、对字符串进行索引,应该定制一个前缀长度,可以节省大量的索引空间。

    ? MySQL 索引的“使用”注意事项?

    注意,是“使用”噢。

    • 1、应尽量避免在 WHERE 子句中使用 !=<> 操作符,否则将引擎放弃使用索引而进行全表扫描。优化器将无法通过索引来确定将要命中的行数,因此需要搜索该表的所有行。

      注意,column IS NULL 也是不可以使用索引的。

    • 2、应尽量避免在 WHERE 子句中使用 OR 来连接条件,否则将导致引擎放弃使用索引而进行全表扫描,如:SELECT id FROM t WHERE num = 10 OR num = 20

    • 3、应尽量避免在 WHERE 子句中对字段进行表达式操作,这将导致引擎放弃使用索引而进行全表扫描。

    • 4、应尽量避免在 WHERE 子句中对字段进行函数操作,这将导致引擎放弃使用索引而进行全表扫描。

    • 5、不要在 WHERE 子句中的 = 左边进行函数、算术运算或其他表达式运算,否则系统将可能无法正确使用索引。

    • 6、复合索引遵循前缀原则。

    • 7、如果 MySQL 评估使用索引比全表扫描更慢,会放弃使用索引。如果此时想要索引,可以在语句中添加强制索引。

    • 8、列类型是字符串类型,查询时一定要给值加引号,否则索引失效。

    • 9、LIKE 查询,% 不能在前,因为无法使用索引。如果需要模糊匹配,可以使用全文索引。

    关于这块,可以看看 《服务端指南 数据存储篇 | MySQL(04) 索引使用的注意事项》 文章,写的更加细致。

    ? 以下三条 SQL 如何建索引,只建一条怎么建?

    WHERE a = 1 AND b = 1
    WHERE b = 1
    WHERE b = 1 ORDER BY time DESC
    
    
    • 以顺序 b , a, time 建立复合索引,CREATE INDEX table1_b_a_time ON index_test01(b, a, time)
    • 对于第一条 SQL ,因为最新 MySQL 版本会优化 WHERE 子句后面的列顺序,以匹配复合索引顺序。

    ? 想知道一个查询用到了哪个索引,如何查看?

    EXPLAIN 显示了 MYSQL 如何使用索引来处理 SELECT 语句以及连接表,可以帮助选择更好的索引和写出更优化的查询语句。

    使用方法,在 SELECT 语句前加上 EXPLAIN 就可以了。 《MySQL explain 执行计划详细解释》

    【重点】MySQL 索引的原理?

    解释 MySQL 索引的原理,篇幅会比较长,并且网络上已经有靠谱的资料可以看,所以艿艿这里整理了几篇,胖友可以对照着看。

    下面,艿艿对关键知识做下整理,方便胖友回顾。

    几篇好一点的文章:

    《MySQL索引背后的数据结构及算法原理》

    《MySQL 索引原理》

    《深入理解 MySQL 索引原理和实现 —— 为什么索引可以加速查询?》

    MySQL 有哪些索引方法?

    在 MySQL 中,我们可以看到两种索引方式:

    什么是 B-Tree 索引?

    B-Tree 是为磁盘等外存储设备设计的一种平衡查找树。因此在讲 B-Tree 之前先了解下磁盘的相关知识。

    • 系统从磁盘读取数据到内存时是以磁盘块(block)为基本单位的,位于同一个磁盘块中的数据会被一次性读取出来,而不是需要什么取什么。
    • InnoDB存储引擎中有页(Page)的概念,页是其磁盘管理的最小单位。InnoDB 存储引擎中默认每个页的大小为 16 KB,可通过参数 innodb_page_size 将页的大小设置为 4K、8K、16K ,在 MySQL 中可通过如下命令查看页的大小:
    mysql> show variables like 'innodb_page_size';
    
    • 而系统一个磁盘块的存储空间往往没有这么大,因此 InnoDB 每次申请磁盘空间时都会是若干地址连续磁盘块来达到页的大小 16KB 。InnoDB 在把磁盘数据读入到磁盘时会以页为基本单位,在查询数据时如果一个页中的每条数据都能有助于定位数据记录的位置,这将会减少磁盘 I/O 次数,提高查询效率。

    B-Tree 结构的数据可以让系统高效的找到数据所在的磁盘块。为了描述B-Tree,首先定义一条记录为一个二元组 [key, data] ,key 为记录的键值,对应表中的主键值,data 为一行记录中除主键外的数据。对于不同的记录,key值互不相同。

    一棵 m 阶的 B-Tree 有如下特性:

    1. 每个节点最多有 m 个孩子。
      • 除了根节点和叶子节点外,其它每个节点至少有 Ceil(m/2) 个孩子。
      • 若根节点不是叶子节点,则至少有 2 个孩子。
    2. 所有叶子节点都在同一层,且不包含其它关键字信息。
    3. 每个非叶子节点包含 n 个关键字信息(P0,P1,…Pn, k1,…kn)
      • 关键字的个数 n 满足:ceil(m/2)-1 <= n <= m-1
      • ki(i=1,…n) 为关键字,且关键字升序排序。
      • Pi(i=0,…n) 为指向子树根节点的指针。P(i-1) 指向的子树的所有节点关键字均小于 ki ,但都大于 k(i-1) 。

    B-Tree 中的每个节点根据实际情况可以包含大量的关键字信息和分支,如下图所示为一个 3 阶的 B-Tree:

    B-Tree 的结构

    • 每个节点占用一个盘块的磁盘空间,一个节点上有两个升序排序的 key 和三个指向子树根节点的 point ,point 存储的是子节点所在磁盘块的地址。两个 key 划分成的三个范围域,对应三个 point 指向的子树的数据的范围域。
    • 以根节点为例,key 为 17 和 35 ,P1 指针指向的子树的数据范围为小于 17 ,P2 指针指向的子树的数据范围为 [17~35] ,P3 指针指向的子树的数据范围为大于 35 。

    模拟查找 key 为 29 的过程:

    • 1、根据根节点找到磁盘块 1 ,读入内存。【磁盘I/O操作第1次】
    • 2、比较 key 29 在区间(17,35),找到磁盘块 1 的指针 P2 。
    • 3、根据 P2 指针找到磁盘块 3 ,读入内存。【磁盘I/O操作第2次】
    • 4、比较 key 29 在区间(26,30),找到磁盘块3的指针P2。
    • 5、根据 P2 指针找到磁盘块 8 ,读入内存。【磁盘I/O操作第3次】
    • 6、在磁盘块 8 中的 key 列表中找到 eky 29 。

    分析上面过程,发现需要 3 次磁盘 I/O 操作,和 3 次内存查找操作。由于内存中的 key 是一个有序表结构,可以利用二分法查找提高效率。而 3 次磁盘 I/O 操作是影响整个 B-Tree 查找效率的决定因素。B-Tree 相对于 AVLTree 缩减了节点个数,使每次磁盘 I/O 取到内存的数据都发挥了作用,从而提高了查询效率。

    什么是 B+Tree 索引?

    B+Tree 是在 B-Tree 基础上的一种优化,使其更适合实现外存储索引结构,InnoDB存储引擎就是用 B+Tree 实现其索引结构。

    从上一节中的 B-Tree 结构图中可以看到,每个节点中不仅包含数据的 key 值,还有 data 值。而每一个页的存储空间是有限的,如果 data 数据较大时将会导致每个节点(即一个页)能存储的 key 的数量很小,当存储的数据量很大时同样会导致 B-Tree 的深度较大,增大查询时的磁盘 I/O 次数,进而影响查询效率。在 B+Tree 中,所有数据记录节点都是按照键值大小顺序存放在同一层的叶子节点上,而非叶子节点上只存储 key 值信息,这样可以大大加大每个节点存储的 key 值数量,降低 B+Tree 的高度。

    B+Tree 相对于 B-Tree 有几点不同:

    • 非叶子节点只存储键值信息。
    • 所有叶子节点之间都有一个链指针。
    • 数据记录都存放在叶子节点中。

    将上一节中的 B-Tree 优化,由于 B+Tree 的非叶子节点只存储键值信息,假设每个磁盘块能存储 4 个键值及指针信息,则变成 B+Tree 后其结构如下图所示:

    B+Tree 的结构

    • 通常在 B+Tree 上有两个头指针,一个指向根节点,另一个指向关键字最小的叶子节点,而且所有叶子节点(即数据节点)之间是一种链式环结构。因此可以对 B+Tree 进行两种查找运算:一种是对于主键的范围查找和分页查找,另一种是从根节点开始,进行随机查找。

    可能上面例子中只有 22 条数据记录,看不出 B+Tree 的优点,下面做一个推算:

    • InnoDB 存储引擎中页的大小为 16KB,一般表的主键类型为 INT(占用4个字节) 或 BIGINT(占用8个字节),指针类型也一般为 4 或 8 个字节,也就是说一个页(B+Tree 中的一个节点)中大概存储 16KB/(8B+8B)=1K 个键值(因为是估值,为方便计算,这里的 K 取值为〖10〗^3)。也就是说一个深度为 3 的 B+Tree 索引可以维护10^3 *10^3 *10^3 = 10亿 条记录。
    • 实际情况中每个节点可能不能填充满,因此在数据库中,B+Tree 的高度一般都在 2~4 层。MySQL 的 InnoDB 存储引擎在设计时是将根节点常驻内存的,也就是说查找某一键值的行记录时最多只需要 1~3 次磁盘 I/O 操作。

    B+Tree 有哪些索引类型?

    在 B+Tree 中,根据叶子节点的内容,索引类型分为主键索引非主键索引

    • 主键索引的叶子节点存的数据是整行数据( 即具体数据 )。在 InnoDB 里,主键索引也被称为聚集索引(clustered index)。
    • 非主键索引的叶子节点存的数据是整行数据的主键,键值是索引。在 InnoDB 里,非主键索引也被称为辅助索引(secondary index)。

    辅助索引与聚集索引的区别在于辅助索引的叶子节点并不包含行记录的全部数据,而是存储相应行数据的聚集索引键,即主键。当通过辅助索引来查询数据时,需要进过两步:

    • 首先,InnoDB 存储引擎会遍历辅助索引找到主键。
    • 然后,再通过主键在聚集索引中找到完整的行记录数据。

    另外,InnoDB 通过主键聚簇数据,如果没有定义主键,会选择一个唯一的非空索引代替,如果没有这样的索引,会隐式定义个主键作为聚簇索引。

    再另外,可能有胖友有和艿艿的一样疑惑,在辅助索引如果相同的索引怎么存储?最终存储到 B+Tree 非子节点中时,它们对应的主键 ID 是不同的,所以妥妥的。如下图所示:

    相同的索引怎么存储

    聚簇索引的注意点有哪些?

    聚簇索引表最大限度地提高了 I/O 密集型应用的性能,但它也有以下几个限制:

    • 1、插入速度严重依赖于插入顺序,按照主键的顺序插入是最快的方式,否则将会出现页分裂,严重影响性能。因此,对于 InnoDB 表,我们一般都会定义一个自增的 ID 列为主键。

      关于这一点,可能面试官会换一个问法。例如,为什么主键需要是自增 ID ,又或者为什么主键需要带有时间性关联。

    • 2、更新主键的代价很高,因为将会导致被更新的行移动。因此,对于InnoDB 表,我们一般定义主键为不可更新。

      MySQL 默认情况下,主键是允许更新的。对于 MongoDB ,其 主键是不允许更新的。

    • 3、二级索引访问需要两次索引查找,第一次找到主键值,第二次根据主键值找到行数据。

      当然,有一种情况可以无需二次查找,基于非主键索引查询,但是查询字段只有主键 ID ,那么在二级索引中就可以查找到。

    • 4、主键 ID 建议使用整型。因为,每个主键索引的 B+Tree 节点的键值可以存储更多主键 ID ,每个非主键索引的 B+Tree 节点的数据可以存储更多主键 ID 。

    什么是索引的最左匹配特性?

    当 B+Tree 的数据项是复合的数据结构,比如索引 (name, age, sex) 的时候,B+Tree 是按照从左到右的顺序来建立搜索树的。

    • 比如当 (张三, 20, F) 这样的数据来检索的时候,B+Tree 会优先比较 name 来确定下一步的所搜方向,如果 name 相同再依次比较 age 和 sex ,最后得到检索的数据。
    • 但当 (20, F) 这样的没有 name 的数据来的时候,B+Tree 就不知道下一步该查哪个节点,因为建立搜索树的时候 name 就是第一个比较因子,必须要先根据 name 来搜索才能知道下一步去哪里查询。
    • 比如当 (张三, F) 这样的数据来检索时,B+Tree 可以用 name 来指定搜索方向,但下一个字段 age 的缺失,所以只能把名字等于张三的数据都找到,然后再匹配性别是 F 的数据了。

    这个是非常重要的性质,即索引的最左匹配特性。

    MyISAM 索引实现?

    MyISAM 索引的实现,和 InnoDB 索引的实现是一样使用 B+Tree ,差别在于 MyISAM 索引文件和数据文件是分离的,索引文件仅保存数据记录的地址

    MyISAM 索引与 InnoDB 索引的区别?

    • InnoDB 索引是聚簇索引,MyISAM 索引是非聚簇索引。
    • InnoDB 的主键索引的叶子节点存储着行数据,因此主键索引非常高效。
    • MyISAM 索引的叶子节点存储的是行数据地址,需要再寻址一次才能得到数据。
    • InnoDB 非主键索引的叶子节点存储的是主键和其他带索引的列数据,因此查询时做到覆盖索引会非常高效。

    【重点】请说说 MySQL 的四种事务隔离级别?

    • 1、插入速度严重依赖于插入顺序,按照主键的顺序插入是最快的方式,否则将会出现页分裂,严重影响性能。因此,对于 InnoDB 表,我们一般都会定义一个自增的 ID 列为主键。

      关于这一点,可能面试官会换一个问法。例如,为什么主键需要是自增 ID ,又或者为什么主键需要带有时间性关联。

    • 2、更新主键的代价很高,因为将会导致被更新的行移动。因此,对于InnoDB 表,我们一般定义主键为不可更新。

      MySQL 默认情况下,主键是允许更新的。对于 MongoDB ,其 主键是不允许更新的。

    • 3、二级索引访问需要两次索引查找,第一次找到主键值,第二次根据主键值找到行数据。

      当然,有一种情况可以无需二次查找,基于非主键索引查询,但是查询字段只有主键 ID ,那么在二级索引中就可以查找到。

    • 4、主键 ID 建议使用整型。因为,每个主键索引的 B+Tree 节点的键值可以存储更多主键 ID ,每个非主键索引的 B+Tree 节点的数据可以存储更多主键 ID 。

    • 1、插入速度严重依赖于插入顺序,按照主键的顺序插入是最快的方式,否则将会出现页分裂,严重影响性能。因此,对于 InnoDB 表,我们一般都会定义一个自增的 ID 列为主键。

      关于这一点,可能面试官会换一个问法。例如,为什么主键需要是自增 ID ,又或者为什么主键需要带有时间性关联。

    • 2、更新主键的代价很高,因为将会导致被更新的行移动。因此,对于InnoDB 表,我们一般定义主键为不可更新。

      MySQL 默认情况下,主键是允许更新的。对于 MongoDB ,其 主键是不允许更新的。

    • 3、二级索引访问需要两次索引查找,第一次找到主键值,第二次根据主键值找到行数据。

      当然,有一种情况可以无需二次查找,基于非主键索引查询,但是查询字段只有主键 ID ,那么在二级索引中就可以查找到。

    • 4、主键 ID 建议使用整型。因为,每个主键索引的 B+Tree 节点的键值可以存储更多主键 ID ,每个非主键索引的 B+Tree 节点的数据可以存储更多主键 ID 。

    • 1、插入速度严重依赖于插入顺序,按照主键的顺序插入是最快的方式,否则将会出现页分裂,严重影响性能。因此,对于 InnoDB 表,我们一般都会定义一个自增的 ID 列为主键。

      关于这一点,可能面试官会换一个问法。例如,为什么主键需要是自增 ID ,又或者为什么主键需要带有时间性关联。

    • 2、更新主键的代价很高,因为将会导致被更新的行移动。因此,对于InnoDB 表,我们一般定义主键为不可更新。

      MySQL 默认情况下,主键是允许更新的。对于 MongoDB ,其 主键是不允许更新的。

    • 3、二级索引访问需要两次索引查找,第一次找到主键值,第二次根据主键值找到行数据。

      当然,有一种情况可以无需二次查找,基于非主键索引查询,但是查询字段只有主键 ID ,那么在二级索引中就可以查找到。

    • 4、主键 ID 建议使用整型。因为,每个主键索引的 B+Tree 节点的键值可以存储更多主键 ID ,每个非主键索引的 B+Tree 节点的数据可以存储更多主键 ID 。

    事务就是对一系列的数据库操作(比如插入多条数据)进行统一的提交或回滚操作,如果插入成功,那么一起成功,如果中间有一条出现异常,那么回滚之前的所有操作。

    这样可以防止出现脏数据,防止数据库数据出现问题。

    事务的特性指的是?

    指的是 ACID ,如下图所示:

    事务的特性

    1. 原子性 Atomicity :一个事务(transaction)中的所有操作,或者全部完成,或者全部不完成,不会结束在中间某个环节。事务在执行过程中发生错误,会被恢复(Rollback)到事务开始前的状态,就像这个事务从来没有执行过一样。即,事务不可分割、不可约简。
    2. 一致性 Consistency :在事务开始之前和事务结束以后,数据库的完整性没有被破坏。这表示写入的资料必须完全符合所有的预设约束触发器级联回滚等。
    3. 隔离性 Isolation :数据库允许多个并发事务同时对其数据进行读写和修改的能力,隔离性可以防止多个事务并发执行时由于交叉执行而导致数据的不一致。事务隔离分为不同级别,包括读未提交(Read uncommitted)、读提交(read committed)、可重复读(repeatable read)和串行化(Serializable)。
    4. 持久性 Durability :事务处理结束后,对数据的修改就是永久的,即便系统故障也不会丢失。

    事务的并发问题?

    实际场景下,事务并不是串行的,所以会带来如下三个问题:

    • 1、脏读:事务 A 读取了事务 B 更新的数据,然后 B 回滚操作,那么 A 读取到的数据是脏数据。
    • 2、不可重复读:事务 A 多次读取同一数据,事务 B 在事务 A 多次读取的过程中,对数据作了更新并提交,导致事务 A 多次读取同一数据时,结果不一致。
    • 3、幻读:系统管理员 A 将数据库中所有学生的成绩从具体分数改为 ABCDE 等级,但是系统管理员 B 就在这个时候插入了一条具体分数的记录,当系统管理员 A 改结束后发现还有一条记录没有改过来,就好像发生了幻觉一样,这就叫幻读。

    小结:不可重复读的和幻读很容易混淆,不可重复读侧重于修改,幻读侧重于新增或删除。解决不可重复读的问题只需锁住满足条件的行,解决幻读需要锁表。

    MySQL 事务隔离级别会产生的并发问题?

    • READ UNCOMMITTED(未提交读):事务中的修改,即使没有提交,对其他事务也都是可见的。

      会导致脏读。

    • READ COMMITTED(提交读):事务从开始直到提交之前,所做的任何修改对其他事务都是不可见的。

      会导致不可重复读。

      这个隔离级别,也可以叫做“不可重复读”。

    • REPEATABLE READ(可重复读):一个事务按相同的查询条件读取以前检索过的数据,其他事务插入了满足其查询条件的新数据。产生幻行。

      会导致幻读。

    • SERIALIZABLE(可串行化):强制事务串行执行。

    事务隔离级别脏读不可重复读幻读
    读未提交(read-uncommitted)
    读已提交(read-committed)
    可重复读(repeatable-read)是(x)
    串行化(serializable)
    • MySQL 默认的事务隔离级别为可重复读(repeatable-read) 。
    • 上图的 <X> 处,MySQL 因为其间隙锁的特性,导致其在可重复读(repeatable-read)的隔离级别下,不存在幻读问题。也就是说,上图 <X> 处,需要改成“否”!!!!
    • ? 记住这个表的方式,我们会发现它是自左上向右下是一个对角线。当然,最好是去理解。
    • 具体的实验,胖友可以看看 《MySQL 的四种事务隔离级别》

    【重点】请说说 MySQL 的锁机制?

    表锁是日常开发中的常见问题,因此也是面试当中最常见的考察点,当多个查询同一时刻进行数据修改时,就会产生并发控制的问题。MySQL 的共享锁和排他锁,就是读锁和写锁。

    • 共享锁:不堵塞,多个用户可以同时读一个资源,互不干扰。
    • 排他锁:一个写锁会阻塞其他的读锁和写锁,这样可以只允许一个用户进行写入,防止其他用户读取正在写入的资源。

    ? 锁的粒度?

    • 表锁:系统开销最小,会锁定整张表,MyIsam 使用表锁。
    • 行锁:最大程度的支持并发处理,但是也带来了最大的锁开销,InnoDB 使用行锁。

    ? 什么是悲观锁?什么是乐观锁?

    1)悲观锁

    它指的是对数据被外界(包括本系统当前的其他事务,以及来自外部系统的事务处理)修改持保守态度,因此,在整个数据处理过程中,将数据处于锁定状态。悲观锁的实现,往往依靠数据库提供的锁机制(也只有数据库层提供的锁机制才能真正保证数据访问的排他性,否则,即使在本系统中实现了加锁机制,也无法保证外部系统不会修改数据)。

    在悲观锁的情况下,为了保证事务的隔离性,就需要一致性锁定读。读取数据时给加锁,其它事务无法修改这些数据。修改删除数据时也要加锁,其它事务无法读取这些数据。

    2)乐观锁

    相对悲观锁而言,乐观锁机制采取了更加宽松的加锁机制。悲观锁大多数情况下依靠数据库的锁机制实现,以保证操作最大程度的独占性。但随之而来的就是数据库性能的大量开销,特别是对长事务而言,这样的开销往往无法承受。

    而乐观锁机制在一定程度上解决了这个问题。乐观锁,大多是基于数据版本( Version )记录机制实现。何谓数据版本?即为数据增加一个版本标识,在基于数据库表的版本解决方案中,一般是通过为数据库表增加一个 “version” 字段来实现。读取出数据时,将此版本号一同读出,之后更新时,对此版本号加一。此时,将提交数据的版本数据与数据库表对应记录的当前版本信息进行比对,如果提交的数据版本号大于数据库表当前版本号,则予以更新,否则认为是过期数据。

    什么是死锁?

    多数情况下,可以认为如果一个资源被锁定,它总会在以后某个时间被释放。而死锁发生在当多个进程访问同一数据库时,其中每个进程拥有的锁都是其他进程所需的,由此造成每个进程都无法继续下去。简单的说,进程 A 等待进程 B 释放他的资源,B 又等待 A 释放他的资源,这样就互相等待就形成死锁。

    虽然进程在运行过程中,可能发生死锁,但死锁的发生也必须具备一定的条件,死锁的发生必须具备以下四个必要条件:

    • 互斥条件:指进程对所分配到的资源进行排它性使用,即在一段时间内某资源只由一个进程占用。如果此时还有其它进程请求资源,则请求者只能等待,直至占有资源的进程用毕释放。
    • 请求和保持条件:指进程已经保持至少一个资源,但又提出了新的资源请求,而该资源已被其它进程占有,此时请求进程阻塞,但又对自己已获得的其它资源保持不放。
    • 不剥夺条件:指进程已获得的资源,在未使用完之前,不能被剥夺,只能在使用完时由自己释放。
    • 环路等待条件:指在发生死锁时,必然存在一个进程——资源的环形链,即进程集合 {P0,P1,P2,•••,Pn} 中的 P0 正在等待一个 P1 占用的资源;P1 正在等待 P2 占用的资源,……,Pn 正在等待已被 P0 占用的资源。

    下列方法有助于最大限度地降低死锁:

    • 设置获得锁的超时时间。

      通过超时,至少保证最差最差最差情况下,可以有退出的口子。

    • 按同一顺序访问对象。

      这个是最重要的方式。

    • 避免事务中的用户交互。

    • 保持事务简短并在一个批处理中。

    • 使用低隔离级别。

    • 使用绑定连接。

    ? MySQL 中 InnoDB 引擎的行锁是通过加在什么上完成(或称实现)的?为什么是这样子的??

    InnoDB 是基于索引来完成行锁。例如:SELECT * FROM tab_with_index WHERE id = 1 FOR UPDATE

    • FOR UPDATE 可以根据条件来完成行锁锁定,并且 id 是有索引键的列,如果 id 不是索引键那么 InnoDB 将完成表锁,并发将无从谈起。

    【重要】MySQL 查询执行顺序?

    MySQL 查询执行的顺序是:

    (1)     SELECT
    (2)     DISTINCT <select_list>
    (3)     FROM <left_table>
    (4)     <join_type> JOIN <right_table>
    (5)     ON <join_condition>
    (6)     WHERE <where_condition>
    (7)     GROUP BY <group_by_list>
    (8)     HAVING <having_condition>
    (9)     ORDER BY <order_by_condition>
    (10)    LIMIT <limit_number>
    

    具体的,可以看看 《SQL 查询之执行顺序解析》 文章。

    【重要】聊聊 MySQL SQL 优化?

    可以看看如下几篇文章:

    另外,除了从 SQL 层面进行优化,也可以从服务器硬件层面,进一步优化 MySQL 。具体可以看看 《MySQL 数据库性能优化之硬件优化》

    编写 SQL 查询语句的考题合集

    MySQL 数据库 CPU 飙升到 500% 的话,怎么处理?

    当 CPU 飙升到 500% 时,先用操作系统命令 top 命令观察是不是 mysqld 占用导致的,如果不是,找出占用高的进程,并进行相关处理。

    如果此时是 IO 压力比较大,可以使用 iostat 命令,定位是哪个进程占用了磁盘 IO 。

    如果是 mysqld 造成的,使用 show processlist 命令,看看里面跑的 Session 情况,是不是有消耗资源的 SQL 在运行。找出消耗高的 SQL ,看看执行计划是否准确, index 是否缺失,或者实在是数据量太大造成。一般来说,肯定要 kill 掉这些线程(同时观察 CPU 使用率是否下降),等进行相应的调整(比如说加索引、改 SQL 、改内存参数)之后,再重新跑这些 SQL。

    也可以查看 MySQL 慢查询日志,看是否有慢 SQL 。

    也有可能是每个 SQL 消耗资源并不多,但是突然之间,有大量的 Session 连进来导致 CPU 飙升,这种情况就需要跟应用一起来分析为何连接数会激增,再做出相应的调整,比如说限制连接数等。

    ? 在 MySQL 服务器运行缓慢的情况下输入什么命令能缓解服务器压力?

    1)检查系统的状态

    通过操作系统的一些工具检查系统的状态,比如 CPU、内存、交换、磁盘的利用率,根据经验或与系统正常时的状态相比对,有时系统表面上看起来看空闲,这也可能不是一个正常的状态,因为 CPU 可能正等待IO的完成。除此之外,还应观注那些占用系统资源(CPU、内存)的进程。

    • 使用 sar 来检查操作系统是否存在 IO 问题。
    • 使用 vmstat 监控内存 CPU 资源。
    • 磁盘 IO 问题,处理方式:做 raid10 提高性能 。
    • 网络问题,telnet 一下 MySQL 对外开放的端口。如果不通的话,看看防火墙是否正确设置了。另外,看看 MySQ L是不是开启了 skip-networking 的选项,如果开启请关闭。

    2)检查 MySQL 参数

    • max_connect_errors
    • connect_timeout
    • skip-name-resolve
    • slave-net-timeout=seconds
    • master-connect-retry

    3)检查 MySQL 相关状态值

    • 关注连接数
    • 关注下系统锁情况
    • 关注慢查询(slow query)日志

    Innodb 的事务与日志的实现方式

    ? 有多少种日志?

    • redo 日志
    • undo 日志

    ? 日志的存放形式?

    • redo:在页修改的时候,先写到 redo log buffer 里面, 然后写到 redo log 的文件系统缓存里面(fwrite),然后再同步到磁盘文件(fsync)。
    • undo:在 MySQL5.5 之前,undo 只能存放在 ibdata* 文件里面, 5.6 之后,可以通过设置 innodb_undo_tablespaces 参数把 undo log 存放在 ibdata* 之外。

    ? 事务是如何通过日志来实现的,说得越深入越好

    艿艿:这个流程的理解还是比较简单的,实际思考实现感觉还是蛮复杂的。

    基本流程如下:

    • 因为事务在修改页时,要先记 undo ,在记 undo 之前要记 undo 的 redo, 然后修改数据页,再记数据页修改的 redo。 redo(里面包括 undo 的修改)一定要比数据页先持久化到磁盘。
    • 当事务需要回滚时,因为有 undo,可以把数据页回滚到前镜像的状态。
    • 崩溃恢复时,如果 redo log 中事务没有对应的 commit 记录,那么需要用 undo 把该事务的修改回滚到事务开始之前。如果有 commit 记录,就用 redo 前滚到该事务完成时并提交掉。

    MySQL binlog 的几种日志录入格式以及区别

    ? 各种日志格式的涵义

    binlog 有三种格式类型,分别如下:

    1)Statement

    每一条会修改数据的 SQL 都会记录在 binlog 中。

    • 优点:不需要记录每一行的变化,减少了 binlog 日志量,节约了 IO,提高性能。(相比 row 能节约多少性能与日志量,这个取决于应用的 SQL 情况,正常同一条记录修改或者插入 row 格式所产生的日志量还小于 Statement 产生的日志量,但是考虑到如果带条件的 update 操作,以及整表删除,alter 表等操作,ROW 格式会产生大量日志,因此在考虑是否使用 ROW 格式日志时应该跟据应用的实际情况,其所产生的日志量会增加多少,以及带来的 IO 性能问题。)

    • 缺点:由于记录的只是执行语句,为了这些语句能在 slave 上正确运行,因此还必须记录每条语句在执行的时候的一些相关信息,以保证所有语句能在 slave 得到和在 master 端执行时候相同 的结果。另外 MySQL 的复制,像一些特定函数功能,slave 可与 master 上要保持一致会有很多相关问题(如 sleep() 函数,last_insert_id(),以及 user-defined functions(udf) 会出现问题)。

    • 使用以下函数的语句也无法被复制:

      • LOAD_FILE()

      • UUID()

      • USER()

      • FOUND_ROWS()

      • SYSDATE() (除非启动时启用了 --sysdate-is-now 选项)

        同时在 INSERT …SELECT 会产生比 RBR 更多的行级锁 。

    2)Row

    不记录 SQL 语句上下文相关信息,仅保存哪条记录被修改。

    • 优点:binlog 中可以不记录执行的 SQL 语句的上下文相关的信息,仅需要记录那一条记录被修改成什么了。所以 rowlevel 的日志内容会非常清楚的记录下每一行数据修改的细节。而且不会出现某些特定情况下的存储过程,或 function ,以及 trigger 的调用和触发无法被正确复制的问题。
    • 缺点:所有的执行的语句当记录到日志中的时候,都将以每行记录的修改来记录,这样可能会产生大量的日志内容,比如一条 Update 语句,修改多条记录,则 binlog 中每一条修改都会有记录,这样造成 binlog 日志量会很大,特别是当执行 alter table 之类的语句的时候,由于表结构修改,每条记录都发生改变,那么该表每一条记录都会记录到日志中。

    3)Mixedlevel

    是以上两种 level 的混合使用。

    • 一般的语句修改使用 Statement 格式保存 binlog 。
    • 如一些函数,statement 无法完成主从复制的操作,则采用 Row 格式保存 binlog 。

    MySQL 会根据执行的每一条具体的 SQL 语句来区分对待记录的日志形式,也就是在 Statement 和 Row 之间选择 一种。

    新版本的 MySQL 中对 row level 模式也被做了优化,并不是所有的修改都会以 row level 来记录。

    • 像遇到表结构变更的时候就会以 Statement 模式来记录。
    • 至于 Update 或者 Delete 等修改数据的语句,还是会记录所有行的变更,即使用 Row 模式。

    ? 适用场景?

    在一条 SQL 操作了多行数据时, Statement 更节省空间,Row 更占用空间。但是, Row 模式更可靠。

    因为,互联网公司,使用 MySQL 的功能相对少,基本不使用存储过程、触发器、函数的功能,选择默认的语句模式,Statement Level(默认)即可。

    ? 结合第一个问题,每一种日志格式在复制中的优劣?

    • Statement 可能占用空间会相对小一些,传送到 slave 的时间可能也短,但是没有 Row 模式的可靠。
    • Row 模式在操作多行数据时更占用空间,但是可靠。

    所以,这是在占用空间和可靠之间的选择。

    如何在线正确清理 MySQL binlog?

    MySQL 中的 binlog 日志记录了数据中的数据变动,便于对数据的基于时间点和基于位置的恢复。但日志文件的大小会越来越大,占用大量的磁盘空间,因此需要定时清理一部分日志信息。

    # 首先查看主从库正在使用的binlog文件名称
    show master(slave) status
    
    # 删除之前一定要备份
    purge master logs before'2017-09-01 00:00:00'; # 删除指定时间前的日志
    purge master logs to'mysql-bin.000001'; # 删除指定的日志文件
    
    # 自动删除:通过设置binlog的过期时间让系统自动删除日志
    show variables like 'expire_logs_days'; # 查看过期时间
    set global expire_logs_days = 30; # 设置过期时间
    

    MySQL 主从复制的流程是怎么样的?

    MySQL 的主从复制是基于如下 3 个线程的交互(多线程复制里面应该是 4 类线程):

    • 1、Master 上面的 binlog dump 线程,该线程负责将 master 的 binlog event 传到 slave 。
    • 2、Slave 上面的 IO 线程,该线程负责接收 Master 传过来的 binlog,并写入 relay log 。
    • 3、Slave 上面的 SQL 线程,该线程负责读取 relay log 并执行。
    • 4、如果是多线程复制,无论是 5.6 库级别的假多线程还是 MariaDB 或者 5.7 的真正的多线程复制, SQL 线程只做 coordinator ,只负责把 relay log 中的 binlog 读出来然后交给 worker 线程, woker 线程负责具体 binlog event 的执行。

    ? MySQL 如何保证复制过程中数据一致性?

    • 1、在 MySQL5.5 以及之前, slave 的 SQL 线程执行的 relay log 的位置只能保存在文件( relay-log.info)里面,并且该文件默认每执行 10000 次事务做一次同步到磁盘, 这意味着 slave 意外 crash 重启时, SQL 线程执行到的位置和数据库的数据是不一致的,将导致复制报错,如果不重搭复制,则有可能会导致数据不一致。
      • MySQL 5.6 引入参数 relay_log_info_repository,将该参数设置为 TABLE 时, MySQL 将 SQL 线程执行到的位置存到 mysql.slave_relay_log_info 表,这样更新该表的位置和 SQL 线程执行的用户事务绑定成一个事务,这样 slave 意外宕机后,slave 通过 innodb 的崩溃恢复可以把 SQL 线程执行到的位置和用户事务恢复到一致性的状态。
    • 2、MySQL 5.6 引入 GTID 复制,每个 GTID 对应的事务在每个实例上面最多执行一次, 这极大地提高了复制的数据一致性。
    • 3、MySQL 5.5 引入半同步复制, 用户安装半同步复制插件并且开启参数后,设置超时时间,可保证在超时时间内如果 binlog 不传到 slave 上面,那么用户提交事务时不会返回,直到超时后切成异步复制,但是如果切成异步之前用户线程提交时在 master 上面等待的时候,事务已经提交,该事务对 master 上面的其他 session 是可见的,如果这时 master 宕机,那么到 slave 上面该事务又不可见了,该问题直到 5.7 才解决。
    • 4、MySQL 5.7 引入无损半同步复制,引入参 rpl_semi_sync_master_wait_point,该参数默认为 after_sync,指的是在切成半同步之前,事务不提交,而是接收到 slave 的 ACK 确认之后才提交该事务,从此,复制真正可以做到无损的了。
    • 5、可以再说一下 5.7 的无损复制情况下, master 意外宕机,重启后发现有 binlog 没传到 slave 上面,这部分 binlog 怎么办???分 2 种情况讨论, 1 宕机时已经切成异步了, 2 是宕机时还没切成异步??? 这个怎么判断宕机时有没有切成异步呢??? 分别怎么处理???

    ? MySQL 如何解决主从复制的延时性?

    5.5 是单线程复制,5.6 是多库复制(对于单库或者单表的并发操作是没用的),5.7 是真正意义的多线程复制,它的原理是基于 group commit, 只要 master 上面的事务是 group commit 的,那 slave 上面也可以通过多个 worker线程去并发执行。 和 MairaDB10.0.0.5 引入多线程复制的原理基本一样。

    ? 工作遇到的复制 bug 的解决方法?

    5.6 的多库复制有时候自己会停止,我们写了一个脚本重新 start slave 。

    ? 你是否做过主从一致性校验,如果有,怎么做的,如果没有,你打算怎么做?

    主从一致性校验有多种工具 例如 checksum、mysqldiff、pt-table-checksum 等。

    聊聊 MySQL 备份方式?备份策略是怎么样的?

    具体的,胖友可以看看 《MySQL 高级备份策略》 。主要有几个知识点:

    • 数据的备份类型

      • 【常用】完全备份

        这是大多数人常用的方式,它可以备份整个数据库,包含用户表、系统表、索引、视图和存储过程等所有数据库对象。但它需要花费更多的时间和空间,所以,一般推荐一周做一次完全备份。

      • 增量备份

        它是只备份数据库一部分的另一种方法,它不使用事务日志,相反,它使用整个数据库的一种新映象。它比最初的完全备份小,因为它只包含自上次完全备份以来所改变的数据库。它的优点是存储和恢复速度快。推荐每天做一次差异备份。

      • 【常用】事务日志备份

        事务日志是一个单独的文件,它记录数据库的改变,备份的时候只需要复制自上次备份以来对数据库所做的改变,所以只需要很少的时间。为了使数据库具有鲁棒性,推荐每小时甚至更频繁的备份事务日志。

      • 文件备份

        数据库可以由硬盘上的许多文件构成。如果这个数据库非常大,并且一个晚上也不能将它备份完,那么可以使用文件备份每晚备份数据库的一部分。由于一般情况下数据库不会大到必须使用多个文件存储,所以这种备份不是很常用。

    • 备份数据的类型

      • 热备份
      • 温备份
      • 冷备份
    • 备份工具

      • cp
      • mysqldump
      • xtrabackup
      • lvm2 快照

    MySQL 几种备份方式?

    MySQL 一般有 3 种备份方式。

    1)逻辑备份

    使用 MySQL 自带的 mysqldump 工具进行备份。备份成sql文件形式。

    • 优点:最大好处是能够与正在运行的 MySQL 自动协同工作,在运行期间可以确保备份是当时的点,它会自动将对应操作的表锁定,不允许其他用户修改(只能访问)。可能会阻止修改操作。SQL 文件通用方便移植。
    • 缺点:备份的速度比较慢。如果是数据量很多的时候,就很耗时间。如果数据库服务器处在提供给用户服务状态,在这段长时间操作过程中,意味着要锁定表(一般是读锁定,只能读不能写入数据),那么服务就会影响的。

    2)物理备份

    艿艿:因为现在主流是 InnoDB ,所以基本不再考虑这种方式。

    直接拷贝只适用于 MyISAM 类型的表。这种类型的表是与机器独立的。但实际情况是,你设计数据库的时候不可能全部使用 MyISAM 类型表。你也不可能因为 MyISAM 类型表与机器独立,方便移植,于是就选择这种表,这并不是选择它的理由。

    • 缺点:你不能去操作正在运行的 MySQL 服务器(在拷贝的过程中有用户通过应用程序访问更新数据,这样就无法备份当时的数据),可能无法移植到其他机器上去。

    3)双机热备份。

    当数据量太大的时候备份是一个很大的问题,MySQL 数据库提供了一种主从备份的机制,也就是双机热备。

    • 优点:适合数据量大的时候。现在明白了,大的互联网公司对于 MySQL 数据备份,都是采用热机备份。搭建多台数据库服务器,进行主从复制。

    数据库不能停机,请问如何备份? 如何进行全备份和增量备份?

    可以使用逻辑备份和双机热备份。

    • 完全备份:完整备份一般一段时间进行一次,且在网站访问量最小的时候,这样常借助批处理文件定时备份。主要是写一个批处理文件在里面写上处理程序的绝对路径然后把要处理的东西写在后面,即完全备份数据库。
    • 增量备份:对 ddl 和 dml 语句进行二进制备份。且 5.0 无法增量备份,5.1 后可以。如果要实现增量备份需要在 my.ini 文件中配置备份路径即可,重启 MySQL 服务器,增量备份就启动了。

    ? 你的备份工具的选择?备份计划是怎么样的?

    视库的大小来定,一般来说 100G 内的库,可以考虑使用 mysqldump 来做,因为 mysqldump 更加轻巧灵活,备份时间选在业务低峰期,可以每天进行都进行全量备份(mysqldump 备份出来的文件比较小,压缩之后更小)。

    100G 以上的库,可以考虑用 xtrabackup 来做,备份速度明显要比 mysqldump 要快。一般是选择一周一个全备,其余每天进行增量备份,备份时间为业务低峰期。

    备份恢复时间是多长?

    物理备份恢复快,逻辑备份恢复慢。

    这里跟机器,尤其是硬盘的速率有关系,以下列举几个仅供参考:

    • 20G 的 2 分钟(mysqldump)
    • 80G 的 30分钟(mysqldump)
    • 111G 的 30分钟(mysqldump)
    • 288G 的 3 小时(xtrabackup)
    • 3T 的 4 小时(xtrabackup)

    逻辑导入时间一般是备份时间的 5 倍以上。

    备份恢复失败如何处理?

    首先在恢复之前就应该做足准备工作,避免恢复的时候出错。比如说备份之后的有效性检查、权限检查、空间检查等。如果万一报错,再根据报错的提示来进行相应的调整。

    ? mysqldump 和 xtrabackup 实现原理?

    1)mysqldump

    mysqldump 是最简单的逻辑备份方式。

    • 在备份 MyISAM 表的时候,如果要得到一致的数据,就需要锁表,简单而粗暴。
    • 在备份 InnoDB 表的时候,加上 –master-data=1 –single-transaction 选项,在事务开始时刻,记录下 binlog pos 点,然后利用 MVCC 来获取一致的数据,由于是一个长事务,在写入和更新量很大的数据库上,将产生非常多的 undo ,显著影响性能,所以要慎用。
    • 优点:简单,可针对单表备份,在全量导出表结构的时候尤其有用。
    • 缺点:简单粗暴,单线程,备份慢而且恢复慢,跨 IDC 有可能遇到时区问题

    2)xtrabackup

    xtrabackup 实际上是物理备份+逻辑备份的组合。

    • 在备份 InnoDB 表的时候,它拷贝 ibd 文件,并一刻不停的监视 redo log 的变化,append 到自己的事务日志文件。在拷贝 ibd 文件过程中,ibd文件本身可能被写”花”,这都不是问题,因为在拷贝完成后的第一个 prepare 阶段,xtrabackup 采用类似于 Innodb 崩溃恢复的方法,把数据文件恢复到与日志文件一致的状态,并把未提交的事务回滚。
    • 如果同时需要备份 MyISAM 表以及 InnoDB 表结构等文件,那么就需要用 flush tables with lock 来获得全局锁,开始拷贝这些不再变化的文件,同时获得 binlog 位置,拷贝结束后释放锁,也停止对 redo log 的监视。

    如何从 mysqldump 产生的全库备份中只恢复某一个库、某一张表?

    具体可见 《MySQL 全库备份中恢复某个库和某张表以及 mysqldump 参数 –ignore-table 介绍》 文章。

    聊聊 MySQL 集群?

    艿艿:这块艿艿懂的少,主要找了一些网络上的资料。

    ? 对于简历中写有熟悉 MySQL 高可用方案?

    我一般先问他现在管理的数据库架构是什么,如果他只说出了主从,而没有说任何 HA 的方案,那么我就可以判断出他没有实际的 HA 经验。

    不过这时候也不能就是断定他不懂 MySQL 高可用,也许是没有实际机会去使用,那么我就要问 MMM 以及 MHA 以及 MM + keepalived 等的原理、实现方式以及它们之间的优势和不足了,一般这种情况下,能说出这个的基本没有。

    • MMM 那东西好像不靠谱,据说不稳定,但是有人在用的,和 mysql-router 比较像,都是指定可写的机器和只读机器。
    • MHA 的话一句话说不完,可以搜索下相关博客。

    聊聊 MySQL 安全?

    感兴趣的胖友,可以看看:

    MySQL 有哪些日志?

    • 错误日志:记录了当 mysqld 启动和停止时,以及服务器在运行过程中发生任何严重错误时的相关信息。

    • 二进制文件:记录了所有的 DDL(数据定义语言)语句和 DML(数据操纵语言)语句,不包括数据查询语句。语句以“事件”的形式保存,它描述了数据的更改过程。(定期删除日志,默认关闭)。

      就是我们上面看到的 MySQL binlog 日志。

    • 查询日志:记录了客户端的所有语句,格式为纯文本格式,可以直接进行读取。(log 日志中记录了所有数据库的操作,对于访问频繁的系统,此日志对系统性能的影响较大,建议关闭,默认关闭)。

    • 慢查询日志:慢查询日志记录了包含所有执行时间超过参数long_query_time(单位:秒)所设置值的 SQL 语句的日志。(纯文本格式)

      重要,一定要开启。

    另外,错误日志和慢查询日志的详细解释,可以看看 《MySQL 日志文件之错误日志和慢查询日志详解》 文章。

    聊聊 MySQL 监控?

    你是如何监控你们的数据库的?

    监控的工具有很多,例如 Zabbix ,Lepus ,我这里用的是 Lepus

    对一个大表做在线 DDL ,怎么进行实施的才能尽可能降低影响?

    使用 pt-online-schema-change ,具体可以看看 《MySQL 大表在线 DML 神器–pt-online-schema-change》 文章。

    另外,还有一些其它的工具,胖友可以搜索下。

    展开全文
  • 历史 中世纪学院化 现状 一方面数学以及数学的应用在世界的科学技术商业和日常生活中所起的作用越来越大 另一方面一般公众甚至科学界特别是我国对数学科学的作用未被充分认识数学科学作为技术变化以及工业竞争的推动...
  • 机器学习算法应用场景实例

    千次阅读 2020-04-03 17:56:45
    本文整理了60个机器学习算法应用场景实例,含分类算法应用场景20个、回归算法应用场景20个、聚类算法应用场景10个以及关联规则应用场景10个。包含了天池、DataCastle、DataFountain中所有竞赛场景。 目录 1 分类...

       本文整理了60个机器学习算法应用场景实例,含分类算法应用场景20个、回归算法应用场景20个、聚类算法应用场景10个以及关联规则应用场景10个。包含了天池、DataCastle、DataFountain中所有竞赛场景。

    目录


    1 分类算法应用场景实例

    1.1 O2O优惠券使用预测

    1.2 市民出行选乘公交预测

    1.3待测微生物种类判别

    1.4 基于运营商数据的个人征信评估

    1.5 商品图片分类

    1.6 广告点击行为预测

    1.7 基于文本内容的垃圾短信识别

    1.8 中文句子类别精准分析

    1.9 P2P网络借贷平台的经营风险量化分析

    1.10 国家电网客户用电异常行为分析

    1.11 自动驾驶场景中的交通标志检测

    1.12 大数据精准营销中搜狗用户画像挖掘

    1.13 基于视角的领域情感分析

    1.14 监控场景下的行人精细化识别

    1.15 用户评分预测

    1.16 猫狗识别大战

    1.17 微额借款用户人品预测

    1.18 验证码识别

    1.19 客户流失率预测

    1.20 汽车4S店邮件营销方案

    2回归算法应用场景实例

    2.1 机场客流量分布预测

    2.2 音乐流行趋势预测

    2.3 需求预测与仓储规划方案

    2.4 新浪微博互动量预测

    2.5 货币基金资金流入流出预测

    2.6 电影票房预测

    2.7 农产品价格预测分析

    2.8 基于多源数据的青藏高原湖泊面积预测

    2.9 微博传播规模和传播深度预测

    2.10 鲍鱼年龄预测

    2.11 学生成绩排名预测

    2.12 网约车出行流量预测

    2.13 红酒品质评分

    2.14搜索引擎的搜索量和股价波动

    2.15 中国人口增长分析

    2.16 农村居民收入增长预测

    2.17 房地产销售影响因素分析

    2.18 股价走势预测

    2.19 全国综合运输总量预测

    2.20 地震预报

    3聚类算法应用场景实例

    3.1 基于用户位置信息的商业选址

    3.2 中文地址标准化处理

    3.3 国家电网用户画像

    3.4 非人恶意流量识别

    3.5 求职信息完善

    3.6 搜索引擎查询聚类以进行流量推荐

    3.7 生物种群固有结构认知

    3.8 保险投保者分组

    3.9 网站关键词来源聚类整和

    3.10 图像分割

    4关联规则应用场景实例

    4.1 穿衣搭配推荐

    4.2 互联网情绪指标和生猪价格的关联关系挖掘和预测

    4.3 依据用户轨迹的商户精准营销

    4.4 地点推荐系统

    4.5 气象关联分析

    4.6 交通事故成因分析

    4.7 基于兴趣的实时新闻推荐

    4.8 银行金融客户交叉销售分析

    4.9 电子商务搭配购买推荐

    4.10 银行营销方案推荐

    1 分类算法应用场景实例

    1.1 O2O优惠券使用预测

            以优惠券盘活老用户或吸引新客户进店消费是O2O的一种重要营销方式。然而随机投放的优惠券对多数用户造成无意义的干扰。对商家而言,滥发的优惠券可能降低品牌声誉,同时难以估算营销成本。个性化投放是提高优惠券核销率的重要技术,它可以让具有一定偏好的消费者得到真正的实惠,同时赋予商家更强的营销能力。

            现有O2O场景相关的丰富数据,希望通过分析建模,精准预测用户是否会在规定时间内使用相应优惠券。

    1.2 市民出行选乘公交预测

            基于海量公交数据记录,希望挖掘市民在公共交通中的行为模式。以市民出行公交线路选乘预测为方向,期望通过分析广东省部分公交线路的历史公交卡交易数据,挖掘固定人群在公共交通中的行为模式,分析推测乘客的出行习惯和偏好,从而建立模型预测人们在未来一周内将会搭乘哪些公交线路,为广大乘客提供信息对称、安全舒适的出行环境,用数据引领未来城市智慧出行。

    1.3待测微生物种类判别

            DNA是多数生物的遗传物质,DNA上的碱基(A,T,C和G)就储藏了遗传信息,不同物种的DNA序列在序列长度和碱基组成上差异显著。所以我们能够通过DNA序列的比较分析,来判断DNA序列是来自哪些物种。由于测序技术限制,我们只能得到一定长度的DNA序列片段。通过DNA序列片段与已知的微生物DNA序列进行比较,可以确定DNA片段的来源微生物,进而确定待测微生物种类。

            期望在相关数据基础上,建立分析方法,在计算资源消耗尽量小的情况下,尽可能快地给出准确的结果,以满足临床诊断需求。

    1.4 基于运营商数据的个人征信评估

            运营商作为网络服务供应商,积累了大量的用户基本信息及行为特征数据,如终端数据、套餐消费数据、通信数据等等。实名制政策保证了运营商用户数据能与用户真实身份匹配,并真实客观的反映用户行为。广泛覆盖的网络基础设施提供了积累大量实时数据的条件,这些用户数据实时反馈着用户的各个维度的信息及特征。

            在我国,个人征信评估主要通过引用央行个人征信报告,但对于很多用户没有建立个人信用记录的用户,金融机构想要了解他们的信用记录成本又较高,传统征信评估手段难以满足目前多种多样的新兴需求。金融业务不同于其他大数据业务,对数据的真实性、可信度和时效性要求较高,而这正是运营商数据的价值所在。

            期望利用运营商用户数据,提供完善的个人征信评估。

    1.5 商品图片分类

            京东含有数以百万计的商品图片,“拍照购”“找同款”等应用必须对用户提供的商品图片进行分类。同时,提取商品图像特征,可以提供给推荐、广告等系统,提高推荐/广告的效果。

    希望通过对图像数据进行学习,以达到对图像进行分类划分的目的。

    1.6 广告点击行为预测

            用户在上网浏览过程中,可能产生广告曝光或点击行为。对广告点击进行预测,可以指导广告主进行定向广告投放和优化,使广告投入产生最大回报。

            希望基于100万名随机用户在六个月的时间范围内广告曝光和点击日志,包括广告监测点数据,预测每个用户在8天内是否会在各监测点上发生点击行为。

    1.7 基于文本内容的垃圾短信识别

            垃圾短信已日益成为困扰运营商和手机用户的难题,严重影响到人们正常生活、侵害到运营商的社会形象以及危害着社会稳定。而不法分子运用科技手段不断更新垃圾短信形式且传播途径非常广泛,传统的基于策略、关键词等过滤的效果有限,很多垃圾短信“逃脱”过滤,继续到达手机终端。

            希望基于短信文本内容,结合机器学习算法、大数据分析挖掘来智能地识别垃圾短信及其变种。

    1.8 中文句子类别精准分析

            精确的语义分析是大数据必备技术,在分析句子时,不同句子类别即使用类似的关键词,表达的含义仍有很大差别,特别是在情感判断中。

            希望通过新闻以及微博等文本数据,对其句子类别进行判断。

    1.9 P2P网络借贷平台的经营风险量化分析

            P2P网络借贷即点对点信贷,其风险情况始终触碰着投资人的神经。据网贷之家统计,截止今年9月份,出现问题的网贷平台一共有1008家,而仅仅今年就有641家平台出现问题,这说明了随着我国p2p行业的迅猛发展,P2P平台的风险预测已经成为一个至关重要的问题。P2P平台的风险主要是在运营过程中产生的,与运营数据有着密不可分的关系。P2P平台的风险预测并非无线索可寻,像借款期限和年化收益率等指标,就对P2P平台的风险预测有很重要的参考意义。

            希望通过互联网数据,构建出P2P网贷平台的经营风险模型,从而能够比较准确的预测P2P网贷平台的经营风险,促进我国P2P行业向正规化方向发展。

    1.10 国家电网客户用电异常行为分析

            社会经济的发展使得社会用电量逐年增加,受利益驱使,窃电现象也日益严重。窃电行为不仅给供电企业造成了重大经济损失,也严重影响了正常的供用电秩序。根据国家电网公司统计,近年因窃电导致的损失达上千万元。近年来,窃电方式也由野蛮窃电发展到设备智能化、手段专业化、行为隐蔽化、实施规模化的高科技窃电,给反窃电工作进一步增加了很大的难度。随着电力系统升级,智能电力设备的普及,国家电网公司可以实时收集海量的用户用电行为数据、电力设备监测数据,因此,国家电网公司希望通过大数据分析技术,科学的开展防窃电监测分析,以提高反窃电工作效率,降低窃电行为分析的时间及成本。

            希望基于国家电网公司提供的关于用户用电量、电能表停走、电流失流、计量们打开灯计量异常情况、窃电行为等相关数据,以及经过现场电工人员现场确认的窃电用户清单,希望参赛者利用大数据分析算法与技术,发现窃电用户的行为特征,形成窃电用户行为画像,准确识别窃电用户,以帮助系统更快速、准确地识别窃电用户,提高窃电监测效率,降低窃电损失。

    1.11 自动驾驶场景中的交通标志检测

            在自动驾驶场景中,交通标志的检测和识别对行车周围环境的理解起着至关重要的作用。例如通过检测识别限速标志来控制当前车辆的速度等;另一方面,将交通标志嵌入到高精度地图中,对定位导航也起到关键的辅助作用。交通标志的检测是一项非常有挑战的任务,精确的检测对后续识别,辅助定位导航起着决定性的作用。交通标志的种类众多,大小、角度不依,本身就很难做到精确检测,并且在真实的行车环境中,受到天气、光照等因素的影响,使得交通标志的检测更加困难。

            希望机遇完全真实场景下的图片数据用于训练和测试,训练能够实际应用在自动驾驶中的识别模型。

    1.12 大数据精准营销中搜狗用户画像挖掘

            “物以类聚,人以群分”这句古语不仅揭示了物与人的自组织趋向,更隐含了“聚类”和“人群”之间的内在联系。在现代数字广告投放系统中,以物拟人,以物窥人,才是比任何大数据都要更大的前提。在现代广告投放系统中,多层级成体系的用户画像构建算法是实现精准广告投放的基础技术之一。其中,基于人口属性的广告定向技术是普遍适用于品牌展示广告和精准竞价广告的关键性技术。在搜索竞价广告系统中,用户通过在搜索引擎输入具体的查询词来获取相关信息。因此,用户的历史查询词与用户的基本属性及潜在需求有密切的关系。

            希望基于用户历史一个月的查询词与用户的人口属性标签(包括性别、年龄、学历)做为训练数据,通过机器学习、数据挖掘技术构建分类算法来对新增用户的人口属性进行判定。

    1.13 基于视角的领域情感分析

            情感分析是网络舆情分析中必不可少的技术,基于视角的领域情感分析更是情感分析应用于特定领域的关键技术。在对句子进行情感分析时,站在不同的视角,同一个句子的情感倾向判断结果将有所差别。

            给定一个句子,如果该句子中包含“视角”词语,则应针对这一视角进行情感分析;如果句子中包含多个“视角”词语,则应对不同的视角进行单独的情感分析;如果句子中不包含视角,则不做情感判别处理。

    1.14 监控场景下的行人精细化识别

            随着平安中国、平安城市的提出,视频监控被广泛应用于各种领域,这给维护社会治安带来了便捷;但同时也带来了一个问题,即海量的视频监控流使得发生突发事故后,需要耗费大量的人力物力去搜索有效信息。行人作为视频监控中的重要目标之一,若能对其进行有效的外观识别,不仅能提高视频监控工作人员的工作效率,对视频的检索、行人行为解析也具有重要意义。

            希望基于监控场景下多张带有标注信息的行人图像,在定位(头部、上身、下身、脚、帽子、包)的基础上研究行人精细化识别算法,自动识别出行人图像中行人的属性特征。标注的行人属性包括性别、头发长度和上下身衣着、鞋子及包的种类和颜色,并提供图像中行人头部、上身、下身、脚、帽子、包位置的标注。

    1.15 用户评分预测

            个性化推荐已经成为各大电子商务网站的必备服务。准确的推荐不仅可以提高商家的产品销量,更能为顾客提供优质快速的购物体验。推荐系统发展至今,已经有许多非常优秀的推荐算法,从各种不同的角度来为电子商务大厦添砖加瓦。迄今为止,已经有不少研究表明,用户在短期时间内会浏览相似的商品,但其兴趣可能会随时间发生些许变化。

            希望通过训练带有时间标记的用户打分行为,准确地预测这些用户对其他商品的打分。

    1.16 猫狗识别大战

            有人说,猫与狗上千年历史的敌对状态,主要是由于在长期进化过程中迫于对生存资源进行争夺而造成的残酷竞争导致的;也有人说,是他们天生的交流方式不同导致的;今天猫狗大战开始了,为了避免被这些家伙拆房的危险,各位智慧的人类,请速来隔离高冷猫和憨厚狗。

            希望从训练集里建立一个模型去识别测试集里的小狗来。

    1.17 微额借款用户人品预测

            互联网金融近年来异常火热,大量的资本和人才涌入这个领域发掘富藏价值。金融领域无论是投资理财还是借贷放款,风险控制永远是业务的核心基础。而在所有的互联网金融产品中,微额借款(借款金额500元~1000元)因其主要服务对象的特殊性,被公认为是风险最高的细分领域。

            希望通过数据挖掘来分析”小额微贷“申请借款用户的信用状况,以分析其是否逾期。

    1.18 验证码识别

            使用各类验证码的训练集进行学习、编码与测试,形成验证码算法模型。

    1.19 客户流失率预测

            我国的移动通信行业经过了前几年的高速发展,近一段时间的发展速度逐渐缓慢下来。注册用户常常处于一种动态变化的状态,即不断有老客户离网,又不断有新客户入网。大量的低消费客户和大量老客户的离网使得移动通信公司无法快速向前发展。

    希望建立客户流失模型,对新老客户进行分类。

    1.20 汽车4S店邮件营销方案

            直邮营销是直效行销的一种,是把传统邮件直接发送给消费者的营销方式涉及的行业主要是大型商场、大卖场、商业连锁店铺、专卖店等。一家汽车4S店,公司拥有完备的客户历史消费数据库,现公司准备举办一次高端品牌汽车的促销活动,为配合这次促销活动,公司计划为潜在客户寄去一份精美的汽车销售材料并附带一份小礼品。由于资源有限,公司仅有1000份材料和礼品的预算额度。

            希望根据与这次促销活动类似的已经举办过的促销活动的历史消费数据,用过机器学习算法得到一个分类器,对新客户进行分类,生成正类客户的客户列表,向他们寄出材料和礼品。

    2回归算法应用场景实例

    2.1 机场客流量分布预测

            为了有效利用机场资源,机场正利用大数据技术,提升生产运营的效率。机场内需要不断提升运行效率的资源有航站楼内的各类灯光电梯设施设备、值机柜台、商铺、广告位、安检通道、登机口,航站楼外的停机位、廊桥、车辆(摆渡车、清洁车、物流车、能源车),要想提升这些资源的利用率首先需要知道未来一段时间将会有多少旅客或航班会使用这些资源,其次需要精准的调度系统来调配这些资源和安排服务人员,帮助机场提升资源利用效率,保障机场安全与服务提升。

            以海量机场WiFi数据及安检登机值机数据,希望通过数据算法实现机场航站楼客流分析与预测。

    2.2 音乐流行趋势预测

            经过7年的发展与沉淀,目前某音乐平台拥有数百万的曲库资源,每天千万的用户活跃在平台上,拥有数亿人次的用户试听、收藏等行为。在原创艺人和作品方面,更是拥有数万的独立音乐人,每月上传上万个原创作品,形成超过几十万首曲目的原创作品库,如此庞大的数据资源库对于音乐流行趋势的把握有着极为重要的指引作用。

            以某音乐平台用户的历史播放数据为基础,期望通过对艺人的试听量的预测,挖掘出即将成为潮流的艺人,从而实现对一个时间段内音乐流行趋势的准确把控。

    2.3 需求预测与仓储规划方案

            拥有海量的买家和卖家交易数据的情况下,利用数据挖掘技术,我们能对未来的商品需求量进行准确地预测,从而帮助商家自动化很多供应链过程中的决策。这些以大数据驱动的供应链能够帮助商家大幅降低运营成本,更精确的需求预测,能够大大地优化运营成本,降低收货时效,提升整个社会的供应链物流效率,朝智能化的供应链平台方向更加迈进一步。高质量的商品需求预测是供应链管理的基础和核心功能。

            以历史一年海量买家和卖家的数据为依据,希望预测某商品在未来二周全国和区域性需求量。用数据挖掘技术和方法精准刻画商品需求的变动规律,对未来的全国和区域性需求量进行预测,同时考虑到未来的不确定性对物流成本的影响,做到全局的最优化。

    2.4 新浪微博互动量预测

            新浪微博作为中国最大的社交媒体平台,旨在帮助用户发布的公开内容提供快速传播互动的通道,提升内容和用户的影响力。希望能够最快找到有价值微博的方法,然后应用于平台的内容分发控制策略,对于有价值的内容可以增加曝光量,提高内容的传播互动量。对于一条原创博文而言,转发、评论、赞等互动行为能够体现出用户对于博文内容的兴趣程度,也是对博文进行分发控制的重要参考指标。

            希望根据抽样用户的原创博文在发表一天后的转发、评论、赞总数,建立博文的互动模型,并预测用户后续博文在发表一天后的互动情况。

    2.5 货币基金资金流入流出预测

            某金融服务机构拥有大量会员并且业务场景中每天都涉及大量的资金流入和流出,面对如此庞大的用户群,资金管理压力会非常大。在既保证资金流动性风险最小,又满足日常业务运转的情况下,精准地预测资金的流入流出情况变得尤为重要。

            期望能够通过用户基本信息数据、用户申购赎回数据、收益率表和银行间拆借利率等信息,对用户的申购赎回数据的把握,精准预测未来每日的资金流入流出情况。

    2.6 电影票房预测

            中国是全球第二大电影市场,同时也是增长最快的市场之一;随着市场的成熟,影响电影票房的因素也越来越多,包括题材、内容、导演、演员、编辑、发行方等等。因此对电影制作公司而言,依靠主观经验制作一部高票房的电影也越来越困难,而随着大数据技术的发展,借助大数据分析对电影市场进行分析,指导电影制作成为可能。 

    希望依据历史票房数据、影评数据、舆情数据等互联网公众数据,对电影票房进行预测。

    2.7 农产品价格预测分析

            农产品价格受市场影响的程度特别大,特别是受农产品的供求关系影响较大,同时价格本身又受自然条件、社会和经济条件的影响,特别是国际市场的影响。从价格本身来看,受供求、季节等发生波动,受外界各种影响比较多,这就造成了价格预测的困难。但从长期看,农产品价格随着时间的推移仍然呈现一定规律性。价格预测是大数据的精华所在,通过大量的历史数据分析,预测未来的价格走势,为决策者提供更有力的数据支持。

            希望通过分析价格历史数据,对要求预测的农产品接下来固定时间的价格进行预测。并尽可能多的使用与价格有影响的其他数据以提高预测的准确率。

    2.8 基于多源数据的青藏高原湖泊面积预测

            全球气候变化对青藏高原的湖泊水储量有很大影响,因此精确的估计青藏高原湖泊面积变化对于研究气候变化变得很重要。海量多源异构数据和大数据处理与挖掘技术给湖泊面积变化研究带来新的解决思路;如何通过多源数据对青藏高原的湖泊面积进行预测,将大数据技术应用到全球气候变化研究中来成为一项新的挑战。

            希望通过研究青藏高原湖泊面积变化的多种影响因素,构建青藏高原湖泊面积预测模型。

    2.9 微博传播规模和传播深度预测

            近些年,一些研究表明,一条微博发出以后,只需要观察其在之后一小段时间内的转发情况,它的传播规模便可以被预测。但是不同类型的微博会有不同的传播方式,比如明星晒一张生活状态就能得到众多粉丝的热捧,具有较大的传播广度,但是往往在传播深度上稍显不足;相比之下,一些被广泛讨论的新闻类微博往往具有较深的传播深度。也有统计结果显示,一些谣言往往会得到大规模的传播,辟谣类的消息反而得不到广泛关注。不仅如此,我们在热门微博中能看到不少正能量的信息,同时也能看到一些话题被持正反两种不同意见的人掀起讨论热潮。简而言之,微博初期的传播速度、用户关系、信息类型、内容情感等特征都是影响微博传播规模和深度的重要影响因素。

            希望基于大约1-3万条微博及其它们的转发微博,结合微博用户的关注关系、微博的内容类型和情感分析以及初期的传播模式,来预测微博的传播规模和传播深度。

    2.10 鲍鱼年龄预测

            鲍鱼,在现代汉语中有多种含义。最常用的是指一种原始的海洋贝类,属于单壳软体动物,其只有半面外壳,壳坚厚、扁而宽,鲍鱼是中国传统的名贵食材,位居四大海味之首。直至现今,在人民大会堂举行的多次国宴及大型宴会中,鲍鱼经常榜上有名,成为中国经典国宴菜之一。被人们称为“海洋的耳朵”。和古代“用盐腌制的鱼”是两种东西。鲍鱼的优劣与年龄相关。一般来说,我们可以数鲍鱼的生长纹来确定鲍鱼的年龄,但数生长纹也是一件挺麻烦的事情。

            希望利用与鲍鱼年龄有关的因素来预测鲍鱼的年龄。

    2.11 学生成绩排名预测

            学生的校园行为数据,可以挖掘用户作息规律、兴趣爱好等,精准地预测学生之间的相对排名。通过对这些日常行为的建模来预测学生的学业成绩,可以实现提前预警学生的异常情况,并进行适当的干预,因而对学生的培养、管理工作将会起到极其重要的作用。从某高校的某个学院随机抽取一定比例学生,提供这些学生在三个学期的图书馆进出记录、一卡通消费记录、图书馆借阅记录、以及综合成绩的相对排名。这一部分数据将作为训练数据。我们从另外的某学院随机抽取一定比例的学生,然后提供他们在三个学期的图书馆进出记录、一卡通消费记录、图书借阅记录、以及前两个学期的成绩排名。

            希望通过借助大数据相关的挖掘技术和基础算法,预测第三学期的成绩排名。

    2.12 网约车出行流量预测

            在出行问题上,中国市场人数多、人口密度大,总体的出行频率远高于其他国家,这种情况在大城市尤为明显。然而,截止目前中国拥有汽车的人口只有不到10%,这也意味着在中国人们的出行更加依赖于出租车、公共交通等市场提供的服务。另一方面,滴滴出行占领了国内绝大部分的网络呼叫出行市场,面对着巨大的数据量以及与日俱增的数据处理需求。截止目前,滴滴出行平台每日需处理1100万订单,需要分析的数据量达到50TB,路径规划服务请求超过90亿。面对如此庞杂的数据,我们需要通过不断升级、完善与创新背后的云计算与大数据技术,从而保证数据分析及相关应用的稳定,实现高频出行下的运力均衡。供需预测就是其中的一个关键问题。供需预测的目标是准确预测出给定地理区域在未来某个时间段的出行需求量及需求满足量。调研发现,同一地区不同时间段的订单密度是不一样的,例如大型居住区在早高峰时段的出行需求比较旺盛,而商务区则在晚高峰时段的出行需求比较旺盛。

            希望能预测到在未来的一段时间内某些地区的出行需求量比较大,以提前对营运车辆提供一些引导,指向性地提高部分地区的运力,从而提升乘客的整体出行体验。

    2.13 红酒品质评分

            红酒口感的好坏,受很多因素的影响,例如年份、产地、气候、酿造的工艺等等。通过一些化学属性特征就能够很好地判断红酒的品质。通过监测红酒中化学成分的含量,可以控制红酒的品质和口感。

            希望基于红酒的化学特性,例如酸性、含糖量、氯化物含量、硫含量、酒精度、PH值、密度等,构建机器学习模型,对红酒品质进行评分。

    2.14搜索引擎的搜索量和股价波动

            上市公司在互联网中搜索量的变化,会显著影响公司股价的波动和趋势,即所谓的投资者注意力理论。该理论认为,公司在搜索引擎中的搜索量,代表了该股票被投资者关注的程度。因此,当一只股票的搜索频数增加时,说明投资者对该股票的关注度提升,从而使得该股票更容易被个人投资者购买,进一步地导致股票价格上升,带来正向的股票收益。

    2.15 中国人口增长分析

            中国从1971年开始全面开展了计划生育,使中国总和生育率很快从1970年的5.8降到1980年2.24,接近世代更替水平。此后,人口自然增长率很大程度上与经济的发展等各方面的因素相联系,与经济生活息息相关。影响中国人口自然增长率的因素有很多,如经济整体增长、居民消费水平、文化程度、人口分布,以及非农业与农业人口的比率等。

            希望通过历史数据分析,对未来人口增长率进行预测。

    2.16 农村居民收入增长预测

             “三农”问题的核心是农村居民收入问题。改革开放以来,农村经济蓬勃发展,农村居民收入有了较大幅度的增长,但与城镇居民的收入相比,却表现出增长缓慢、差距越来越大的趋势。

            希望对影响我国农村居民收入的因素进行分析,再运用实证方法对农民的经济统计数据进行分析,得到了影响农村居民纯收入的模型。为预测农村居民的收入增长趋势提供工具,为农村地区的政策措施提供参考建议。

    2.17 房地产销售影响因素分析

            改革开放以来,我国的经济突飞猛进对城市商品房的价格产生了巨大影响,特别是进入21世纪后,伴随着商品房价格日益增长,出现了房地产投资过热。在这种房价居高不下的形势下,国内外诸多专家学者认为我国的房地产市场已经出现价格泡沫,在房地产业对我国国民经济发展起着积极作用的大环境下,这种价格泡沫势必会对我国的经济发展造成重大影响。

            年人均收入、新增住房面积及上一年商品房价格等因素对房地产销售有影响,期望利用历史数据分析测度其对商品房价格的影响,找出了引起房地产价格波动的主要因素当年年人均收入,根据实证结论提出了控制房价的建议。

    2.18 股价走势预测

            随着经济社会的发展,以及人们投资意识的增强,人们越来越多的参与到股票市场的经济活动中,股票投资也已经成为人们生活的一个重要组成部分。然而在股票市场中,众多的指标、众多的信息,很难找出对股价更为关键的因素;其次股市结构极为复杂,影响因素具有多样性、相关性。这导致了很难找出股市内在的模式。

            希望在尽可能全面的收集股市信息的基础上,建立股价预测模。

    2.19 全国综合运输总量预测

            以全国同期国民经济主要产品产量,如原煤、原油、生铁、钢材、水泥、木材、粮食的历史数据,建立数据挖掘模型,对全国综合运输总运量进行预测。

    2.20 地震预报

            根据历史全球大地震的时空图,找出与中国大陆大地震有关的14个相关区,对这些相关区逐一鉴别,选取较优的9个,再根据这9个相关区发生的大震来预测中国大陆在未来一年内会不会有大震发生。

    3聚类算法应用场景实例

    3.1 基于用户位置信息的商业选址

            随着信息技术的快速发展,移动设备和移动互联网已经普及到千家万户。在用户使用移动网络时,会自然的留下用户的位置信息。随着近年来GIS地理信息技术的不断完善普及,结合用户位置和GIS地理信息将带来创新应用。如百度与万达进行合作,通过定位用户的位置,结合万达的商户信息,向用户推送位置营销服务,提升商户效益。

    希望通过大量移动设备用户的位置信息,为某连锁餐饮机构提供新店选址。

    3.2 中文地址标准化处理

            地址是一个涵盖丰富信息的变量,但长期以来由于中文处理的复杂性、国内中文地址命名的不规范性,使地址中蕴含的丰富信息不能被深度分析挖掘。通过对地址进行标准化的处理,使基于地址的多维度量化挖掘分析成为可能,为不同场景模式下的电子商务应用挖掘提供了更加丰富的方法和手段,因此具有重要的现实意义。

    3.3 国家电网用户画像

            随着电力体制改革向纵深推进,售电侧逐步向社会资本放开,当下的粗放式经营和统一式客户服务内容及模式,难以应对日益增长的个性化、精准化客户服务体验要求。如何充分利用现有数据资源,深入挖掘客户潜在需求,改善供电服务质量,增强客户黏性,对公司未来发展至关重要。

            对电力服务具有较强敏感度的客户对于电费计量、供电质量、电力营销等各方面服务的质量及方式上往往具备更高的要求,成为各级电力公司关注的重点客户。经过多年的发展与沉淀,目前国家电网积累了全网4亿多客户档案数据和海量供电服务信息,以及公司营销、电网生产等数据,可以有效的支撑海量电力数据分析。

            因此,国家电网公司希望通过大数据分析技术,科学的开展电力敏感客户分析,以准确地识别敏感客户,并量化敏感程度,进而支撑有针对性的精细化客户服务策略,控制电力服务人工成本、提升企业公众形象。

    3.4 非人恶意流量识别

            2016年第一季度Facebook发文称,其Atlas DSP平台半年的流量质量测试结果显示,由机器人模拟和黑IP等手段导致的非人恶意流量高达75% . 仅2016上半年,AdMaster反作弊解决方案认定平均每天能有高达 28% 的作弊流量。低质量虚假流量的问题一直存在,这也是过去十年间数字营销行业一直在博弈的问题。基于AdMaster海量监测数据,50%以上的项目均存在作弊嫌疑;不同项目中,作弊流量占广告投放5%到95%不等;其中垂直类和网盟类媒体的作弊流量占比最高;PC端作弊流量比例显著高于移动端和智能电视平台。广告监测行为数据被越来越多地用于建模和做决策,例如绘制用户画像,跨设备识别对应用户等。作弊行为,恶意曝光,网络爬虫,误导点击,甚至是在用户完全无感知的情况下被控制访问等产生的不由用户主观发出的行为给数据带来了巨大的噪声,给模型训练造成了很大影响。

            希望基于给定的数据,建立一个模型来识别和标记作弊流量,去除数据的噪声,从而更好的使用数据,使得广告主的利益最大化。

    3.5 求职信息完善

            有大约10万分优质简历,其中部分简历包含完整的字段,部分简历在学历、公司规模、薪水、职位名称等字段有些置空项。希望对数据进行学习、编码与测试,挖掘出职位路径的走向与规律,形成算法模型,再对数据中置空的信息进行预测。

    3.6 搜索引擎查询聚类以进行流量推荐

            在搜索引擎中, 很多网民的查询意图的比较类似的,对这些查询进行聚类,一方面可以使用类内部的词进行关键词推荐;另一方面, 如果聚类过程实现自动化,则也有助于新话题的发现;同时还有助于减少存储空间等。

    3.7 生物种群固有结构认知

            对动植物分类和对基因进行分类,获取对种群固有结构的认识。

    3.8 保险投保者分组

            通过一个高的平均消费来鉴定汽车保险单持有者的分组,同时根据住宅类型,价值,地理位置来鉴定一个城市的房产分组。

    3.9 网站关键词来源聚类整和

            以领域特征明显的词和短语作为聚类对象,在分类系统的大规模层级分类语料库中,利用文本分类的特征提取算法进行词语的领域聚类,通过控制词语频率的影响,分别获取领域通用词和领域专类词。

    3.10 图像分割

            图像分割广泛应用于医学、交通、军事等领域。图像分割就是把图像分成若干个特定的、具有独特性质的区域并提出感兴趣目标的技术和过程。它是由图像处理到图像分析的关键步骤。聚类算法先将图像空间中的像素用对应的特征空间点表示,根据它们在特征空间的聚集对特征空间进行分割,然后将它们映射回原图像空间,得到分割结果。

    4关联规则应用场景实例

    4.1 穿衣搭配推荐

            穿衣搭配是服饰鞋包导购中非常重要的课题,基于搭配专家和达人生成的搭配组合数据,百万级别的商品的文本和图像数据,以及用户的行为数据。期待能从以上行为、文本和图像数据中挖掘穿衣搭配模型,为用户提供个性化、优质的、专业的穿衣搭配方案,预测给定商品的搭配商品集合。

    4.2 互联网情绪指标和生猪价格的关联关系挖掘和预测

            生猪是畜牧业的第一大产业,其价格波动的社会反响非常敏感。生猪价格变动的主要原因在于受市场供求关系的影响。然而专家和媒体对于生猪市场前景的判断、疫情的报道,是否会对养殖户和消费者的情绪有所影响?情绪上的变化是否会对这些人群的行为产生一定影响,从而影响生猪市场的供求关系?互联网作为网民发声的第一平台,在网民情绪的捕捉上具有天然的优势。本次赛题希望参赛者可以基于海量提供的数据,挖掘出互联网情绪指标与生猪价格之间的关联关系,从而形成基于互联网数据的生猪价格预测模型,挖掘互联网情绪指标与生猪价格之间的关联关系和预测。

    4.3 依据用户轨迹的商户精准营销

            随着用户访问移动互联网的与日俱增,随着移动终端的大力发展,越来越多的用户选择使用移动终端访问网络,根据用户访问网络偏好,也形成了相当丰富的用户网络标签和画像等。如何根据用户的画像对用户进行精准营销成为了很多互联网和非互联网企业的新发展方向。如何利用已有的用户画像对用户进行分类,并针对不同分类进行业务推荐,特别是在用户身处特定的地点、商户,如何根据用户画像进行商户和用户的匹配,并将相应的优惠和广告信息通过不同渠道进行推送。

            希望根据商户位置及分类数据、用户标签画像数据提取用户标签和商户分类的关联关系,然后根据用户在某一段时间内的位置数据,判断用户进入该商户地位范围300米内,则对用户推送符合该用户画像的商户位置和其他优惠信息。

    4.4 地点推荐系统

            随着移动社交网路的兴起,用户的移动数据得到了大量的累积,使得这些移动数据能够基于地点推荐技术帮助人们熟悉周遭环境,提升地点的影响力等。

            希望利用用户的签到记录和地点的位置、类别等信息,为每个用户推荐50个感兴趣的地点。

    4.5 气象关联分析

            在社会经济生活中,不少行业,如农业、交通业、建筑业、旅游业、销售业、保险业等,无一例外与天气的变化息息相关。随着各行各业对气象信息的需求越来越大,社会各方对气象数据服务的个性化和精细化要求也在不断提升,如何开发气象数据在不同领域的应用,更好的支持大众创业、万众创新,服务民计民生,是气象大数据面临的迫切需求。 

            为了更深入地挖掘气象资源的价值,希望基于共计60年的中国地面历史气象数据,推动气象数据与其他各行各业数据的有效结合,寻求气象要素之间、以及气象与其它事物之间的相互关系,让气象数据发挥更多元化的价值。

    4.6 交通事故成因分析

            随着时代发展,便捷交通对社会产生巨大贡献的同时,各类交通事故也严重地影响了人们生命财产安全和社会经济发展。为了更深入挖掘交通事故的潜在诱因,带动公众关注交通安全,贵阳市交通管理局开放交通事故数据及多维度参考数据,希望通过对事故类型、事故人员、事故车辆、事故天气、驾照信息、驾驶人员犯罪记录数据以及其他和交通事故有关的数据进行深度挖掘,形成交通事故成因分析方案。

    4.7 基于兴趣的实时新闻推荐

            随着近年来互联网的飞速发展,个性化推荐已成为各大主流网站的一项必不可少服务。提供各类新闻的门户网站是互联网上的传统服务,但是与当今蓬勃发展的电子商务网站相比,新闻的个性化推荐服务水平仍存在较大差距。一个互联网用户可能不会在线购物,但是绝大部分的互联网用户都会在线阅读新闻。因此资讯类网站的用户覆盖面更广,如果能够更好的挖掘用户的潜在兴趣并进行相应的新闻推荐,就能够产生更大的社会和经济价值。初步研究发现,同一个用户浏览的不同新闻的内容之间会存在一定的相似性和关联,物理世界完全不相关的用户也有可能拥有类似的新闻浏览兴趣。此外,用户浏览新闻的兴趣也会随着时间变化,这给推荐系统带来了新的机会和挑战。

            因此,希望通过对带有时间标记的用户浏览行为和新闻文本内容进行分析,挖掘用户的新闻浏览模式和变化规律,设计及时准确的推荐系统预测用户未来可能感兴趣的新闻。

    4.8 银行金融客户交叉销售分析

            某商业银行试图通过对个人客户购买本银行金融产品的数据进行分析,从而发现交叉销售的机会。

    4.9 电子商务搭配购买推荐

            电子购物网站使用关联规则中规则进行挖掘,然后设置用户有意要一起购买的捆绑包。也有一些购物网站使用它们设置相应的交叉销售,也就是购买某种商品的顾客会看到相关的另外一种商品的广告。

    4.10 银行营销方案推荐

            关联规则挖掘技术已经被广泛应用在金融行业企业中,它可以成功预测银行客户需求。一旦获得了这些信息,银行就可以改善自身营销。如各银行在自己的ATM机上就捆绑了顾客可能感兴趣的本行产品信息,供使用本行ATM机的用户了解。如果数据库中显示,某个高信用限额的客户更换了地址,这个客户很有可能新近购买了一栋更大的住宅,因此会有可能需要更高信用限额,更高端的新信用卡,或者需要一个住房改善贷款,这些产品都可以通过信用卡账单邮寄给客户。当客户打电话咨询的时候,数据库可以有力地帮助电话销售代表。销售代表的电脑屏幕上可以显示出客户的特点,同时也可以显示出顾客会对什么产品感兴趣。
     

    展开全文
  • 回归算法应用场景实例二十则

    千次阅读 2018-09-20 19:03:15
    通过对这些日常行为的建模来预测学生的学业成绩,可以实现提前预警学生的异常情况,并进行适当的干预,因而对学生的培养、管理工作将会起到极其重要的作用。从某高校的某个学院随机抽取一定比例学生,提供这些学生在...
  • 区块链应用实例

    万次阅读 2017-11-07 09:44:14
    互联网花费了近十年的时间才成为我们日常生活不可磨灭的一部分。但是,区块链的使用将会更加迅速,可能只需要5年时间。区块链发展的第三阶段将出现许多大规模的区块链技术的应用,阻碍区块链大规模应用的主要因素是...
  • 包装计算机辅助设计软件应用-CorelDraw 东北大米包装袋设计 主讲人曹菲 ; 说起食品不得不提的就是我们日常最需要的粮食之一大米大米作为我们生活的必需品不知道大家是否有观察过市面上同样是大米但是价格也是各不...
  • 机器学习应用场景实例(60则)

    千次阅读 2017-07-17 00:26:00
    应用场景实例,含分类算法应用场景20个、回归算法应用场景20个、聚类算法应用场景10个以及关联规则应用场景10个。包含了天池、DataCastle、DataFountain中所有竞赛场景。     目录     1 分类...
  • 其实,云计算在我们日常生活中也有很多应用呢!下面我就举一些例子让大家了解了解。 云计算和普通人关系不大?其实每个人都离不开它 1、电子日历 我们的大脑并不是万能的,不可能记住我们所要记住的每一件事。...
  • 国内在这方面的服务刚刚起步,像“微盘”等专用的云存储应用开始出现。它们能够被安装到不同系统平台的设备上。使用时,用户可以在本地计算机上创建及修改文件,然后自动同步到网络的微盘上;...
  • 我们认为,数据挖掘技术将成为互联网时代应用最广泛的技术之一,它有可能为人类社会带来一个新的时代。 ​ 但是由于笔者才疏学浅,今天我们暂不谈得那么高深,只分析的一个常见的应用实例——个性化推荐系统。
  • 云计算在日常生活中的应用

    万次阅读 2019-01-31 18:00:00
    尽管云计算越来越多的被提及,无论是国家层面还是各大互联网企业,几乎都把精力分出来一部分投入在云计算上。但是对于不懂技术、没有相关培训的人来说,云计算还是那个可望不可即的“...
  • 移动医疗是什么 移动医疗应用实例

    千次阅读 2019-07-10 17:48:51
    同时锐捷的移动医疗方案在很多地方已经有了实际应用,以下是移动医疗在现实生活中应用实例。移动医疗离我们实际并不遥远。 移动医疗现实应用-厦门中医院 上午10时,高护士正在查看PDA上的患者一览表,今天她监护的...
  • DBA学习计划

    万次阅读 多人点赞 2018-06-17 13:11:24
    只有对于关系型数据库理论达到了一个层次,对于关系型数据库管理系统(RDBMS)才能更好地应用,无论是Oracle数据库,IBM的DB2,还是微软的SQL Server。目前,很多的大学都有关系型数据库理论的课程。推荐一本关系型...
  • 大数据应用于个人日常生活,我们使用网络来产生一些信息,利用与每个人相关联的“个人大数据”,分析个人生活行为习惯,为其提供更加周到的个性化服务。作为一个在校大学生,我来谈一下大数据的应用
  • 许多问题都在之前的互联网应用中遇到过。物联网安全问题与连接到网络的智能家居自动化设备的快速发展有关。物联网(IoT)是互联网中快速增长的一部分。 虽然互联网的其它设备依赖于人们的信息交换,但物联网可以自动...
  • 笔者认为产业互联网领域,知识图谱更有发展的空间,因为无论是智慧产业、还是产业+互联网,需要更多的产业理论知识的结合。放到农业领域更是如此,当前数字农业的发展瓶颈在于新兴技术与农业理论知识结合广度不够、...
  • 本文介绍物联网基础知识:什么是物联网,以及常见的物联网协议。...如今,在日常生活中,我们已经可以接触到非常多的物联网产品,例如各种智能家电、智能门锁等,这些都是物联网技术比较成熟的应用。物联网最...
  • 本文将通过最新的概念验证项目,盘点不同电子商务场景下的最新自然语言处理技术应用,深入了解电子商务行业与NLP技术的...作为互联网领域的主要行业,电商早已深入人们的日常生活中。 随着人工智能技术的不断突破,...
  • 10个物联网应用的案例

    万次阅读 2019-03-31 18:41:20
    10物联网的应用 - 真的有这么多案例吗? 也许,您听说过物联网(IoT)如今占据了...为了实现这一目标,我们在十个不同的领域中展示了构成我们日常生活基础的物联网应用示例。 因此,他们在这里 - 物联网的十大应用...
  • Linux实用教程(第三版)

    万次阅读 多人点赞 2019-08-27 22:55:59
    第一章 Linux系统初步了解 本章内容 1.1 Linux系统简介 1.2 Linux系统的特点和组成 1.3 Linux版本介绍 1.4 Red Hat Linux系统...1.1.3 Linux系统应用领域 1.1.1什么是Linux      &...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 12,897
精华内容 5,158
关键字:

日常应用互联网的实例