快来机器常见工具(机器算法工具数据分布式)「常见的机器算法」

随着人工智能的火热,很多企业甚至是数据挖掘爱好者开始尝试自己动手来挖掘数据中的价值
机器学习的基础设施包括数据、算法和工具
前面已经介绍了数据和算法方面的内容,本文将重点介绍机器学习工具
机器学习工具从计算能力上来讲可以分为两种,即单机计算和集群计算
本文会分别对单机版机器学习工具、开源分布式机器学习工具以及企业级云机器学习工具进行介绍,如图1-1所示
图1-1 机器学习工具首先介绍单机版的机器学习工具
如果读者有过数据挖掘的经历,一定会对下面几款工具都有一定了解:SPSS和R
这些都是单机版机器学习工具的代表,每一款产品都有自己的特点,SPSS的操作更方便,R的画图功能比较简洁
单机版工具的特点就是安装方便,比较好上手,因为单机版工具不依赖于底层计算集群的配置
但是单机版工具在计算能力上不能与分布式机器学习工具相提并论,往往只能进行一些数据的实验或者画图展示,在企业级数据处理和业务服务上相对比较乏力
介绍完单机版机器学习工具之后,接下来讲一下分布式机器学习工具
笔者认为,真正的智能计算平台一定是具备处理大规模数据、提供丰富算法能力的计算平台
通常来讲,一套完整的机器学习工具的架构包括4层,如图1-2所示
图1-2 智能机器学习工具的架构从上向下看,例如有一些业务上的需求,如搭建广告DSP系统、搭建商品推荐引擎
这些业务场景的需求建立在底层的机器学习算法上,如同之前讲到的业务场景抽象的内容
底层的这些机器学习算法,如K-means、LR和RF等,需要映射到分布式计算架构上,通过MPI和MapReduce等分布式的代码架构来实现这些算法
最后分布式的代码架构把任务部署到底层的计算引擎上
目前随着云计算和智能算法的发展,智能机器学习算法的架构搭建也有了多种选择,有集群+Spark+Mlib的开源组合,也可以使用一些云计算服务商的企业级机器学习平台服务,比较成熟的包括亚马逊的AWS Machine Learning、微软Azure的Machine Learning Studio以及阿里云机器学习PAI
使用开源架构搭建算法平台可能会提升自身对数据流转和算法订制方面的灵活性,但是在集群运维以及算法开发方面的开销也会比较大
接下来将分别对单机版机器学习工具、开源分布式机器学习工具和企业级云机器学习工具进行介绍进行介绍,主要从相关依赖、操作的易用性及算法丰富程度等方面展开(注:本文的实验环境为Mac OS系统)
单机版机器学习工具对普通用户来讲,特别是一些算法能力还不扎实的数据挖掘初学者来讲,使用单机版的机器学习工具可以更快速地上手
本节将重点介绍两款工具,分别是SPSS和RStudio
1.1.1 SPSS(1)简介
统计产品与服务解决方案(SPSS)软件是世界上最早的统计分析软件,由美国斯坦福大学的3位研究生Norman H. Nie、C. Hadlai (Tex) Hull 和 Dale H. Bent于1968年研究开发成功,同时成立了SPSS公司,并于1975年成立法人组织,在芝加哥组建了SPSS总部
2009年7月28日,IBM公司宣布用12亿美元现金收购统计分析软件提供商SPSS公司
如今 SPSS 已出至版本 22.0,而且更名为IBM SPSS
迄今,SPSS公司已有40余年的成长历史
SPSS软件的主要特点是操作界面极为友好
它将几乎所有的功能都以统一、规范的界面展示出来,使用Windows的窗口方式展示各种管理和分析数据方法的功能,对话框展示出各种功能选择项
用户只要掌握一定的Windows操作技能,熟悉统计分析原理,就可以使用该软件进行科研工作
(2)安装
SPSS是付费软件,具体安装方法简便
登录官网下载SPSS工具,并且购买许可证,直接安装注册即可
这里演示使用的是SPSS 21.0版本,进入产品界面,如图1-3所示
图1-3 SPSS界面(3)运行实验
打开SPSS软件,提示导入数据源
SPSS支持多种数据源输入,如图1-4所示
图1-4SPSS数据源这里导入的是UCI开源数据集的一组数据,是一个二分类的场景
利用这组数据做一个逻辑回归二分类的模型计算
把数据导入SPSS中,其中dioxide_A字段是目标列(目标列分为0和1两种值),其他字段是特征列,如图7-5所示
图1-5 数据导入打开菜单栏中的“分析”菜单,如图1-6所示,选择“二元logistic回归”
这里面的“因变量”表示目标列,“协变量”表示特征字段,单击“确定”按钮开始模型训练
图1-6 逻辑回归设置最终的输出结果可以通过输出查看器来显示,模型的评估模块如图1-7所示
图1-7 模型评估逻辑回归的模型评估模块针对每一个特征都有多维度的表示
在这些统计指标中,下面4个指标比较关键
“B”:偏回归系数,也就是生成的线性模型的系数
“S.E”:标准误差
“Wals”:Wald统计量
“EXP(B)”:变量的有时比
最终这次实验生成的逻辑回归模型可以表示为:logistic=0.399fixed-3.895acidity_A-2.884volatile-0.006acidity-2.473citric+0.039acid-0.026residual-15.696sugar+0.847chlorides+1.925free+0.879sulfur_A+3.056从SPSS的总体设计角度来看,SPSS还是一款偏统计的软件
数据通过类Excel表格的方式进行操作,大大降低了数据操作者的使用门槛,但是如果想针对数据进行自定义的开发,无论是通过脚本还是数据转换工具都显得比较困难
要想进行大规模的数据挖掘工作,从算法自由度或是效率上来看,SPSS还是有一定局限性的
1.1.2 R语言(1)简介
如果读者是做数据挖掘相关工作的,一定会听说过R语言,现在很多对数据挖掘工程师的基本要求都包含这一条:熟悉R语言
R语言究竟有哪些特性?我们通过本文简单地了解一下
先来介绍背景,R是一款集统计计算和绘图功能于一体的软件
R语言的前身是S语言,S语言是由著名的AT&T贝尔实验室开发的用来数据分析和绘图的语言
后来经过新西兰奥克兰大学的Robert Gentleman等人在S语言的基础上继续开发,诞生了R语言的雏形
R语言主要具备下面一些优点
开源
R语言是一款完全开放源码的工具
因为开源,数据开发工作者可以自由地阅读R语言的源码,而且可以基于R语言的代码进行扩展,这也是R语言能在短时间内得到快速发展的原因
每天都有来自全世界的开源爱好者为R语言贡献代码包,使用者可以通过install命令轻松地安装这些扩展算法
R语言不同于SPSS等软件,它可以自如地修改已有的算法,使算法跟自己的业务场景更加贴合
跨平台
R语言的跨平台特性大大加快了这项技术的传播,目前无论是在 Mac OS、Windows或者Linux系统上都有较为稳定的版本可供使用
用户只需要一套代码,就可以把业务逻辑运行在不同的平台上
较为完善的资料
因为目前R语言的开源贡献者众多,而且R语言无论在学术界或是工业界都有很多的应用,已经有大量的使用者贡献了许多可以参考的学习资料或者实例代码
关于R语言的一些应用,已经有相关图书资源可供参考
可视化
R语言在数据可视化方面也独具特色,提供了很多种画图包以及丰富的绘图功能,使生成的数据可以清晰地可视化展现出来
例如,画一条定义域为[-3,3]的Sigmoid函数曲线
Sigmoid函数公式为用户只需要输入如下指令,就可以得到如图1-8所示的截图
图1-8 R绘图 > x<-seq(-3,3,by=0.01) > y<-1/(1+exp(-x)) > plot(x,y)R语言的使用方式是通过命令行的形式来实现的
R语言的特点是比较简单、容易理解,配合上丰富的算法包,初学者基本上学习半天时间就可以跑通一整套复杂的数据挖掘实验
RStudio是针对R语言的一款IDE工具,下面会通过一个案例,详细介绍如何通过RStudio跑通逻辑回归算法
(2)安装
本书的实验环境是Mac OX 10.11.1 EI Capitan系统
使用RStudio需要首先安装R语言包,读者可以去官方网站下载R语言,地址为https://www.r-project.org/,安装成功后,打开R看到的是一个命令行终端界面,如图1-9所示
图1-9 R终端安装R语言之后,就可以安装RStudio,下载地址为https://www.rstudio.com/,进入界面,如图1-10所示
图1-10 RStudio界面(3)运行实验
安装RStudio完成之后,本次实验将会针对一份开源数据集进行逻辑回归模型训练实验
首先导入数据,RStudio支持多种数据格式的导入,部分格式可能需要安装对应的函数包
本次实验导入的是CSV格式文件,导入方法有两种,可以使用RStudio提供的Import Dataset按钮,也可以通过如下函数实现
> data <- read.csv(\"~/Documents/work/book/data/data.csv\", sep=\";\")>View(data)导入数据之后,用户就可以可视化查看数据,如图1-11所示
图1-11 R数据导入下面介绍如何对数据进行逻辑回归处理
其实在RStudio里面只需要以下一行代码就可以实现
mylogit <- glm(label ~ ., data = data, family =binomial(link='logit'))mylogit表示逻辑回归对象名称
glm是线性模型函数
abel是目标列,~表示除目标列以外的字段
data表示数据集
binomial表示二分类
link='logit'表示逻辑回归
用户可以通过summary函数查看生成的模型
summary(mylogit)结果如图1-12所示
图1-12 逻辑回归结果结果(见图1-12)中的Estimate字段就是生成的逻辑回归模型系数,我们可以得到最终的逻辑回归模型如下
logit=3.05+0.39fixed.acidity-3.89volatile.acidity-2.88citric.acid-0.006residual.sugar-2.47chlorides+0.03free.sulfur.dioxide-0.02total.sulfur.dioxide-15.69density+0.84pH+1.92sulphates+0.87alcohol另外,用户还可以通过R语言强大的图形展示功能查看一下模型的拟合情况
> plot(mylogit)此时可以看到结果如图1-13所示
图1-13 图形拟合曲线通过上面的实验,读者可以简单了解RStudio以及R语言的语法和操作方式,可以看到R语言的语法是非常容易理解的,而且对结果的图形化展示功能也能让数据操作者更直观地观察结果输出
在数据源支持方面,RStudio支持导入本地数据源,同时也支持服务器连接
具体支持的格式可以通过安装相应的插件来扩展,基本包含了 SPSS 的全部格式,对各种数据库文件也有良好的支持
在算法支持方面,因为R语言是建立在开源社区之上的,所以有很多算法包可供选择,基本涵盖了特征工程、分类算法、聚类算法、回归算法和神经网络算法等常规机器学习算法,而且在算法扩展性方面,也支持对算法进行更大幅度的自定义改造
因为R语言具备如此多的优良特性,所以近期有越来越多的分布式系统正在对R语言进行改造,期盼R语言也可以实现分布式的计算,从而突破目前所遇到的计算资源上的瓶颈,未来的云RStudio会更加令人期待
总之,R语言对于做数据挖掘的工程师来讲,是一个非常理想的实验环境,特别是在计算结果可视化呈现方面
开源分布式机器学习工具前面介绍了一下单机版的机器学习工具SPSS软件和RStudio,作为单机版的工具,不用关心集群配置和运维等操作,所以SPSS软件和RStudio都具有容易安装和上手的特点
但是在实际的使用过程中,特别是数据量比较大的情况下,就会出现效率低下的问题
对大规模的机器学习计算,需要通过分布式架构进行处理,本节将重点介绍一下目前比较流行的两种支持分布式机器学习工具,分别是Spark MLib和Tensorflow
1.2.1 Spark MLib1.简介MLib是Spark的机器学习算法库,是完全开源的
以Spark框架为基础构建的机器学习算法系统目前正在广泛地运用到各种领域当中
既然要从处理实际的工业界场景的角度出发,Spark和Hadoop的MapReduce框架是目前业内最主流的两种开源分布式架构,难免要对它们进行一下对比,我们单从对机器学习算法的支持方面考虑如下
(1)对多步迭代的支持
通过算法章节对算法的介绍,我们了解到大部分算法需要通过多步骤的迭代计算才可以实现,如梯度下降算法,需要通过多次迭代计算损失函数,然后才可以逐步逼近最优解
传统的Hadoop的MapReduce计算框架,在每次迭代的过程中都需要对硬盘进行读写,这样就造成了很大的I/O消耗,降低了效率
而Spark分布式计算框架是基于计算机内存来进行迭代计算的,通过将大量的计算工作在内存中处理的方式,可以大大减少对硬盘的数据读写,从而提高迭代类算法的计算效率
(2)从集群通信的角度分析
Spark的Akka和Netty通信系统在信息传递和数据传递两方面,从效率上来讲都远远优于Hadoop的JobTracker间的通信机制
以上两点是从分布式计算架构的角度分析得到的Spark相较于MapReduce的优势,下面介绍Spark MLib库的一些属性
MLib 作为分布式机器学习算法库,设计的初衷是使机器学习算法更容易使用和扩展
对数据集的支持方面,Spark MLib 支持本地的一些向量和矩阵数据,同时支持底层的弹性分布式数据集(RDD)
RDD是分布式内存的一个抽象概念,提供一种高度受限的内存模型,可以看作Spark MLib 的一个对象,运行在内存中
以上是对Spark MLib的基础介绍,下面介绍如何构建Spark MLib机器学习系统
2.安装配置环境(1)首先下载Spark,实验环境为Mac OS,需要安装jdk
Spark下载地址为http://spark.apache.org/downloads.html,下载完成后解压,在命令行终端进入Spark目录,执行如下命令就可以启动Spark
./sbin/start-master.sh启动Spark之后,用户可以登录浏览器的localhost://8080 查看,如图1-14所示
图1-14 登录Spark(2)我们发现此时的Workers和Running Applications都是空的,因为Spark是基于分布式系统的计算框架,所以需要添加Worker才能让这个系统运行起来,否则是不能使用的
为了方便讲解,这里把本机添加成Worker,添加其他集群机器的原理是相同的
添加Worker需要deploy worker的命令如下
./bin/spark-class org.apache.spark.deploy.worker.Worker spark://IP:PORT如果添加的是本机,IP:Port可以通过图中的框线处得到,如图1-15所示
图1-15 IP图将本机添加成Worker之后,再次刷新localhost:8080就可以看到Worker出现在列表中了,如图1-16所示
图1-16 添加Worker1.2.2 TensorFlow1.简介TensorFlow,是一个开源的机器学习框架,是基于著名的DistBelief开发的
最初的TensorFlow由“谷歌大脑”团队的研发人员开发,是用来研究深度神经网络的工具,但是随着架构的不断完善,整个系统已经被改造得可以适用于多种不同的场景
Google在2015年将TensorFlow开源后,迅速得到来自IT行业各界的强烈反应
Android作为Google开源产品的标杆,已经占领了移动端市场,人们都在猜测,TensorFlow或许是Google进军人工智能市场的一把“尖刀”
目前来看,TensorFlow具备着优良的特性,而且在新的版本中已经支持了分布式计算
在未来一段时间里,TensorFlow势必要引领机器学习的一段潮流
先来简单介绍一下什么是TensorFlow,从字面意思来理解,Tensor 表示张量,是指任意维度的数据
在TensorFlow中,数据是通过数据流的形式在算法节点中流转的
我们通过深度学习的一张架构流程图(见图7-24)来解释
图1-17 深度学习通过这张深度学习的架构图来分析,图1-17中竖形单元表示算法层,有输入层、隐藏层和输出层,每个圆形的单元是计算节点
TensorFlow中的数据以数据流的形式在计算节点中流动
从前向后流,就是前向传播,从后向前流,就是后向传播,Flow表示的就是数据的这种流动
仅从字面意思来看,TensorFlow的具体计算形式已经表现得很清楚了
下面简单介绍下TensorFlow的一些特性
(1)灵活性
TensorFlow的灵活性不只表现在对算法的支持上,也表现在架构方面
TensorFlow支持单机计算和分布式计算,同时也可以将计算在CPU和GPU之间灵活切换
在对算法的支持方面,TensorFlow不单单是一个神经网络库,它还可以看作机器学习的编程架构,开发者可以将自己的算法逻辑写成流图的形式,然后就可以把自己定义的算法运行在TensorFlow的架构中去
(2)易用性
TensorFlow可以自动计算梯度,只需要手动设置好计算架构,设置好目标函数,然后向系统中灌入数据即可,中间的计算和参数权重变化都是自动完成的,同时系统也提供了办法帮助用户监督整个计算流程
在具体使用方面,虽然TensorFlow的底层代码是通过C++来编写的,但是可以通过Python接口来创建计算流图
用户在逻辑代码的计算框架编写方面也比较容易上手
(3)良好的资源调度能力
TensorFlow可以帮助开发者充分利用计算资源
对计算资源的调度可以高度自定义,可以自由调用CPU和GPU,同时也支持线程、队列和异步计算等
TensorFlow让开发者可以充分利用自身的硬件资源,而且可以让数据流在不同的机器上自由流转
2.实验环境搭建前面介绍了TensorFlow的一些概要和基本性能,接下来介绍搭建TensorFlow的实验环境,并且跑通程序员们最熟悉的程序——Hello World
(1)安装pip
pip是Mac系统中的一个Python的安装工具,TensorFlow可以通过pip自动安装,具体命令如下
sudo easy_install pip sudo easy_install --upgrade six如果已经安装了pip,可以忽略这一步.(2)安装Virtualenv
Virtualenv是一个用于隔离本地Python环境的工具,因为TensorFlow在使用过程中需要对环境参数做一定的调整,所以推荐安装Virtualenv来进行隔离
具体的操作步骤是首先安装Virtualenv,命令如下
sudo pip install --upgrade virtualenv然后在Virtualenv环境中创建一个tensorflow目录,命令如下
virtualenv --system-site-packages ~/tensorflow激活环境,可以通过activate和activate.csh两种方式,命令如下
source ~/tensorflow/bin/activate# If using bash source ~/tensorflow/bin/activate.csh# If using csh(3)安装TensorFlow
现在就可以通过pip在这个环境下安装TensorFlow了,根据Python的版本不同而选择不同的安装命令如下
# Python 2 (tensorflow)$ pip install --upgrade $TF_BINARY_URL # Python 3(tensorflow)$ pip3 install --upgrade $TF_BINARY_URL命令中的TF_BINARY_URL需要根据系统版本,Python版本是否支持GPU来进行选择
# Mac OS X, CPU only, Python 2.7: (tensorflow)$export TF_BINARY_URL=https://storage.googleapis.com/tensorflow/mac/cpu/tensorflow-0.10.0-py2-none-any.whl# Mac OS X, GPU enabled, Python 2.7: (tensorflow)$export TF_BINARY_URL=https://storage.googleapis.com/tensorflow/mac/gpu/tensorflow-0.10.0-py2-none-any.whl# Mac OS X, CPU only, Python 3.4 or 3.5:(tensorflow)$export TF_BINARY_URL=https://storage.googleapis.com/tensorflow/mac/cpu/tensorflow-0.10.0-py3-none-any.whl # Mac OS X, GPU enabled, Python 3.4 or 3.5: (tensorflow)$export TF_BINARY_URL=https://storage.googleapis.com/tensorflow/mac/gpu/tensorflow-0.10.0-py3-none-any.whl(4)示例
前面已经把TensorFlow的计算环境安装完毕,我们激活Virtualenv下面的TensorFlow后,会进入到Python的隔离环境中,命令行终端的最前端会出现“tensorflow”的字样
下面介绍Hello world的执行代码
#tfimport tensorflow as tfhello = tf.constant('Hello world!') sess = tf.Session()print(sess.run(hello))constant是TensorFlow的一种数组,这里就不详细介绍了
下面主要来说一下Session的概念,Session表示会话的概念,在TensorFlow系统中,用户通过会话来与TensorFlow系统交互
一般的模式是先建立会话,然后在会话中添加节点和边,再通过Session来与TensorFlow交互
执行上面的这个代码文件,就会看到返回的结果,如图7-25所示
图1-18 结果综上,一个单机版的TensorFlow就已经安装成功,并且跑通了Hello World实验
企业级云机器学习工具前面介绍的分别是单机版的机器学习工具和开源的分布式机器学习工具,虽然这些工具大多都具备友好的操作方式和丰富的算法,但是在企业级服务方面还是存在一些缺陷
接下来详细介绍亚马逊机器学习平台和阿里云机器学习平台PAI
1.3.1 亚马逊AWS MLAmazon Web Service(AWS)是亚马逊在2006年推出的云计算服务,主要优势是能够以根据业务发展来扩展的较低可变成本来替代前期资本基础设施费用
根据亚马逊提供的数据,AWS已经为全球 190 个国家和地区的企业提供支持
AWS目前是云计算行业的领军者,曾经击败过IBM获得美国中情局的云服务大额订单
亚马逊机器学习,是2015年4月份推出的一款能够帮助开发者使用历史数据开发并部署预测模型的服务
这些模型有广泛的用途,包括对欺诈行为的检测、防止用户流失并改进用户支持
亚马逊机器学习是通过向导的方式为开发者提供关于机器学习模型的创建和调试流程的指导,从而部署并扩展模型,支持数十亿级别数据量的预测
亚马逊通过向导的方式建立实验,并且把机器学习服务和Amazon Simple Storage Service(Amazon S3)、Amazon Redshift、Amazon Relational Database Service(Amazon RDS)集成,让客户使用存储在AWS云服务上的数据,做到整个云服务的生态打通
1.3.2 阿里云机器学习PAI前面介绍了亚马逊的企业级机器学习服务AWS ML,接下来将介绍一款国内目前比较成熟的机器学习平台,来自阿里云的机器学习PAI
阿里云机器学习PAI是一款几乎涵盖了所有种类机器学习算法的机器学习平台
阿里云机器学习的底层计算引擎是阿里云研发的飞天分布式计算引擎,可以处理EB级别的数据
算法平台本身涵盖了从数据预处理、特征工程、机器学习算法、模型评估、预测和部署一整套的机器学习算法解决方案,因为打通了整条数据挖掘的链路,使得阿里云机器学习可以不单作为一款科学研究的工具,也可以作为企业级的算法解决方案来使用
我们先来了解下这款产品的功能架构,如图1-19所示
图1-19 机器学习平台架构自下向上来分析架构图,阿里云机器学习的最底层是支持异构调度(指CPU和GPU混合分布)的分布式计算引擎,支持GPU主要是为了更好地支持上层的深度学习算法
在计算基础设施上面的计算架构层支持了几款主流的分布式架构MR和PS等
在实际的操作中,用户对计算框架和基础设施这两层是无感知的,用户只需要考虑自己的场景适用于哪些算法即可,做到了算法和计算架构的解耦
相较于 AWS ML 的向导式算法模型搭建流程,如图1-20所示,阿里云机器学习平台采用拖拉拽的方式搭建实验流程,向导式的模型训练建立方式能更容易上手,但是阿里云这种拖拉拽式的操作对实验的扩展性和自定义性更有保证
图1-20 阿里云机器学习平台界面进入操作界面,我们可以看到左边是一个个算法组件可供拖曳,把组件拖拽到中间的画布上,然后按照算法逻辑连线,在最右边的设置框中定义每一个组件的参数
这样的体验给人一种搭积木式的感觉,不需要去考虑底层的计算资源和运维这些因素,算法工程师只要把精力聚焦到业务的场景以及算法的搭配即可
在使用阿里云机器学习平台进行实验的时候有一点需要注意,因为在搭建数据预处理、特征工程和机器学习算法等环节时都有很多的组件供选择(AWS ML选择余地相对单一),所以要求使用者具备一定的机器学习基础
​《机器学习实践应用》李博 著本书通过对机器学习的背景知识、算法流程、相关工具、实践案例以及知识图谱等内容的讲解,全面介绍了机器学习的理论基础和实践应用
书中涉及机器学习领域的多个典型算法,并详细给出了机器学习的算法流程
本书适合任何有一定数据功底和编程基础的读者阅读
通过阅读本书,读者不仅可以了解机器学习的理论基础,也可以参照一些典型的应用案例拓展自己的专业技能
同时,本书也适合计算机相关专业的学生以及对人工智能和机器学习感兴趣的读者阅读
​​《人工智能(第2版)》[美] 史蒂芬·卢奇(Stephen Lucci) 著美国经典入门书,被誉为人工智能领域百科全书
人工智能领域近十年来最前沿教程,2018年全新更新
本书基于人工智能的理论基础, 向读者展示全面、新颖、丰富多彩且易于理解的人工智能知识体系
本书给出诸多的示例、应用程序、全彩图片和人物轶事,以激发读者的阅读和学习兴趣;还引入了机器人和机器学习的相关高级课程,包括神经网络、遗传算法、自然语言处理、规划和复杂的棋盘博弈等
快来机器常见工具(机器算法工具数据分布式)
(图片来源网络,侵删)

联系我们

在线咨询:点击这里给我发消息