0%

机器学习 machine learning

  • def 研究通过计算手段,利用经验改善系统自身性能
  • 经验 - 数据,数据中学得结果 - 模型(学习器 learner)

1. 数据集 dataset

  • def 一组记录的集合,其中每条记录是关于一个对象的描述

2. 属性 attribute / 特征 feature

  • def 反映对象某方面性质的事项

3. 特征向量 feature vector

  • def (x, y, z) 三维坐标张成一个用于描述对象的三维空间

4. 维数 dimensionality

  • def 样本空间的一个向量,表示该样本(example)由 d 个属性描述

5. 训练样本 training example

  • def 概念同样本、训练示例(training instance)

6. 训练数据 training data

  • def 训练样本组成的集合

7. 标记 label

  • def 训练样本的结果信息

8. 标记空间 label space

  • def (xi, yi) 表示 yi 是示例 xi 的标记,这里 yi 所从属的所有标记的集合

9. 分类 / 回归

  • 预测的是离散值 —— 分类问题(classification)

    • sp. 二分类问题:一个类为正类(positive class),一个类为负类(negative class)
  • 预测的是连续值 —— 回归问题(regression)

10. 测试 testing

  • def 学得模型后,使用其进行预测的过程

11. 簇 cluster

  • def 若干样本组成的集合,通过对训练数据划分得到

12. 聚类 clustering

  • def 将训练集中的样本分成若干簇

  • 目的 由于学习过程中使用的训练样本一般不具有标记信息,聚类有助于了解数据的内在规律

13. 监督 supervised / 无监督学习 unsupervised learning

  • 分类、回归 —— 监督学习

  • 聚类 —— 无监督学习

14. 独立同分布 independent and identically distributed

  • def 预设条件,假设样本空间中全体样本服从一个未知分布(distribution)

15. 归纳 induction / 演绎 deduction

  • 从特殊到一般 - 泛化(generalization)- 归纳

  • 从一般到特殊 - 演绎

16. 版本空间 version space

  • 可有多个,与训练集一致的 “假设集合”,即能对所有训练样本进行正确判断的假设

17. 归纳偏好 inductive bias

  • 两种走向:往尽可能特殊的模型 往尽可能一般的模型

  • 引导原则:奥卡姆剃刀(Occam‘s razor),即有多个假设与观察一致时,选取最简单的

  • NFL 定理:f 均匀分布时,学习算法的期望性能相同

引言

​ 经过西部区域赛的角逐,团队最终收获了区域赛二等奖、全国三等奖的好成绩。从去年 11 月找老师拿比赛承诺书开始,前前后后不觉也接近半年的时间。趁着刚刚结束的劲头,记录一下本次的比赛历程。

项目背景

​ 当前,银行业竞争日趋白热化。采取有效的破局之道迫在眉睫,不少传统银行业务开始采取互联网营销方式,转而在线上开辟新的供求市场。

​ 藉此,银行产品秒杀活动应运而生。通过定期推出不同的秒杀活动,能有效地刺激用户的购买心理,这也是最常见的几种营销方式之一。本次项目即为银行产品秒杀系统设计,通过提供支持高并发、高性能、高可用的 “三高” 秒杀系统,为用户带来良好的使用体验。

创意描述

  1. 基于 Dubbo 的微服务架构

    秒杀伴随的往往是高并发,传统的单体架构往往无法承受太大的压力,然而集群又面临 着冗余、扩展难、高成本等问题。因此使用微服务架构再合适不过了,而 dubbo 作为成熟 的 RPC 框架,不仅稳定而且速度快。使用 dubbo 的微服务架构不仅扩展容易,而且可以进 行按需部署,从而大大降低了后期的维护成本。

  2. Snowflake 雪花算法生成

    使用 Snowflake 算法生成的订单号与秒杀路径,生成的 ID 不是随机的,而是按时间顺序 升序排列的;且可以保证在分布式高并发环境下生成的 ID 不会发生重复。

  3. ThreadLocal 保存用户信息

并发编程中重要的问题就是数据共享,当你在一个线程中改变任意属性时,所有的线程 都会因此受到影响,同时会看到第一个线程修改后的值。 但是,有时我们希望确保每个线程,只能工作在它自己的线程实例的拷贝上,同时不会 影响其他线程的数据。因而这种情况下,我们使用 ThreadLocal 来保存用户信息。

  1. RestFul 风格 API

    项目中采用了 RestFul 风格的 API,所有请求和响应都具有同一的格式,使得项目接口 清晰、易于理解,同时方便后期扩展。

  2. 统一 Session 管理

项目采用 Redis 进行统一 Seesion 管理,相较于传统服务端 Session 管理,统一 Session 管理更加容易进行分布式部署,使系统更加容易扩展集成

成品展示

算法基本概念

算法 Algorithm

  • 对解决方案的完整而准确的描述,是指令的有限序列,每条指令表示一个或多个操作

算法的五大重要特性

有穷性

  • 算法需在执行有穷步后结束,且每步在有穷时间内完成

确定性

  • 算法的每条指令需有确切含义,对于相同的输入只能得到一个相同的输出

可行性

  • 算法中的操作均可通过已实现的基本运算执行有限次实现

输入

  • 有 0 或多个,取于特定对象集合

输出

  • 有 1 或多个,与输出有特定关系

“好” 的算法标准

正确性

  • 算法应能正确解决问题

可读性

  • 算法应具良好的可读性

健壮性

  • 对非法数据做出适当反应、处理

效率和低存储量需求

  • 算法执行时间与执行过程中所需的最大存储空间

算法效率度量

时间复杂度(P6)

  • 分类:最坏时间复杂度 平均时间复杂度 最好时间复杂度

    • 平均时间复杂度:所有可能输入实例在等概率出现的情况下,算法的期望运行时间

频度

  • def 语句在算法中被重复执行的次数

T(n)

  • def 算法中所有语句的频度之和

渐进时间复杂度公式

两个计算规则

空间复杂度

S(n)

  • def 算法耗费的存储空间,是为实现计算所需信息的辅助空间

    • 原地工作:算法所需的辅助空间为常量 O (1)

数据结构的基本概念

Terminology

数据 Data

  • 信息的载体,描述所有能输入到计算机并被计算机识别处理的符号集合

数据元素 Data Element

  • 数据的基本单位,常作为整体进行考虑

数据对象 Data Object

  • 相同性质的数据元素的集合,是数据的一个子集

数据类型 Data Type

  • 一个值的集合、定义在此集合上的一组操作

  • 分类:原子类型 结构类型 抽象数据类型

    • 原子类型:值不可再分
    • 结构类型:值可再分为若干成分
    • 抽象数据类型 ADT:抽象数据组织及相关操作
      • 数据对象、数据关系、基本操作集表示的三元组

数据结构 Data Structure

  • 相互之间存在一种或多种特定关系的数据元素的集合

数据结构三要素

1、数据的逻辑结构

  • def 数据元素之间的逻辑关系

  • 分类:线性结构 非线性结构

    • 线性结构(有序数据元素的集合):线性表 队列 双队列 串 数组
      • 特点:数据结构之间存在一对一的线性关系
    • 非线性结构:数组 广义表 集合 树 二叉树 图

2、数据的存储结构

  • def 数据结构在计算机中的表示,包括数据元素的表示和关系的表示

  • 分类:顺序存储 链式存储 索引存储 散列存储

顺序存储
  • def 把逻辑上的相邻元素存储在物理位置上也相邻的存储单元中

  • 优点:实现随机存取,每个元素占用最少存储空间

  • 缺点:只能使用相邻的一整块存储空间,可能产生较多外部碎片

链式存储
  • def 不要求物理位置上相邻,借助指针表示元素间的逻辑关系

  • 优点:充分利用存储单元,无碎片

  • 缺点:指针占用额外存储空间,且只能顺序存取

索引存储
  • def 存储元素信息并建立附加的索引表

  • 优点:检索速度快

  • 缺点:费时,增删需修改索引表

散列存储
  • def 根据元素关键字直接计算出存储地址

  • 优点:检索、增删结点快速

  • 缺点:散列函数不好会引起冲突,而解决增加开销

3、数据的运算

  • def 运算的定义和实现

    • 定义 —— 逻辑结构, 指出运算的功能
    • 实现 —— 存储结构,指出运算的具体操作步骤

  • 字符串前加 u

1
text = u'这是一条测试字符串'

u:short for Unicode,指明后续字符串以 Unicode 编码;一般用在中文字符串前面,以防止中文乱码

  • 字符串前加 r

1
text = r'\t \n'

r:re,对应正则表达式 re 模块,用于去除 \ 转义机制

  • 字符串前加 b

1
response = b'<h1>Hello World!</h1>'

b:bytes,对应字节类型,一般用于 web 网络编程中

  • 字符串前加 f

1
2
name = 'John'
f'{name.lower()} is universal.'

f:f-Strings,f 字符串(Python 3.6 + 起进入标准库中)

在运行时进行渲染,方便易用