ChatGPT大火,咱们都在跟踪这个热点。概念股在商场大火,相关不相关的公司都声称要做AI;全网都在发布教程教你怎么注册账号,怎么运用ChatGPT洗稿,获取流量 …;传统职业的朋友,也找我探问,感觉它能够解决他们的痛点。可是人类总是会高估一项技能的短期价值,而轻视其长时刻价值。现在经过它已经赚到钱的人,属于眼光敏锐的;还没有赚到钱或还没有解决问题的人,几天后会大约失去爱好。做技能的不如冷静下来好好了解一下其底层应用的机器学习技能,了解一下完成原理,出资一下其长时刻价值。
机器学习是一门开发算法和核算模型的科学,核算机体系运用这些算法和模型,在没有清晰指令的状况下,依托既有模式和推理来执行任务。核算机体系运用机器学习算法来处理很多历史数据,并辨认数据模式。这可让核算机体系依据给出的输入数据集更准确地猜测成果。
以上是机器学习的界说,假如没有读懂也没有联系,记住几个加粗的关键字就行, 下面咱们一起来花几分钟时刻来学习它。本文不会介绍太多的数学知识,有高中数学基础就能够放心大胆的食用。
回归问题
回归剖析(Regression Analysis)是一种核算学上剖析数据的方法,意图在于了解两个或多个变数间是否相关、相关方向与强度,并建立数学模型以便观察特定变数来猜测研究者感爱好的变数。简略的说便是经过一些已知的历史数据,推测出数据x和y之间的函数联系y=f(x),那么关于某个新的 x'
, 咱们能够运用函数公式核算(猜测)其对应值y'
。可是宽和方程不同,这儿的y'
是不准确的,会和实在值之间存在误差。
让咱们详细看一个比方,拿国民话题的房子来说。现在我手里有一栋房子需求售卖,我应该给它标上多大的价格?房子的面积是90平米,价格是300万,290万,仍是340万?很明显,我希望取得房价与面积的某种规矩。那么我该怎么取得这个规矩?用报纸上的房价平均数据么?仍是参阅他人面积相似的?无论哪种,似乎都并不是太靠谱。
我查询了周边与我房型相似的一些房子,取得一组数据。这组数据中包含了大巨细小房子的面积与价格,假如我能从这组数据中找出面积与价格的规矩,那么我就能够得出房子的价格:
运用已有的蓝色点,咱们能够画一条黑色的直线来贴合(拟合)它们,也能够运用一条赤色的曲线来贴合(拟合)它们。假定咱们运用直线吧,简略一些。这条直线能够表明为 y=wx+b
, 这样90平米的房子,带入公式就能够知道其价格。明显房价不只是和面积相关,楼层,位置,朝向等等都会影响房子的价格,不过没有联系咱们先从最近简略的问题开端着手。
房价猜测问题现在被咱们简化为查找一个合适的线性方程的数学问题。这样简化后的模型,咱们还能够用来处理相似问题,比方年纪和身高的揣度问题,这是没有清晰指令的意义,也是机器学习的强壮之处。
怎么查找一个合适的线性方程呢?这就需求用到最小二乘法了。咱们能够进一步把数据抽象成下图:
4个赤色的数据和1条蓝色的直线 y=wx+b
, 对应每个 x
,都有实在值 y
和猜测值 y'
。咱们能够幻想一下,将蓝色的直线上下平移或许左右旋转一个视点,都能够拟合4个赤色的数据点,那么这一堆的直线中那条直线是最合适的呢? 最小二乘法界说使每个猜测值和实在值之间的平方和最小的直线便是最优直线。这儿杂乱的数学证明咱们能够先疏忽,把它当做定理即可。
这样查找一个合适的线性方程的数学问题,进一步转换为求极限值的问题。这个极限问题能够表明为求下面函数的极值:
g=(y-y')=(w'x+b'-wx-b)^2=((w'-w)x+(b'-b))^2
省略掉w和b后,能够概括为:
g(x)=x^2
明显依据x^2的图画,咱们能够知道,函数的导数为零的当地便是函数的极值:
到此求极值的问题又变成函数求导数,这是机器学习中回归问题的数学原理。
分类问题
分类问题是机器学习能够处理的第二类问题。假定有肿瘤样本数据如下图:
图中x轴表明肿瘤巨细,y轴表明患者的年纪,肿瘤的良性和恶性运用性状和颜色区别。咱们同样能够在平面上画一条直线,将良性肿瘤和恶性肿瘤区别开来,直线下方的是良性,直线上方的是恶性。当然数据也会有误差,各有一个良性和恶性被误判了,这需求医生进一步确认。
和房价问题相同,咱们把数据抽象一下,构成下面的图形:
由于这儿x和y没有相关性,所以咱们更习惯称为x1和x2轴
从左图咱们能够知道,在平面上相同有很多条直线能够将数据区别开,那么那条直线会是最优的呢? 这时候轮到支撑向量机(SVM)登场了。
支撑向量机会找到最好的那条线,这条线满意到两类数据的鸿沟构成的间距最大。数学证明,咱们相同略过。可是咱们能够这样理解这个问题, 鸿沟越大,表明能够冗余的 不知道 数据越多。由于机器学习是运用样本数据来对不知道数据进行猜测,那么在样本空间中留下的空间越大,对不知道数据的接纳才能越强,分类的准确性越高,比方下图A构成的空间:
回归和分类
前面介绍了运用线性回归算法猜测房价和运用支撑向量机区别肿瘤,其间关于房价的猜测成果是接连的,而肿瘤区别成果是离散的。实践上这两类问题是能够互通的,这时候需求运用到Sigmoid函数,它的公式如下:
f(x)=\dfrac{1}{1+e^{-x}}
公式比较难以理解,可是Sigmoid图画很简略,能够把任意数值映射到[0,1]的区间:
这对IT的同学应该都不生疏,网卡的电信号转换成比特也和这没不同。
机器学习和经典编程的差异
决策树算法能够比较好的展现机器学习和经典编程的差异。咱们希望完成一个挑选好瓜和坏瓜的程序,已知的一些经历数据如下表:
色泽 | 根蒂 | 敲声 | 纹路 | 脐部 | 触感 | 好瓜 |
---|---|---|---|---|---|---|
青绿 | 蜷缩 | 浊响 | 明晰 | 洼陷 | 硬滑 | 1 |
漆黑 | 蜷缩 | 烦闷 | 明晰 | 洼陷 | 硬滑 | 1 |
漆黑 | 蜷缩 | 浊响 | 明晰 | 洼陷 | 硬滑 | 1 |
青绿 | 蜷缩 | 烦闷 | 明晰 | 洼陷 | 硬滑 | 1 |
浅白 | 蜷缩 | 浊响 | 明晰 | 洼陷 | 硬滑 | 1 |
浅白 | 蜷缩 | 浊响 | 含糊 | 平整 | 软粘 | 0 |
青绿 | 稍蜷 | 浊响 | 稍糊 | 洼陷 | 硬滑 | 0 |
浅白 | 稍蜷 | 烦闷 | 稍糊 | 洼陷 | 硬滑 | 0 |
漆黑 | 稍蜷 | 浊响 | 明晰 | 稍凹 | 软粘 | 0 |
浅白 | 蜷缩 | 浊响 | 含糊 | 平整 | 硬滑 | 0 |
青绿 | 蜷缩 | 烦闷 | 稍糊 | 稍凹 | 硬滑 | 0 |
从表中咱们能够看到,能够经过色泽,根蒂形状,敲声等六个要素去协助判别是好瓜仍是坏瓜。在经典编程中,咱们会剖析数据,提取规矩。比方看起来纹路明晰的是好瓜会更高概率,脐部洼陷和触感硬滑是好瓜的概率也更高一些。咱们编写最简略的程序或许如下:
def good_or_bad(watermelon):
# 默认坏瓜
flag = 0
if watermelon["纹路"] == "明晰" and watermelon["纹路"] == "明晰":
flag = 1
elif watermelon["敲声"] == "浊响" and watermelon["触感"] == "硬滑":
flag = 1
...
else:
...
return flag
watermelon={"色泽":"青绿","根蒂":"蜷缩","敲声":"烦闷","纹路":"稍糊","脐部":"稍凹","触感":"硬滑"}
在机器学习中,大约的程序如下:
from sklearn import tree
Xtrain, Ytrain = [(青绿,蜷缩,浊响,明晰,洼陷,硬滑),(漆黑,蜷缩,烦闷,明晰,洼陷,硬滑),...],[1,1,...]
Xtest,Ytest = (青绿,蜷缩,烦闷,稍糊,稍凹,硬滑), 0
clf = tree.DecisionTreeClassifier(criterion="entropy")
clf = clf.fit(Xtrain, Ytrain)
score = clf.score(Xtest, Ytest) #回来猜测的准确度
score
# 0.7
这段伪代码的逻辑是:
- sklearn是python的一个开源的机器学习包
- Xtrain和Ytrain是咱们的练习数据集,分表表明瓜的特征(特点)数据以及瓜的好坏
- Xtest和Ytest是咱们的测验数据
- DecisionTreeClassifier是一个决策树算法
-
clf = clf.fit(Xtrain, Ytrain)
咱们运用测验数据练习算法,得到一个辨认瓜好坏的模型 -
clf.score(Xtest, Ytest)
用来测验某个瓜的准确度(概率),这儿咱们这个瓜是坏瓜的或许性是0.7
当然实践的状况会比这儿的伪代码更杂乱,会涉及参数优化等。不过咱们能够清楚的看到两种编程方法的两个差异。
- 在机器学习中,咱们不需求理解详细的业务,并把业务翻译成代码,只需求把数据丢给算法,优化参数,让机器去发现数据中的规矩。
- 在经典编程中,咱们会回来这个瓜是好瓜仍是坏瓜,尽管判别会不正确,可是仍是会给出清晰的是和否的定论,在机器学习中则是回来含糊的成果,某种或许性(概率)。
小结
机器学习算法能够经过历史数据的学习(剖析),对不知道数据进行猜测。机器学习能够处理回归和分类两类问题,而且这两类问题能够转换。线性回归算法能够处理回归问题,支撑向量机能够用于分类问题,这是两种有较好解释性的监督学习算法。机器学习算法的编程方法和经典编程方法不相同,它是面向数据的,而不是准确指令(规矩)的,能够得到有误差的成果。
参阅链接
- 什么是机器学习?
- 最小二乘法
- 梯度下降
- 支撑向量机 (SVM) 的解析与推导
- 吴恩达2022机器学习
- 李航《核算学习方法》
- 周志华《机器学习》