用户:だ*ぜ/Draft/机械学习
人工智能系列内容 |
---|
机械学习(英语:machine learning,简称“ML”)是人工智能的一个子领域,专门研究如何设计一些特殊的算法与统计模型,用于去教电脑在不需要个用家开口给明文指示的情况下,学识有效这样做一些特定的作业。机械学习的典型做法如下[2][3]:2:
- 编写一个程式,教部电脑如何由数据那里建立一个数学模型来描述他对啲变数之间的关系的知识;
- 找啲样本数据(即是所谓的“训练数据”)返来,给个程式处理吓啲数据里面的个案,等部电脑按个程式建立一个数学模型;以及
- 在将来再遇到同类个案的时候,电脑就会了解按他个程式,用建立了那个模型,对这些之前未见过的个案作出预测(即设计者不需要另外让电脑学习如何应对这些前所未见的个案,电脑自身也会有能力在一定程度上做出应对)。
机械学习算法做的事情是令部电脑了解“用手上资讯,自动地预测某些特定的变数的数值”,所以机械学习的技术可以将“做预测”这件事情自动化,而因为“做预测”这件事情在好多领域都会用到,机械学习可以有好多实用价值,例如是[4]:
- 医疗:机械学习可以用来教电脑由手上的医疗数据,学识哪些病征与哪些病症有关,所以可以拿来帮手诊断病人(用“手上病人的病征”预测“他有什么病”)[5]。
- 金融:机械学习上有技术可以教电脑由手上的金融(例如是之前那几个月的股价)来预测打后股价会点变化,这点在金融业上可以帮手做预测[6]。
- 市场学:机械学习可以用来教电脑由过去有关不同产品的销售量的数据,预测将来(间公司想出)的同类产品的销售量[7]。
⋯⋯等等。
机械学习与数据科学(data science)的关系十分密切,例如数据探勘(data mining),就可以涉及教部电脑如何找出数据当中的规律,令到部电脑了解自动化地探勘一些人手好难分析的数据,由这些数据那里抽取有用的资讯,而因为“由数据抽取资讯”这件事情基本上无论什么科学同商学领域都会用到,所以机械学习对于好多领域来讲都是一种好有用的技术[8][9]。
概论
编辑定位
编辑“ | 英文原文:"A computer program is said to learn from experience E with respect to some class of tasks T and performance measure P if its performance at tasks in T, as measured by P, improves with experience E." 粤文翻译:如果一个计算机程序能够喺一样或者一类工作 T 上嘅表现-而表现以 P 呢个指标嚟量度-随住经验 E 而改进嘅话,啖呢个程式就可以称得上系“有由经验 E 嗰度对工作 T 同表现量度指标 P 作出学习”(而机械学习就系指研究点样帮计算机程序做呢样嘢嘅领域)。 |
” |
上述这个定义避免了一些歧义性的问题:英国数学家同电算学家艾伦·图灵对于人工智能曾经问过“机械有没有能力思考?”这个问题,所以有人提出将人工智能(包括机械学习)定义为“研究如何令机械思考”的领域。但这个定位给好多科学家嫌他含糊得滞(例如“思考”这个词应该要定义就经已好摎搅[11]),所以研究机械学习的科学家一般不主张用这个词定义一个领域;而相比之下,上述的定义不需要依赖啲什么零舍含糊的词语——这个定义只是要求计算机程序有类似人类一样的行为,所以给人觉得比较适合用来做成个科学领域的定位[11]。
理论
编辑一个学习者(无论是机械还是人类)的主要目的是要将经验普遍化(generalize)[12]——由经历过的事情当中抽取那些事情普遍具有的特性,并且用这些资讯来解难,例如一个人在被只狗咬过之后,可能会产生“狗普遍倾向会咬人”的谂头,并且从此之后倾向避开狗(将“这一只狗会咬我”普遍化成“狗普遍都会咬我”)。机械学习都是同一道理:做机械学习会给一部电脑处理一些数据,再要部电脑对于一些他之前未见过的同类个案作出预测,类似是一些金融上会用的机械学习程式一样,设计者尝试教部电脑用“过去的股价数据”预测“将来的股价”(将“我处理过那些股票的股价变化法则”普遍化做“股票股价变化起上来普遍会跟从的法则”)[3][13]。
用行话讲的话,这个过程如下:学习用的数据是出自一个有特定概率分布(probability distribution)的现实,而假设组数据是大致上准确地代表到个现实概率分布的(组数据的概率分布同个现实的近乎一样),那么机械学习程式就要靠他的算法加埋啲数据砌返个合乎现实的数学模型出来[3][14]。
举个例说明:想像现在有一个正态分布(normal distribution;睇图),他X轴表示研究紧的变数,而Y轴反映了每个变数值出现的频率,例如如果X轴代表“人类的身高”,那么正态分布表达的事情如下:人类的身高最常在中间那个数值(那个数值出现率最高),而距离中间那个数值愈远的身高值就出现得愈少(好少有极高或者极矮的人)。个正态分布条线会有一条相应的数学式。而家假想个正态分布代表住全人类的身高,跟住研究者抽一个样本,例如是找500个人类返来,量度他们的身高。在最理想的情况之中,个样本会完美地代表到人类总体的身高分布——即如果将个样本里面的“身高值”同“每个值出现的率”画条线,条线的形状会同总体人类那条完全一个板。而如果现在话要训练一个机械学习程式,去靠个样本的数据学习人类的身高分布,个程式要做的事情就是由一些数据那里,砌返一个代表到人类总体身高分布那条线的数学式出来(另见统计学)。
运算学习论(computational learning theory)是专门研究机械学习算法的表现的计算机科学子领域。这个领域会用到大量的统计学技巧分析机械学习所要面对的问题,例如是在抽样本的过程当中,一般都假设了个样本代表到所研究的总体(例:“手上的股票的行为”大概正确地反映到“古往今来所有的股票的行为”),而这个假设在最严格的逻辑基准来睇查实并不正确(“我见过的天鹅都是白色”不代表“古往今来的天鹅冚唪唥都是白色”)。因为这些原因,虽然话事实经已说明了,机械学习在实用上表现好好,但在理论上机械学习的原理查实不是没有漏洞的,所以研究运算学习论的科学家就要去思考这些问题[15]。
基本流程
编辑在实用上,机械学习的流程基本上如下[16]:
- 搜集数据:用某些方法搜集一些描述紧要预测的现象的数据,并且以某些形式(例如:一个表)呈现啲数据,数据的质同量会影响最后个模型的准确性;
- 事前处理数据:处理吓啲数据先,清走啲会扰乱机械学习算法的事情,类似啲缺失数据(missing data)之类;
- 拣一个算法:机械学习可以用好多不同的算法来做,不同算法各有利弊;
- 训练个ML程式:将一些数据输入去个程式那里,等他按自己的算法建立一个模拟个现象的数学模型;
- 评估个ML程式:用某些指标评估个程式学得有几好,通常的做法是要个程式对他未见过的数据进行预测,再睇吓他预测得准不准;
- 执吓啲参数:执吓个程式啲参数(例如是学习率或者是初始化的数值等),睇吓这些改变可不可以再改善个程式;
- 作出预测:用个程式对现实世界的现象进行预测。
事前数据处理
编辑事前数据处理(data preprocessing)是拿到数据之后要做的第一个步骤。在搜集数据的过程之后,个研究者手上会有一个数据库,个数据库的数据包含了每一个个案在每个变数上的数值。现实的搜集数据过程都是不完全受控的,所以搜集到的数据几乎梗会出啲错,例如是某几个个案在某个变数上的数值量度不到(即是所谓的缺失数据)或者有一些摆明不可能的数值(例:有一个个案在“年龄”这个变数的数值是负数),等等。这样的数据直接拿去分析的话好多时会搞到个程式出错,所以做机械学习的人在开始给个程式做学习之前往往会做啲事前处理先[17][18]。
举个例说明,假想有一个金融学者想用机械学习教个计算机程序预测股价,他可以去一些网上的金融数据库那里拿某一组股票在某一段时间之间的价格(另见大数据),一只股票为止一个个案,每只股票都会在“2019年7月1号的价格”同“2019年8月1号的价格”等的多个变数上有一个值,但是这些数据都是由某些人或者程式负责搜集的,两者都可能会有失误:例如可能有某只股票“2019年7月1号的价格”是一个不知的数值(数据不见了);又或者搜集数据的单位搞错事情,有只股票“2019年7月1号的价格”是一个不可能的数值(例:负数)。如果个研究者就啖将这些数据入给个机械学习程式处理,个程式好可能会出错。于是他就有需要做一些事前处理,确保他手上的数据库是可以由机械学习程式处理的。
例子码
编辑以下是一段用Python编程语言写的一串源代码,用途在于将一些数据重新缩放成0至1之间的数值(将每个变数,最大的数值设做1,最细的数值设做0,而在中间那些数值就按比例变成0至1之间的实数)。这样做是因为,有某些机械学习算法需要数据是0至1之间的数先至行得到[19]:
# Python code to Rescale data (between 0 and 1)
import pandas
import scipy
import numpy
from sklearn.preprocessing import MinMaxScaler
url = "https://archive.ics.uci.edu/ml/machine-learning-databases/pima-indians-diabetes/pima-indians-diabetes.data" # 指定一個網址
names = ['preg', 'plas', 'pres', 'skin', 'test', 'mass', 'pedi', 'age', 'class'] # 指定每個變數嘅名
dataframe = pandas.read_csv(url, names=names) # 由網址嗰度攞數據。
array = dataframe.values # 將數據擺入去屬於個程式一個 array 嗰度。
X = array[:,0:8] # X 呢個 array 包含咗用嚟做預測嘅變數。
Y = array[:,8] # Y 呢個 array 包含咗要預測嘅變數。
# 將 X 入面嘅數字重新縮放。
scaler = MinMaxScaler(feature_range=(0, 1))
rescaledX = scaler.fit_transform(X)
# 將做完縮放嘅嗰柞數據 show 出嚟睇。
numpy.set_printoptions(precision=3)
print(rescaledX[0:5,:])
# 跟住打後嘅碼就會開始做學習過程。
数学模型
编辑在准备好啲数据之后,个机械学习程式就要建立一个数学模型。他要将数据当中的某些变数做输入,然后用他内部的数学模型计个他预想的输出出来(“预想输出”是一些输入的函数)。在最简单的监督式学习里面,个程式跟住会计吓,用他个数学模型计的“预想输出”同实际的输出差几远,按照这个误差调较自己个数学模型的参数。这个过程用虚拟码表达是[3]:
讀取事前處理完嘅數據;
建立一個數學模型,將 y(要預測嘅變數)寫成 x(用嚟做預測嘅變數)嘅函數;
遂個遂個噉讀取數據入面嘅個案,for 每一個個案
按照個數學模型同個個案嘅 x 值,計出預想嘅 y 值;
計吓「預想中嘅 y 值」同「個數據所顯示,嗰個個案嘅實際 y 值」差幾遠;
按呢個誤差,計吓個模型要點樣改;
# 如果一切順利,讀取嗮所有數據之後,最後嗰個數學模型會能夠做有返噉上下準嘅預測。
回归模型
编辑回归分析(regression analysis)是统计模型上的一类技术,用来预测两个或者以上不同变数之间的关系[20]:在统计学上,研究者好多时会想用一个变数的数值来预测其他变数的数值;在最简单那种情况下,个统计模型会涉及两个连续性的变数,当中一个是独立性变数(independent variable;IV),而另一个就是依赖性变数(dependent variable;DV),而个研究者会用个IV的数值来预测个DV的数值;对个研究者来讲,一个可能的做法是搜集啲数据返来,用啲数据做回归分析,整一个模型出来,个模型就能够帮他预测“当IV是这个数值的时候,假设其他因素不变,个DV的数值会倾向是几多”[21][22]。回归模型有以下这些[23]:
- (线性回归;linear regression);
- (多项式回归;polynomial regression);
⋯⋯等等。
原则上,如果有一个方法可以找出 以及 等参数的数值,就可以靠一条公式大致上用IV的值估计DV的值,而机械学习可以用一个回归模型做他的数学模型,例如是以下这段码这样,做的事情就是(拿到数据同做完啲事前处理之后)建立一个参数值是随机设的线性回归模型,再按组数据里面啲个案慢慢地调较个模型,最后想要个模型能够准确地做预测[20]:
c = 0; # 暫時當住啲參數同 IV 通通係 0 先。
x = 0; # 個 IV,可以係(例如)食量。
a = 0;
y = c + ax; # 個迴歸模型,y 將會係個程式俾嘅輸出,可以係(例如)體重。
c = random(1,100); # 隨機噉設 c 同 a 嘅數值,噉做會整出一個唔準嘅迴歸模型。
a = random(0,1);
# 下一步嘅碼需要做以下嘅工作:
# (一)搵出手上嗰條線係咪一個理想(誤差低)嘅迴歸模型;
# (二)如果唔係,就要改變 c 同 a 嘅數值,令到條線愈嚟愈接近「能夠做準確預測嘅樣」;
# (三)仲要計出 c 同 a 嘅數值應該要改變幾多。
def read_data() : # 要有個子程式教部電腦讀取設計者提供嘅數據。
data = open("patient_data" , "r")
patient_value = collections.OrderedDict()
for line in data.readlines()[1:] :
record = line.split(",")
patient_value[float(record[1])] = float(record[2].replace('\n', ""))
return patient_value
def step_cost_function_for(patient_value, constant, slope) :
...... # 一個省略咗嘅子程序,簡單啲講,呢個子程序涉及重複係噉做
# 攞下一個數據個體,將佢個 x 值同手上個模型預測 y,
# 計吓個誤差係幾多,再
# 有條式計吓要點樣按照個誤差調整 c 同 a,
# 做到讀完嗮成柞數據為止。
return new_constant, new_slope # 個子程序會俾出 c 同 a 嘅新數值。
def main() :
contant, slope = step_cost_function_for(read_data())
print "constant :" + contant + ", slope:" + slope
if __name__ == '__main__':
main()
在这个程式读取了一定量的数据之后,他内部会有一个回归模型。如果顺利的话,这个模型会有相当的能力做“每当得知一个个案在x的数值,预测他个y值”这项工作。
人工神经网络
编辑人工神经网络(artificial neural network)是受生物神经系统启发的一种数学模型[24]。例如,一只灵长目动物的脑闲闲地有断百亿计的神经细胞(neuron),一粒神经细胞在给电同化学物讯号刺激到的时候,会跟住以电或者化学物来传新讯号,所以当一粒神经细胞射讯号的时候可以引起连锁反应,将讯息在成个神经网络那里传开去;而人工神经网络主要是以计算机程序的方法来模拟这个过程,令一个计算机程序能够出现一些类似动物神经系统啖的行为[25]。
一个人工神经网络由大量的人工神经细胞(artificial neuron)组成。在用计算机程序整神经网络的时候,个研究者(通常)会每粒人工神经细胞都同他设返个数值,用这个数代表他的启动程度(activation level)[26],而每粒神经细胞的启动程度的数值都有条公式计算,这条公式包括了在他之前那些神经细胞的启动程度。啲函数当中的参数可以变化,而如果一个神经网络的程式令到他识得靠自己的经验来到调整这些参数的话,那个神经网络就会具有学习的能力[27][28]。
举个例说明,例如家吓找个神经网络里面某一粒人工神经细胞集中睇他,他会有返个数字来反映他的启动程度,而这个数字取决于其他人工神经细胞的启动程度——即个程式里面每粒细胞都会有一条类似这样的算式:
- ;
在这条公式当中, 代表那粒神经细胞的启动程度, 代表其他神经细胞当中第 粒的启动程度,而 就是其他神经细胞当中第 粒的权重(指那粒神经细胞有几影响到 那粒神经细胞的启动程度)。所以当一粒人工神经细胞启动的时候,会带起他后面啲人工神经细胞跟住他启动——十分类似生物神经网络里面那些神经细胞。假如个神经网络的程式令他能够自行按照经验改变 的数值的话,他就会了解学习(根据经验改变自己的行为)[27]。
在算法上,一个最简单的监督式学习神经网络同一个用回归模型的机械学习算法一个板,分别只是在于y同x之间的那条公式不同了。在一个人工神经网络的程式当中,会有若干粒细胞做输出值,若干粒细胞做输入值,每粒输出层细胞的启动程度会是他之前那层细胞的启动程度的函数,如此类推。在程式编写上,这样多啖多的权重值同启动值可以用矩阵轻易啖储住。类似是以下这段虚拟码啖[27]:
X = [0, ...]; # 個 IV 層,呢個係一個 array。
...
Y = A_1*H_1; # 輸出 Y 嘅啟動程度係之前嗰層嘅啟動程度嘅函數,當中 Y 同 H_1 係 array,而 A_1 係一個矩陣。
H_1 = A_2*H_2 # 如此類推如此類推
H_2 = A_3*X
# 隨機噉設啲權重嘅數值,噉做會整出一個唔準嘅迴歸模型。
A_1 = random(0,1);
A_2 = random(0,1);
A_3 = random(0,1);
...
# 跟住嘅碼同迴歸模型嘅基本上一樣。
一开始的时候,人工神经网络的技术是谂住用来普遍啖解难的,但随时间过去,啲人开始发觉设计上偏离生物神经网络的人工神经网络在好多情况下能够更加有效啖解难,于是就出了好多不同种的神经网络。到了廿一世纪,人工神经网络经已广泛啖给人用来教电脑辨识图像、辨识语音、管控社交网站、做机械翻译、以及玩游戏[28]。
决策树
编辑决策树学习(decision tree learning)是机械学习的一种模型,一个决策树(decision tree)会有若干个节点(node),每个节点代表了一个考虑紧的变数,并且在接收到一个个案的时候,先后啖用这些变数作出预测,例如是附图里面那个决策树这样,他会接收一个个案的数据,然后先后啖按照个个案的各种变数(性别、年纪、同有几多个亲属在船上呀啖)预测那个泰坦尼克号乘客有几大机会生还。而一个用决策树的机械学习算法要做的事情就是用手上的数据,砌出一个这样的决策树[29]。一个建立决策树的算法步骤大致如下[30]:
例如是以下的虚拟码啖,就能够由手上数据砌一个决策树出来[31]:
計吓成個數據庫嘅 information entropy(訊息熵;簡單啲講就係指柞數據有幾接近完全隨機)
For 每一個用嚟做預測嘅變數
計吓用咗佢分類之後嘅總 entropy
計吓用咗佢分類之後嘅總 entropy 同成個數據庫嘅 entropy 差幾多(information gain)
揀 information gain 最高嗰個變數嚟分類
For 每一個分咗嘅類,用嗰個類內嘅個案做數據庫,做多次上述嘅過程,直至用嗮所有用嚟做預測嘅變數,或者到咗指定嘅分枝數上限為止。
贝氏网络
编辑贝氏网络(Bayesian network)[32]是一种可以用来教电脑做推理[33]、学习[34]、同计划[35]的工具。一个贝氏网络会考虑大量的变数,并且用一组基于贝氏定理(Bayes' Theorem)的方程式模拟不同变数之间的关系。举个简单的例子说明,假想家吓有一个贝氏网络,他会睇某些变数(包括了“有没有落雨”以及“啲灌溉花洒有没有开着”)的数值,并且计算出“啲草是湿的”这个状态是“真”的机会率,会用到(例如)以下这条公式[36]:
- ;
当中 是指“啲草湿了”这个状态, 是指“啲灌溉花洒著了”这个状态,而 是指“有落雨”这个状态。整条公式用日常用语讲的话是啖的:“那三个状态都是真的机会率”( )等如“如果有落雨而且啲灌溉花洒著了,啲草湿了的机会率”( )乘以“如果有落雨,啲灌溉花洒著了的机会率”( )乘以“有落雨的机会率”( )。
个设计者写好程式之后,可以(例如)找一大组有关这几个变数之间的关系的数据给个程式睇,跟住叫个程式用这些过往的数据计算出变数同变数之间的关系是点,而个程式就可以拿来预测未来[32]。贝氏式人工智能有相当广泛的用途,例如Xbox Live,在帮一些打紧网上游戏的玩家找比赛加入的时候就会用到考虑那个玩家的赢率的贝氏网络[37],并且写个算法找出令到这个机会率最接近50%的分队法(即是尽可能令场比赛势均力敌)[37]。
支援向量机
编辑支援向量机(support vector machines,简称“SVM”)是一类机械学习上会用的数学模型,用来做分类,多数是监督式学习之下先会用的。当一个支援向量机接到收有关一组个案的数据的时候时,会将每个个案分类做两个(事先指定了的)类别的其中一个。例如是附图里面啖,黑点同白点是两类不同的个案,每个个案在X轴同Y轴这个变数上有一个数值,H1这条线不能够将个案清楚啖分类,H2叫勉强做到分类,而H3就能够清楚啖将个案分做两类,是最理想那条线——而用多个两个变数做分类的支援向量机可以按同一道理想像[38][39]。
一个建立一个支援向量机的算法大致上要做以下的工作[38]:
学习范式
编辑在建立了一个数学模型之后,个程式就要以某些方法慢慢啖改变个模型啲参数——是回归模型或者支援向量机的话,就要执条线的式那些系数;是人工神经网络的话,就要执啲神经细胞之间的权重值⋯⋯等等,目的是最后达致一个能够准确啖做预测同决策的模型——就类似人类同其他动物的学习过程这样。在机械学习上,这个过程可以用好多算法做,而这些算法可以分几大类[40][41]:
监督式学习
编辑监督式学习(supervised learning)可以话是最简单直接那种学习范式。监督式学习算法做的事情是建立一个数学模型模拟组数据,他当中某些变数扮演输入、又有一些变数扮演输出。组学习用的数据是所谓的训练用数据(training data)。用数学行话讲返,即是要找出一组已知的例子,有若干对输入( )同正确输出( ), ,再由容许得的函数当中找返个同啲例子最对搭的函数 出来。在这种学习之下,个神经网络会由研究者度收到一组数据给他学,类似有一个老师啖——所以就叫“监督”式学习[40][42]。
- 拿数据里面的一个个案(通常用一个向量表示);
- 用那个个案的“预测用变数”的值做自己个数学模型的输入,计算自己个模型所给的输出;
- 比较自己计算那个输出值以及数据显示的实际输出值(即是所谓的“监督讯号”;supervisory signal);
- 拿这两个数的落差,计算吓自己个模型啲参数要点变,先可以令到自己下次更有可能计算到正确输出值;
- 拿数据里面的下一个个案做多次这个过程,直至读完嗮个数据里面的所有一个案为止。
用监督式学习可以训练一个机械学习程式做好多不同的工作,类似是图形辨识(pattern recognition)[43]呀啖。举个例说明,家吓有一个研究员想训练一个程式分辨一个病人是咪有肺癌[44],用来帮一些医生手做检查;他可以去问医院同医学院等的单位借有关肺癌病人的数据,这组数据要包括了每个病人的检查结果( )以及他是咪真是有肺癌( )等的资讯;跟手个研究员就会逐个逐个将一些病人个案的检查结果同X光片那组数字入落去个程式的输入那里,而个输出层就会是是但一个二元(binary)的输出——“有肺癌”(用“1”代表)同“没有肺癌”(用“0”代表)。刚开始时,个程式会犯好多错,但是在用这组数据训练到啖上下之后,个程式会根据他啲学习法则改变了他啲参数,顺利的话啲误差会变到愈来愈细[45];而最后如果个误差细到去一个可以接受的水平的话,啲医护人员就有可能会有兴趣用这个程式帮他们手做肺癌检查。事实是,在医学上经已有不少医护人员会用机械学习程式帮手做诊断,有研究甚至发现,用机械学习程式来做诊断有阵时仲准过用人手做[46]。
非监督式学习
编辑非监督式学习(unsupervised learning)同监督式学习最大分别在于非监督式学习不会有一个设计者话给个程式知什么才是“正确答案”。一个用非监督式学习的机械学习程式净是会接收输入,并且尝试由收到的输入当中找出一些规律。一个典型的非监督式学习算法的步骤大致如下[47]:
- 拿数据里面的一个个案;
- 将他同其他个案比较,例如是他会不会同某组个案(“某组个案”是手上个案的子集)有共通点或者在各变数上的数值距离特别近等等;
- 将下一个个案这样做。
非监督式学习最常见的用途就是拿来做聚类分析(cluster analysis)。比如,家吓有一个生态学家想研究吓一栅区域里面那些树倾向于聚集在什么位置,他可以坐直升机或者用人造卫星拍摄一些相片,再记录嗮那栅区域里面每棵树生在哪个位置(这个过程会浪费不少时间),这样得出一个数据库,之记录嗮每棵树在X轴同Y轴那里的坐标。跟手他就可能会想睇吓:啲树会不会倾向于聚集在个区域里面的某些特定位置(这些资讯可能有助他保育一些靠树生存的动物)。如果相对来讲有某一组、啲树彼此之间距离近、又同他们以外的树距离远,啖就可以话他是“聚埋一群”。而聚类分析就正是用来分析一组个案里面会不会有几群个体是“彼此之间距离近,同群以外啲个体距离远”的[48][49][50]。
在这次研究里面,个生态学家不会事先知道要点将树分群,所以用不到监督式学习[49]。但是他可以使非监督式学习来整一个神经网络帮他手做这个聚类分析。一个较可能的简单做法是好像以下所述:将前馈网络的第一层——输入层设做“棵树的坐标”,等那些隐藏层用每一棵树的数据逐个逐个计算。而前馈网络的最后一层——输出层就有(例如)5粒人工神经细胞。对每棵树的运算结束之后都会有一粒输出层的神经细胞的启动程度是大过其他的——据此个生态学家就可以按“将棵树的数据入了落去个神经网络度之后,哪一粒输出层神经细胞的启动程度最大”为准则将树分做不同聚类,而且他仲有得按照分类结果分得好不好,来计算一下需不需要改变神经网络的参数——个神经网络就啖在度进行紧学习。除了啖,计算机科学界仲有其他更加精良的算法来做开非监督式学习[49][50]。
强化学习
编辑强化学习(reinforcement learning)是机械学习的一种,在机器人设计上好有用。在强化学习的过程里面,个研究者不会有一个数据库 给个程式睇同跟住学,而是给个程式是啖同他周围的环境互动(个环境可以是现场,又可以是一个模拟的环境):在每一个时间点 ,个程式会产生一个用输出的数字表示的动作(例如用“0”代表“企在度不动”同“1”代表“向前行”呀啖),而跟住他周围个环境会给返一些回馈(feedback)——简单啲讲就是话返给个程式听,他个动作对不对(例如:地上有一个洞,“向前行”会跌得很痛)。而个程式跟手就会根据这个回馈计算吓,睇吓要如何改他那些参数先可以令到下次他做行动的时候得到正面回应的机会率高啲——而上述的这个例子就有可能可以拿来教一个机器人行路[51][52][53]。
- 个程式给出一个输出, ;
- 个环境会根据他的内部运作法则决定回馈, ,是乜( 是现时状态,而 是下一个状态);
- 个程式会根据 决定是咪要修改自己内部的参数,若果是,要点改;
- 返步骤1做过。
个程式内部要有一个算法,个算法要用 做输入,给出“内部参数要变几多”做输出。
遗传算法
编辑遗传算法(genetic algorithm,简称“GA”)是一种建基于进化论物竞天择过程的一种机械学习算法:在进化论上,一个族群内部的生物个体(例如一群人类)彼此之间或多或少啖在遗传上有所差异,而这些差异会引致他们在表现型(包括外表、行为、同体质等)上有一个体差异,当中他们有一些生存同繁殖会比较叻,所以就更加有机会将自己啲遗传基因传给下一代。假设环境不变,个族群就会一代一代啖在遗传上有变异,变到愈发适合在那个环境生存同繁衍。遗传算法就是受这个理论启发的一种算法,做法如下[56][57]:
- 整一大组同类的数学模型出来,当中每个啲参数都有不同;
- 叫每个数学模型做若干次的预测,每个按他做预测阵时的准确度得返个分数,分数愈高表示他表现愈好;
- 拣选分数最高那组模型,将其余的模型淘汰澌;
- 做“繁殖”的过程——用最高分那组模型做“父母”,生产下一代的模型。啲仔在参数上会似他们的父母(“每个仔的每粒参数”都是“他父母的同位参数”的函数);
- 再做过上述过程,重复若干代;
- 如果一切顺利,若干代之后手上的模型会是一些预估估得对的模型[58]。
模型评估
编辑在做完学习过程之后,就要评估吓最后得出那个模型好定不好。要评一个模型是咪“好”,有以下指标使得[59][60]:
准确度
编辑最常用开评估机械学习模型的指标就是准确度。即是在做完学习之后,要个机械学习程式睇一些他之前未见过的个案,以及要他对那些个案进行预测。比如一个训练来预测股价的机械学习程式啖,要评估他的准确度,最好方法就是要他预估吓一些股价、是他之前未见过的时间点的。要评估一个模型的准确度,主要有几种做法[61]:
- 将手上啲数据分成训练集(training set)同测试集(test set):在开始做学习之前,将手上数据分做训练集同测试集。用训练集(通常包含了2/3的个案)做学习,然之后用测试集(通常包含1/3的个案)要个程式试吓做预测,再用某些指标来量度个程式在测试当中个预测有几准——如果是做分类的话,可以用准确度(估对的比率)做指标;而如果要预测的变数是连续变数的话,就可以使平均误差(平均来讲,预测的数值同正确数值差几远)。
- 自助抽样法(bootstrapping);设个数据里面的个案数量是n;个算法会由一些数据度随机抽一个个案出来,将个个案放入自助样本(bootstrap sample),跟住再摆返第个个案入去抽过(即所谓的“边替换边抽样”sampling with replacement),重复n次。最尾得出一个(可能有重复的)自助样本,用个自助样本做过测试。
- K次交叉验证(K-fold cross-validation):随机啖将数据的个案㓥做K份;然后拿其中一份做测试,其余啲份做学习——跟住逐份逐份过这个过程。同一道理,都要使某些指标量度准确度[62]。
灵敏度同特异度
编辑除了预测准确度之外,一个做分类的机械学习模型的质素仲可以用灵敏度同特异度(sensitivity and specificity)作为指标来量度。灵敏度同特异度包括了四个数值:归对唨啲阳性个案的真阳性率(True Positive Rate,TRP)跟归对唨啲阴性个案的真阴性率(True Negative Rate,TNR),以及归错唨啲阳性个案的假阳性率(False Positive Rate,FRP)跟归错唨啲阴性个案的假阴性率(False Negative Rate,FNR)。亦都有一些设计者嫌这些数字净是显示到比例,所以在写论文同报告的时候会将一些比例的分子分母都报埋出来[63][64]。
表征学习
编辑表征学习(feature learning,又有叫“representation learning”)是机械学习里面会用的一种算法,专门用来将一些输入转化、令啲输入简单啲有用啲,但同时又保留到啲输入当中带的讯息。例如在现实应用当中,个数据库有阵时可以有成几百个用来做预测的变数(x的维度有几百个),而这类情况可能会造成种问题,之个程式要做的运算量太大、甚至乎要花好耐时间先行得完[65]。于是个机械学习程式的设计者就可能会想使某些方法去减少输入当中变数的数量(降低x的维度),等个学习程式易行啲。常见的方法有事前帮组数据做吓主成分分析(principal component analysis)或者聚类分析先,跟住先至将一些数据输入落去个机械学习程式那里。但这样做就梗会令到输入捱简化了,造成讯息流失。所以“表征学习要点做”在机械学习上是一个好受关注的课题[66][67]。
就算法,褦有表征学习的监督式机械学习过程是啖的[68]:
做事前數據處理;
做表徵學習,同柞數據降低維度;
讀取處理完嘅數據;
建立一個數學模型,將 y(要預測嘅變數)寫成 x(用嚟做預測嘅變數)嘅函數;
遂個遂個噉讀取數據入面嘅個案,for 每一個個案
按照個數學模型同個個案嘅 x 值,計出預想嘅 y 值;
計吓「預想中嘅 y 值」同「個數據所顯示,嗰個個案嘅實際 y 值」差幾遠;
按呢個誤差,計吓個模型要點樣改;
# 如果一切順利,讀取嗮所有數據之後,最後嗰個數學模型會能夠做有返噉上下準嘅預測。
“做表征学习,同组数据降低维度”的过程可以用是但一种学习范式或者数学模型来做。比如对于一个监督式学习人工神经网络的表征学习,是设他啲输入做成数据库里面所有的x变数,跟手设他啲输出做成若干粒神经细胞(输出神经细胞数量要明显少过x变数的数量),再教他畀出正确输出[69][70]。
应用
编辑异常检测
编辑在数据探勘上,异常检测(anomaly detection)是指探测一些同手上的大多数个案不同的异常个案,好多时是因为这些个案有一些可疑——例如是在医疗上探测哪些病人身体状况数据异常、金融上哪些银行交易似是诈骗,又或者一段字里面哪些句子似是文法错误之类。在现实应用当中,要检查的个案数量通常闲闲地都论千计,所以好难用人手做。因此,有不少机械学习专家都落力研究如何用机械学习技术做异常检测[71][72][73]。
异常检测方面的技术常用于探测异常网络活动(因为这些活动可能暗示黑客攻击等等网络安全问题)。在这种情况下,异常检测未必会依赖“异常”作为分类指标,因为这些活动未必如此罕有;一种常见的做法是运用聚类分析,教部电脑(例如)认出同黑客攻击有拏褦的网络活动通常都有一些什么特征,最后令部电脑了解自动地探测哪些活动似是黑客攻击[74]。
无论监督式学习定非监督式学习,机械学习算法都可以拿来做异常检测。非监督式学习的例子通常是,个程式自动地用聚类分析将一些个案分类、再自动地将一些属于少数类型的个案归类做“异常”。这种做法大前题是一些属少数那类型的个案真是想要探测的类型(在网络安全上,这个假设未必成立)。而监督式学习的例子通常来讲就是个程式设计者明文地教个程式,讲埋他听哪些个案是“异常”,哪些是“正常”。半监督式学习的做法就是用一组“正常”个案的数据,建立一个数学模型;跟手在撞到下一个个案的时候,计算吓“假设个产生个案的模型与程式内部那个一样、会出现这些数值”的机会率。而假如计算出来这个机会率数值够细,就有理由相信这个个案属于“异常”[71][75][76]。
其他
编辑机械学习能够令电脑自动地预测某些变数的数值,所以基本上任何科学或者商学领域都可以用到机械学习的技术[8]:
⋯⋯等等。
批评
编辑虽然机械学习是一种重大的革新,但机械学习好多时都达不到理想的效果[77][78][79]。原因可以有好多:不够好使的数据、存取不到有用的数据、数据本身的偏差以及用错算法等都可以搞到个机械学习算法失败[80]。“机械学习”可能失败是一个好受关注的议题,因为廿一世纪初好多技术都是靠机械学习做的。例如是在2018年,邀步(Uber)架靠机械学习训练的自驾车探测不到行人,于是炒了车,仲撞死了人[81]。而仲有一个案报告话用来做医疗诊断的机械学习程式出唨错,搞到病人好长手尾[82][83]。这样的问题令到机械学习的专家思考开机械学习有一些什么缺陷,以及啲缺陷要点补救[77][84]。
另见
编辑参考文献
编辑注脚
编辑- ^ AI today and tomorrow is mostly about curve fitting, not intelligence. diginomica.
- ^ The definition "without being explicitly programmed" is often attributed to Arthur Samuel, who coined the term "machine learning" in 1959, but the phrase is not found verbatim in this publication, and may be a paraphrase that appeared later. Confer "Paraphrasing Arthur Samuel (1959), the question is: How can computers learn to solve problems without being explicitly programmed?" in Koza, John R.; Bennett, Forrest H.; Andre, David; Keane, Martin A. (1996). Automated Design of Both the Topology and Sizing of Analog Electrical Circuits Using Genetic Programming. Artificial Intelligence in Design '96. Springer, Dordrecht. pp. 151–170.
- ^ 3.0 3.1 3.2 3.3 Bishop, C. M. (2006), Pattern Recognition and Machine Learning, Springer.
- ^ 6 Top Applications of Machine Learning. Hackernoon.
- ^ Kononenko, I. (2001). Machine learning for medical diagnosis: history, state of the art and perspective. Artificial Intelligence in medicine, 23(1), 89-109.
- ^ Heaton, J. B., Polson, N. G., & Witte, J. H. (2017). Deep learning for finance: deep portfolios. Applied Stochastic Models in Business and Industry, 33(1), 3-12.
- ^ Ling, C. X., & Li, C. (1998, August). Data mining for direct marketing: Problems and solutions. In Kdd (Vol. 98, pp. 73-79).
- ^ 8.0 8.1 Friedman, Jerome H. (1998). "Data Mining and Statistics: What's the connection?". Computing Science and Statistics. 29 (1): 3–9.
- ^ Samuel, Arthur (1959). "Some Studies in Machine Learning Using the Game of Checkers". IBM Journal of Research and Development. 3 (3): 210–229.
- ^ 10.0 10.1 Mitchell, T. (1997). Machine Learning. McGraw Hill. p. 2.
- ^ 11.0 11.1 Harnad, S. (2006). The annotation game: On Turing (1950) on computing, machinery, and intelligence. In The Turing test sourcebook: philosophical and methodological issues in the quest for the thinking computer. Kluwer.
- ^ Walker, J. E.; Shea, T. M.; Bauer, A.M. "Generalization and the Effects of Consequences | Education.com". www.education.com.
- ^ Vidyasagar, M. (2002). A theory of learning and generalization. Springer-Verlag.
- ^ 14.0 14.1 Mohri, Mehryar; Rostamizadeh, Afshin; Talwalkar, Ameet (2012). Foundations of Machine Learning. USA, Massachusetts: MIT Press.
- ^ Angluin, D. 1992. Computational learning theory: Survey and selected bibliography. In Proceedings of the Twenty-Fourth Annual ACM Symposium on Theory of Computing (May 1992), pages 351–369.
- ^ Frameworks for Approaching the Machine Learning Process. KDnuggets.
- ^ Pyle, D., 1999. Data Preparation for Data Mining. Morgan Kaufmann Publishers, Los Altos, California.
- ^ Chicco D (December 2017). "Ten quick tips for machine learning in computational biology". BioData Mining. 10 (35): 1–17.
- ^ Data Preprocessing for Machine learning in Python 互联网档案馆的存档,存档日期2019年7月6号,..
- ^ 20.0 20.1 Linear Regression with example. Towards Data Science.
- ^ Seber, G. A., & Lee, A. J. (2012). Linear regression analysis (Vol. 329). John Wiley & Sons.
- ^ YangJing Long (2009). "Human age estimation by metric learning for regression problems". Proc. International Conference on Computer Analysis of Images and Patterns: 74–82.
- ^ Regression in Machine Learning. Towards Data Science.
- ^ Gardner, M. W., & Dorling, S. R. (1998). Artificial neural networks (the multilayer perceptron)—a review of applications in the atmospheric sciences. Atmospheric environment, 32(14-15), 2627-2636.
- ^ Russell, Stuart J.; Norvig, Peter (2010). Artificial Intelligence A Modern Approach. Prentice Hall. p. 578.
- ^ The Machine Learning Dictionary - activation level 互联网档案馆的存档,存档日期2018年8月26号,..
- ^ 27.0 27.1 27.2 Learning process of a neural network[失效链接]. Towards Data Science.
- ^ 28.0 28.1 Honglak Lee, Roger Grosse, Rajesh Ranganath, Andrew Y. Ng. "Convolutional Deep Belief Networks for Scalable Unsupervised Learning of Hierarchical Representations" Proceedings of the 26th Annual International Conference on Machine Learning, 2009.
- ^ Decision Trees in Machine Learning[失效链接]. Towards Data Science.
- ^ Decision Tree. Machine Learning.
- ^ Chapter 4: Decision Trees Algorithms.
- ^ 32.0 32.1 Bayesian Networks 互联网档案馆的存档,存档日期2019年7月9号,.. Bayesialab.
- ^ Bayesian inference algorithm:
- Russell & Norvig 2003, pp. 504–519,
- Poole, Mackworth & Goebel 1998, pp. 361–381,
- Luger & Stubblefield 2004, pp. ~363–379,
- Nilsson 1998, chpt. 19.4 & 7.
- ^ Bayesian learning and the expectation-maximization algorithm:
- Russell & Norvig 2003, pp. 712–724,
- Poole, Mackworth & Goebel 1998, pp. 424–433,
- Nilsson 1998, chpt. 20.
- ^ Bayesian decision theory and Bayesian decision networks:
- Russell & Norvig 2003, pp. 597–600.
- ^ Bayesian networks:
- Russell & Norvig 2003, pp. 492–523,
- Poole, Mackworth & Goebel 1998, pp. 361–381,
- Luger & Stubblefield 2004, pp. ~182–190, ≈363–379,
- Nilsson 1998, chpt. 19.3–4.
- ^ 37.0 37.1 Delalleau, O., Contal, E., Thibodeau-Laufer, E., Ferrari, R. C., Bengio, Y., & Zhang, F. (2012). Beyond skill rating: Advanced matchmaking in ghost recon online. IEEE Transactions on Computational Intelligence and AI in Games, 4(3), 167-177.
- ^ 38.0 38.1 Cortes, Corinna; Vapnik, Vladimir N. (1995). "Support-vector networks". Machine Learning. 20 (3): 273–297.
- ^ Ben-Hur, Asa; Horn, David; Siegelmann, Hava; and Vapnik, Vladimir N.; "Support vector clustering"; (2001); Journal of Machine Learning Research, 2: 125–137.
- ^ 40.0 40.1 Ojha, Varun Kumar; Abraham, Ajith; Snášel, Václav (2017-04-01). "Metaheuristic design of feedforward neural networks: A review of two decades of research". Engineering Applications of Artificial Intelligence. 60: 97–116.
- ^ Ting Qin, et al. "A learning algorithm of CMAC based on RLS." Neural Processing Letters 19.1 (2004): 49–61.
- ^ M.R. Smith and T. Martinez (2011). "Improving Classification Accuracy by Identifying and Removing Instances that Should Be Misclassified". Proceedings of International Joint Conference on Neural Networks (IJCNN 2011). pp. 2690–2697.
- ^ Looney, C. G. (1997). Pattern recognition using neural networks: theory and algorithms for engineers and scientists (pp. 171-172). New York: Oxford University Press.
- ^ Cancer Detection - MATLAB Example.
- ^ Menéndez, L. Á., de Cos Juez, F. J., Lasheras, F. S., & Riesgo, J. Á. (2010). Artificial neural networks applied to cancer detection in a breast screening programme. Mathematical and Computer Modelling, 52(7-8), 983-991.
- ^ Milani, C., & Jadavji, N. M. (2017). Solving cancer: The use of artificial neural networks in cancer diagnosis and treatment. Journal of Young Investigators, 33(4).
- ^ Jordan, Michael I.; Bishop, Christopher M. (2004). "Neural Networks". In Allen B. Tucker (ed.). Computer Science Handbook, Second Edition (Section VII: Intelligent Systems). Boca Raton, Florida: Chapman & Hall/CRC Press LLC.
- ^ Unsupervised learning - MathWorks.
- ^ 49.0 49.1 49.2 Unsupervised Learning and Data Clustering[失效链接]. Towards Data Science.
- ^ 50.0 50.1 Dostál, P., & Pokorný, P. (2009). Cluster analysis and neural network. In 17th Annual Conference Proceedings on Technical Computing Prague (pp. 131-57).
- ^ Dominic, S.; Das, R.; Whitley, D.; Anderson, C. (July 1991). "Genetic reinforcement learning for neural networks". IJCNN-91-Seattle International Joint Conference on Neural Networks. IJCNN-91-Seattle International Joint Conference on Neural Networks. Seattle, Washington, USA: IEEE.
- ^ Hoskins, J.C.; Himmelblau, D.M. (1992). "Process control via artificial neural networks and reinforcement learning". Computers & Chemical Engineering. 16 (4): 241–251.
- ^ Bertsekas, D.P.; Tsitsiklis, J.N. (1996). Neuro-dynamic programming. Athena Scientific. p. 512.
- ^ NEURAL NETWORKS AND REINFORCEMENT LEARNING 互联网档案馆的存档,存档日期2018年10月24号,. (PDF).
- ^ Miller, W. T., Werbos, P. J., & Sutton, R. S. (Eds.). (1995). Neural networks for control. MIT press.
- ^ Goldberg, David E.; Holland, John H. (1988). "Genetic algorithms and machine learning". Machine Learning. 3 (2): 95–99.
- ^ Michie, D.; Spiegelhalter, D. J.; Taylor, C. C. (1994). "Machine Learning, Neural and Statistical Classification". Ellis Horwood Series in Artificial Intelligence.
- ^ Zhang, Jun; Zhan, Zhi-hui; Lin, Ying; Chen, Ni; Gong, Yue-jiao; Zhong, Jing-hui; Chung, Henry S.H.; Li, Yun; Shi, Yu-hui (2011). "Evolutionary Computation Meets Machine Learning: A Survey" (PDF). Computational Intelligence Magazine. 6 (4): 68–75.
- ^ Metrics to Evaluate your Machine Learning Algorithm. Towards Data Science.
- ^ Various ways to evaluate a machine learning model’s performance. Towards Data Science.
- ^ Kohavi, Ron (1995). "A Study of Cross-Validation and Bootstrap for Accuracy Estimation and Model Selection". International Joint Conference on Artificial Intelligence.
- ^ Rodriguez, J. D., Perez, A., & Lozano, J. A. (2009). Sensitivity analysis of k-fold cross validation in prediction error estimation. IEEE transactions on pattern analysis and machine intelligence, 32(3), 569-575.
- ^ Altman DG, Bland JM (June 1994). "Diagnostic tests. 1: Sensitivity and specificity". BMJ. 308 (6943): 1552.
- ^ Pontius, Robert Gilmore; Si, Kangping (2014). "The total operating characteristic to measure diagnostic ability for multiple thresholds". International Journal of Geographical Information Science. 28 (3): 570–583.
- ^ A beginner’s guide to dimensionality reduction in Machine Learning. Towards Data Science.
- ^ Y. Bengio; A. Courville; P. Vincent (2013). "Representation Learning: A Review and New Perspectives". IEEE Trans. PAMI, Special Issue Learning Deep Architectures. 35 (8): 1798–1828.
- ^ Coates, Adam; Ng, Andrew Y. (2012). "Learning feature representations with k-means". In G. Montavon, G. B. Orr and K.-R. Müller (ed.). Neural Networks: Tricks of the Trade. Springer.
- ^ Tillmann, A. M. (2015). "On the Computational Intractability of Exact and Approximate Dictionary Learning". IEEE Signal Processing Letters. 22 (1): 45–49.
- ^ Nathan Srebro; Jason D. M. Rennie; Tommi S. Jaakkola (2004). Maximum-Margin Matrix Factorization. NIPS.
- ^ Coates, Adam; Lee, Honglak; Ng, Andrew Y. (2011). An analysis of single-layer networks in unsupervised feature learning. Int'l Conf. on AI and Statistics (AISTATS).
- ^ 71.0 71.1 Hodge, V. J.; Austin, J. (2004). "A Survey of Outlier Detection Methodologies". Artificial Intelligence Review. 22 (2): 85–126.
- ^ Killourhy, K. S., & Maxion, R. A. (2009, June). Comparing anomaly-detection algorithms for keystroke dynamics. In 2009 IEEE/IFIP International Conference on Dependable Systems & Networks (pp. 125-134). IEEE.
- ^ Zimek, Arthur; Schubert, Erich (2017), "Outlier Detection", Encyclopedia of Database Systems, Springer New York, pp. 1–5.
- ^ Dokas, Paul; Ertoz, Levent; Kumar, Vipin; Lazarevic, Aleksandar; Srivastava, Jaideep; Tan, Pang-Ning (2002). "Data mining for network intrusion detection" (PDF). Proceedings NSF Workshop on Next Generation Data Mining.
- ^ Chandola, V.; Banerjee, A.; Kumar, V. (2009). "Anomaly detection: A survey". ACM Computing Surveys. 41 (3): 1–58.
- ^ Mahadevan, V., Li, W., Bhalodia, V., & Vasconcelos, N. (2010, June). Anomaly detection in crowded scenes. In 2010 IEEE Computer Society Conference on Computer Vision and Pattern Recognition (pp. 1975-1981). IEEE.
- ^ 77.0 77.1 "Why Machine Learning Models Often Fail to Learn: QuickTake Q&A". Bloomberg.com.
- ^ "The First Wave of Corporate AI Is Doomed to Fail". Harvard Business Review. 2017-04-18.
- ^ "Why the A.I. euphoria is doomed to fail". VentureBeat. 2016-09-18.
- ^ "9 Reasons why your machine learning project will fail". www.kdnuggets.com.
- ^ "Why Uber's self-driving car killed a pedestrian". The Economist.
- ^ "IBM's Watson recommended 'unsafe and incorrect' cancer treatments - STAT". STAT.
- ^ Hernandez, Daniela; Greenwald, Ted (2018-08-11). "IBM Has a Watson Dilemma". Wall Street Journal.
- ^ Char, D. S.; Shah, N. H.; Magnus, D. (2018). "Implementing Machine Learning in Health Care—Addressing Ethical Challenges". New England Journal of Medicine. 378 (11): 981–983.
书目
编辑- Nils J. Nilsson, Introduction to Machine Learning.
- Hastie, Trevor; Tibshirani, Robert; Friedman, Jerome H. The elements of statistical learning : data mining, inference, and prediction : with 200 full-color illustrations. New York: Springer. 2001. ISBN 0-387-95284-5. OCLC 46809224.
- Domingos, Pedro. The master algorithm : how the quest for the ultimate learning machine will remake our world. New York. 2015. ISBN 978-0-465-06570-7. OCLC 900623914.
- Ian H. Witten and Eibe Frank (2011). Data Mining: Practical machine learning tools and techniques. Morgan Kaufmann, 664pp., ISBN 978-0-12-374856-0.
- Ethem Alpaydin (2004). Introduction to Machine Learning, MIT Press, ISBN 978-0-262-01243-0.
- David J. C. MacKay. Information Theory, Inference, and Learning Algorithms. Cambridge: Cambridge University Press, 2003. ISBN 0-521-64298-1
- Richard O. Duda, Peter E. Hart, David G. Stork (2001) Pattern classification (2nd edition), Wiley, New York, ISBN 0-471-05669-3.
- Christopher Bishop (1995). Neural Networks for Pattern Recognition, Oxford University Press. ISBN 0-19-853864-2.
- Stuart Russell & Peter Norvig, (2009). Artificial Intelligence – A Modern Approach. Pearson, ISBN 9789332543515.
- Ray Solomonoff, An Inductive Inference Machine, IRE Convention Record, Section on Information Theory, Part 2, pp., 56–62, 1957.
- Ray Solomonoff, An Inductive Inference Machine, A privately circulated report from the 1956 Dartmouth Summer Research Conference on AI.
- VanderPlas, J. (2016). Python data science handbook: essential tools for working with data. O'Reilly Media, Inc.
外部链接
编辑- International Machine Learning Society.
- mloss is an academic database of open-source machine learning software.
- Machine Learning Crash Course by Google.