
在这篇文章中,我将解释我是如何做得,以便你可以写出你自己的。我将会提供一个长点的但是更完美的源代码。
首先,神经网络是什么?人脑由几千亿由突触相互连接的细胞(神经元)组成。突触传入足够的兴奋就会引起神经元的兴奋。这个过程被称为“思考”。
我们可以在计算机上写一个神经网络来模拟这个过程。不需要在生物分子水平模拟人脑,只需模拟更高层级的规则。我们使用矩阵(二维数据表格)这一数学工具,并且为了简单明了,只模拟一个有3个输入和一个输出的神经元。
我们将训练神经元解决下面的问题。前四个例子被称作训练集。你发现规律了吗?‘?’是0还是1?
你可能发现了,输出总是等于输入中最左列的值。所以‘?’应该是1。
训练过程
但是如何使我们的神经元回答正确呢?赋予每个输入一个权重,可以是一个正的或负的数字。拥有较大正(或负)权重的输入将决定神经元的输出。首先设置每个权重的初始值为一个随机数字,然后开始训练过程:
取一个训练样本的输入,使用权重调整它们,通过一个特殊的公式计算神经元的输出。
计算误差,即神经元的输出与训练样本中的期待输出之间的差值。
根据误差略微地调整权重。
重复这个过程1万次。
最终权重将会变为符合训练集的一个最优解。如果使用神经元考虑这种规律的一个新情形,它将会给出一个很棒的预测。
这个过程就是back propagation。
计算神经元输出的公式
你可能会想,计算神经元输出的公式是什么?首先,计算神经元输入的加权和,即
接着使之规范化,结果在0,1之间。为此使用一个数学函数--Sigmoid函数:
Sigmoid函数的图形是一条“S”状的曲线。
把第一个方程代入第二个,计算神经元输出的最终公式为:
你可能注意到了,为了简单,我们没有引入最低兴奋阈值。
调整权重的公式
我们在训练时不断调整权重。但是怎么调整呢?可以使用“Error Weighted Derivative”公式:
为什么使用这个公式?首先,我们想使调整和误差的大小成比例。其次,乘以输入(0或1),如果输入是0,权重就不会调整。最后,乘以Sigmoid曲线的斜率(图4)。为了理解最后一条,考虑这些:
我们使用Sigmoid曲线计算神经元的输出
如果输出是一个大的正(或负)数,这意味着神经元采用这种(或另一种)方式
从图四可以看出,在较大数值处,Sigmoid曲线斜率小
如果神经元认为当前权重是正确的,就不会对它进行很大调整。乘以Sigmoid曲线斜率便可以实现这一点
Sigmoid曲线的斜率可以通过求导得到:
把第二个等式代入第一个等式里,得到调整权重的最终公式:
当然有其他公式,它们可以使神经元学习得更快,但是这个公式的优点是非常简单。
构造Python代码
虽然我们没有使用神经网络库,但是将导入Python数学库numpy里的4个方法。分别是:
exp--自然指数
array--创建矩阵
dot--进行矩阵乘法
random--产生随机数
比如, 我们可以使用array()方法表示前面展示的训练集:
“.T”方法用于矩阵转置(行变列)。所以,计算机这样存储数字:
我觉得我们可以开始构建更优美的源代码了。给出这个源代码后,我会做一个总结。
我对每一行源代码都添加了注释来解释所有内容。注意在每次迭代时,我们同时处理所有训练集数据。所以变量都是矩阵(二维数据表格)。下面是一个用Python写地完整的示例代码。
结语
试着在命令行运行神经网络:
你应该看到这样的结果:
我们做到了!我们用Python构建了一个简单的神经网络!
首先神经网络对自己赋予随机权重,然后使用训练集训练自己。接着,它考虑一种新的情形[1, 0, 0]并且预测了0.99993704。正确答案是1。非常接近!
传统计算机程序通常不会学习。而神经网络却能自己学习,适应并对新情形做出反应,这是多么神奇,就像人类一样。
1.数据挖掘是从大量的数据中,抽取出潜在的、有价值的知识(模型或规则)的过程。1. 数据挖掘能做什么?
1)数据挖掘能做以下六种不同事情(分析方法):
· 分类 (Classification)
· 估值(Estimation)
· 预言(Prediction)
· 相关性分组或关联规则(Affinity grouping or association rules)
· 聚集(Clustering)
· 描述和可视化(Des cription and Visualization)
2)数据挖掘分类
以上六种数据挖掘的分析方法可以分为两类:直接数据挖掘;间接数据挖掘
· 直接数据挖掘
目标是利用可用的数据建立一个模型,这个模型对剩余的数据,对一个特定的变量(可以
理解成数据库中表的属性,即列)进行描述。
· 间接数据挖掘
目标中没有选出某一具体的变量,用模型进行描述;而是在所有的变量中建立起某种关系
· 分类、估值、预言属于直接数据挖掘;后三种属于间接数据挖掘
3)各种分析方法的简介
· 分类 (Classification)
首先从数据中选出已经分好类的训练集,在该训练集上运用数据挖掘分类的技术,建立分
类模型,对于没有分类的数据进行分类。
例子:
a. xyk申请者,分类为低、中、高风险
b. 分配客户到预先定义的客户分片
注意: 类的个数是确定的,预先定义好的
· 估值(Estimation)
估值与分类类似,不同之处在于,分类描述的是离散型变量的输出,而估值处理连续值的
输出;分类的类别是确定数目的,估值的量是不确定的。
例子:
a. 根据购买模式,估计一个家庭的孩子个数
b. 根据购买模式,估计一个家庭的收入
c. 估计real estate的价值
一般来说,估值可以作为分类的前一步工作。给定一些输入数据,通过估值,得到未知的
连续变量的值,然后,根据预先设定的阈值,进行分类。例如:银行对家庭贷款业务,运
用估值,给各个客户记分(Score 0~1)。然后,根据阈值,将贷款级别分类。
· 预言(Prediction)
通常,预言是通过分类或估值起作用的,也就是说,通过分类或估值得出模型,该模型用
于对未知变量的预言。从这种意义上说,预言其实没有必要分为一个单独的类。
预言其目的是对未来未知变量的预测,这种预测是需要时间来验证的,即必须经过一定时
间后,才知道预言准确性是多少。
· 相关性分组或关联规则(Affinity grouping or association rules)
决定哪些事情将一起发生。
例子:
a. 超市中客户在购买A的同时,经常会购买B,即A =>B(关联规则)
b. 客户在购买A后,隔一段时间,会购买B (序列分析)
· 聚集(Clustering)
聚集是对记录分组,把相似的记录在一个聚集里。聚集和分类的区别是聚集不依赖于预先
定义好的类,不需要训练集。
例子:
a. 一些特定症状的聚集可能预示了一个特定的疾病
b. 租VCD类型不相似的客户聚集,可能暗示成员属于不同的亚文化群
聚集通常作为数据挖掘的第一步。例如,"哪一种类的促销对客户响应最好?",对于这一
类问题,首先对整个客户做聚集,将客户分组在各自的聚集里,然后对每个不同的聚集,
回答问题,可能效果更好。
· 描述和可视化(Des cription and Visualization)
是对数据挖掘结果的表示方式。
2.数据挖掘的商业背景
数据挖掘首先是需要商业环境中收集了大量的数据,然后要求挖掘的知识是有价值的。有
价值对商业而言,不外乎三种情况:降低开销;提高收入;增加股票价格。
1)数据挖掘作为研究工具 (Research)
2)数据挖掘提高过程控制(Process Improvement)
3)数据挖掘作为市场营销工具(Marketing)
4)数据挖掘作为客户关系管理CRM工具(Customer Relationship Management)
3.数据挖掘的技术背景
1)数据挖掘技术包括三个主要部分:算法和技术;数据;建模能力
2)数据挖掘和机器学习(Machine Learning)
· 机器学习是计算机科学和人工智能AI发展的产物
· 机器学习分为两种学习方式:自组织学习(如神经网络);从例子中归纳出规则(如决
策树)
· 数据挖掘由来
数据挖掘是八十年代,投资AI研究项目失败后,AI转入实际应用时提出的。它是一个新兴
的,面向商业应用的AI研究。选择数据挖掘这一术语,表明了与统计、精算、长期从事预
言模型的经济学家之间没有技术的重叠。
3)数据挖掘和统计
统计也开始支持数据挖掘。统计本包括预言算法(回归)、抽样、基于经验的设计等
4)数据挖掘和决策支持系统
· 数据仓库
· OLAP(联机分析处理)、Data Mart(数据集市)、多维数据库
· 决策支持工具融合
将数据仓库、OLAP,数据挖掘融合在一起,构成企业决策分析环境。
4. 数据挖掘的社会背景
数据挖掘与个人预言:数据挖掘号称能通过历史数据的分析,预测客户的行为,而事实上
,客户自己可能都不明确自己下一步要作什么。所以,数据挖掘的结果,没有人们想象中
神秘,它不可能是完全正确的。
客户的行为是与社会环境相关连的,所以数据挖掘本身也受社会背景的影响。比如说,在
美国对银行xyk客户信用评级的模型运行得非常成功,但是,它可能不适合中国。
2.数据仓库是在企业管理和决策中面向主题的、集成的、与时间相关的、不可修改的数据集合
数据仓库,英文名称为Data Warehouse,可简写为DW。
数据仓库之父Bill Inmon在1991年出版的“Building the Data Warehouse”一书中所提出的定义被广泛接受——数据仓库(Data Warehouse)是一个面向主题的(Subject Oriented)、集成的(Integrated)、相对稳定的(Non-Volatile)、反映历史变化(Time Variant)的数据集合,用于支持管理决策(Decision Making Support)。
◆面向主题: *** 作型数据库的数据组织面向事务处理任务,各个业务系统之间各自分离,而数据仓库中的数据是按照一定的主题域进行组织的。
◆集成的:数据仓库中的数据是在对原有分散的数据库数据抽取、清理的基础上经过系统加工、汇总和整理得到的,必须消除源数据中的不一致性,以保证数据仓库内的信息是关于整个企业的一致的全局信息。
◆相对稳定的:数据仓库的数据主要供企业决策分析之用,所涉及的数据 *** 作主要是数据查询,一旦某个数据进入数据仓库以后,一般情况下将被长期保留,也就是数据仓库中一般有大量的查询 *** 作,但修改和删除 *** 作很少,通常只需要定期的加载、刷新。
◆反映历史变化:数据仓库中的数据通常包含历史信息,系统记录了企业从过去某一时点(如开始应用数据仓库的时点)到目前的各个阶段的信息,通过这些信息,可以对企业的发展历程和未来趋势做出定量分析和预测。
数据仓库是一个过程而不是一个项目。
数据仓库系统是一个信息提供平台,他从业务处理系统获得数据,主要以星型模型和雪花模型进行数据组织,并为用户提供各种手段从数据中获取信息和知识。
从功能结构化分,数据仓库系统至少应该包含数据获取(Data Acquisition)、数据存储(Data Storage)、数据访问(Data Access)三个关键部分
数据挖掘(Data Mining),又称为数据库中的知识发现(Knowledge Discovery in Database, KDD),就是从大量数据中获取有效的、新颖的、潜在有用的、最终可理解的模式的非平凡过程,简单的说,数据挖掘就是从大量数据中提取或“挖掘”知识。
并非所有的信息发现任务都被视为数据挖掘。例如,使用数据库管理系统查找个别的记录,或通过因特网的搜索引擎查找特定的Web页面,则是信息检索(information retrieval)领域的任务。虽然这些任务是重要的,可能涉及使用复杂的算法和数据结构,但是它们主要依赖传统的计算机科学技术和数据的明显特征来创建索引结构,从而有效地组织和检索信息。尽管如此,数据挖掘技术也已用来增强信息检索系统的能力。
3.数据挖掘和数据仓库以数据库为基础。
浅谈数据挖掘与数据仓库1数据挖掘
1.1数据挖掘与传统数据分析的区别
数据挖掘与传统的数据分析,如查询、报表、联机应用分析的本质区别是数据挖掘是在没有明确假设的前提下去挖掘信息、发现知识。数据挖掘所得到的信息应具有先前未知、有效和实用三个特征。即数据挖掘是要发现那些不能靠直觉发现的信息或知识,甚至是违背直觉的信息或知识,挖掘出的信息越出乎意料就可能越有价值。而传统的数据分析趋势为从大型数据库抓取所需数据并使用专属计算机分析软件。因此数据挖掘与传统分析方法有很大的不同。
1.2数据挖掘的应用价值
(1)分类:首先从数据中选出已经分好类的训练集,在该训练集上运用数据挖掘分类的技术,建立分类模型,对于没有分类的数据进行分类。(2)估计:与分类类似,不同之处在于,分类描述的是离散型变量的输出,而估值处理连续值的输出;分类是确定数目的,估计是不确定的。(3)聚类:是对记录分组。聚类和分类的区别是聚集不依赖于预先定义好的类,不需要训练集。中国移动采用先进的数据挖掘工具马克威分析系统,对用户wap上网的行为进行聚类分析,通过客户分群,进行精确营销。(4)关联规则和序列模式的发现:关联是某种事物发生时其他事物会发生的这样一种联系。例如:每天购买啤酒的人也有可能购买香烟,比重有多大,可以通过关联的支持度和可信度来描述。与关联不同,序列是一种纵向的联系。例如:今天银行调整利率,明天股市的变化。(5)预测:通过分类或估值得出模型,该模型用于对未知变量的预言。(6)偏差的检测:对分析对象的少数的、极端的特例的描述,揭示内在的原因。除此之外,在客户分析,运筹和企业资源的优化,异常检测,企业分析模型的管理的方面都有广泛使用价值。
2数据仓库
2.1数据仓库的特征
(1)面向主题(Subject Oriented)的数据集合。数据仓库围绕一些主题如顾客、供应商、产品和销售来组织。数据仓库关注决策者的数据建模与分析,而不是组织机构的日常 *** 作和事务处理。(2)集成(Integrated)的数据集合。数据仓库中的数据是在对原有分散的数据库数据抽取、清理的基础上经过系统加工、汇总和整理得到的,必须消除源数据中的不一致性,以保证数据仓库内的信息是关于整个企业的一致的全局信息。(3)时变(Time Variant)的数据集合。数据存储从历史的角度提供信息。数据仓库中的数据通常包含历史信息,通过这些信息,可以对企业的发展历程和未来趋势做出定量分析和预测。(4)非易失(Nonvolatile)的数据集合。数据仓库的数据主要供企业决策分析之用,所涉及的数据 *** 作主要是数据查询,修改和删除 *** 作很少,通常只需要定期的加载、刷新。数据仓库里的数据通常只需要两种 *** 作:初始化载入和数据访问,因此其数据相对稳定,极少或根本不更新。[page]2.2数据仓库的类型
数据仓库的类型根据数据仓库所管理的数据类型和它们所解决的企业问题范围,一般可将数据仓库分为下列3种类型:企业数据仓库(EDW)、 *** 作型数据库(ODS)和数据集市(Data Marts)。①企业数据仓库为通用数据仓库,它既含有大量详细的数据,也含有大量累赘的或聚集的数据,这些数据具有不易改变性和面向历史性。此种数据仓库被用来进行涵盖多种企业领域上的战略或战术上的决策。② *** 作型数据库既可以被用来针对工作数据做决策支持,又可用做将数据加载到数据仓库时的过渡区域。与EDW相比,ODS是面向主题和面向综合的,易变的,仅含有目前的、详细的数据,不含有累计的、历史性的数据。③数据集市是为了特定的应用目的或应用范围,而从数据仓库中独立出来的一部分数据,也可称为部门数据或主题数据。几组数据集市可以组成一个EDW。
2.3数据仓库与传统数据库的比较
二者的联系既有联系又有区别。数据仓库的出现,并不是要取代数据库。目前,大部分数据仓库还是用关系数据库管理系统来管理的。可以说,数据库、数据仓库相辅相成、各有千秋。二者的区别可以从以下几个方面进行比较:
(1)出发点不同:数据库是面向事务的设计;数据仓库是面向主题设计的。(2)存储的数据不同:数据库一般存储在线交易数据;数据仓库存储的一般是历史数据。(3)设计规则不同:数据库设计是尽量避免冗余,一般采用符合范式的规则来设计;数据仓库在设计是有意引入冗余,采用反范式的方式来设计。(4)提供的功能不同:数据库是为捕获数据而设计,数据仓库是为分析数据而设计。(5)基本元素不同:数据库的基本元素是事实表,数据仓库的基本元素是维度表。(6)容量不同:数据库在基本容量上要比数据仓库小的多。(7)服务对象不同:数据库是为了高效的事务处理而设计的,服务对象为企业业务处理方面的工作人员;数据仓库是为了分析数据进行决策而设计的,服务对象为企业高层决策人员。
3数据仓库与数据挖掘的关系
当然为了数据挖掘你也不必非得建立一个数据仓库,数据仓库不是必需的。建立一个巨大的数据仓库,把各个不同源的数据统一在一起,解决所有的数据冲突问题,然后把所有的数据导到一个数据仓库内,是一项巨大的工程,可能要用几年的时间花上百万的钱才能完成。只是为了数据挖掘,你可以把一个或几个事务数据库导到一个只读的数据库中,就把它当作数据集市,然后在他上面进行数据挖掘。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)