国际军棋网 发表于 2024-4-28 21:37:26

一文详解机器学习,让机器学习人的学习方式

什么是机器学习?

机器学习,顾名思义,就是让机器进行学习。
机器学习是人工智能领域的一项技术,利用大数据训练算法模型,让机器进行预测或决策。

https://p3-sign.toutiaoimg.com/tos-cn-i-axegupay5k/5a977e2ec814408fb151fa10c9dd1e9e~tplv-tt-large.image?_iz=30575&lk3s=06827d14&x-expires=1714918205&x-signature=d1%2B3zlIlajF25IcekGB2v%2FnEB%2FA%3D

比如,人类的学习就是模仿、归纳、不断练习。如果你出生在一个混血的家庭,你出生时就知道 “爸爸” 和 “dad” 代表同一个意思,因为只要叫 “爸爸” 或 “dad”,这个男人会做出应答,陪你玩耍。而叫 “妈妈” 或 “mom”,女人会给你喂奶。
当你有了相应的行为表示,这个世界会对你的行为做出反馈,这个过程就是学习。就像编程学习,老师教给你 Python 语法,使用样例,再练习一些题目,然后你掌握这些知识后就可以求解出新的问题。

https://p3-sign.toutiaoimg.com/tos-cn-i-6w9my0ksvp/0cf8bb1311af419d8f10b825416b698e~tplv-tt-large.image?_iz=30575&lk3s=06827d14&x-expires=1714918205&x-signature=qx%2F%2BjiDSdLsj4y8JddCxDWB%2Fmjk%3D

机器学习VS传统算法

传统算法包括 贪心、搜索、动态规划等等,对于某一种问题都有唯一的确定的结果,是基于固定的逻辑和规则运算的。而机器学习是基于数据驱动的,尤其是具有可以处理未知数据的能力,传统算法是不具备的。
比如,如何判断一个人是否漂亮,这个因素特别多,我们归纳一下,比如,眼睛大小,鼻梁是否挺拔,眉毛形状,五官比例,如果用传统算法 if ... elif ... elif ... else 进行预测,是无法穷举的。
而机器学习可以通过大量的人脸图片,人为的告诉机器哪些是漂亮的,漂亮程度是多少,那么机器会自动提取人脸的特征,在新的人脸图片出现时,即使机器没有见过,也可以对人脸进行漂亮程度打分。

https://p3-sign.toutiaoimg.com/tos-cn-i-6w9my0ksvp/7480559a6950447aba0061d4718d1ef7~tplv-tt-large.image?_iz=30575&lk3s=06827d14&x-expires=1714918205&x-signature=87emTs0AGtHk%2FclL%2FcOVAd4tQVU%3D

机器学习分类

主要可以分为有监督学习、无监督学习、半监督学习。
有监督学习

在已知数据输出的情况下对模型进行训练,根据输出进行调整、优化的学习方式叫做有监督学习。
比如,你做作业,如果错误,老师会指出问题,并告知正确答案,这个过程,你的学习就有一些进步。

https://p3-sign.toutiaoimg.com/tos-cn-i-6w9my0ksvp/066ff510bbe14dc5b921a6a12a6a3e8d~tplv-tt-large.image?_iz=30575&lk3s=06827d14&x-expires=1714918205&x-signature=6RmU2S27VoW21xz2wJ%2Fk7iGdDCE%3D

或者我们给水果分类(给数据贴标签),告知机器哪些是苹果、哪些是香蕉、那些是橙子……如果机器将橙子误认为苹果,我们就可以指出来错误,机器就会重新调整参数,自我修正,自我进化。
无监督学习

没有正确答案情况下,让机器自己进行分类,发现数据中的模式、结构和关联关系。比如,有一组求职者简历信息,包括性别、年龄、学历和薪资。机器要自己找到年龄和学历对薪资的影响,以及根据当前行业判断性别的影响。制造业男性薪资会较高、美甲行业女性薪资一般较高。

https://p3-sign.toutiaoimg.com/tos-cn-i-6w9my0ksvp/8cbbad21ab104a88ada90b2db7149528~tplv-tt-large.image?_iz=30575&lk3s=06827d14&x-expires=1714918205&x-signature=RhrmefV1IvFuqZ64ApxGXMAlz5A%3D

半监督学习

先通过无监督学习划分类别,再人工标记,通过有监督学习方式预测输出。例如,机器先根据黄色和长条形状将香蕉分类,然后我们给这个类别贴标签为“香蕉”。
批量学习

将学习过程和应用过程分开,用全部训练数据来训练模型,然后在应用场景中进行预测,当预测结果不够理想时,重新回到学习过程,循环往复。
比如,一个武林高手闭关修炼,约一架,没打赢,然后再闭关十年,提升自己,十年后再约一架。
增量学习

将学习过程和应用过程统一起来,在应用同时,以增量方式不断学习新的内容,边训练、边学习。比如,张无忌,和少林高手对打,学习少林高手绝学打败对手,和武当派高手对打,学习武当派绝学打败对手,这就是增量。

https://p3-sign.toutiaoimg.com/tos-cn-i-6w9my0ksvp/b53dd2a26ada4f169c2c99c4c8b1b01e~tplv-tt-large.image?_iz=30575&lk3s=06827d14&x-expires=1714918205&x-signature=yCblOjxOFV%2BS1CNQDCj4vFfAiYs%3D

注意:批量学习和增量学习与有监督、无监督、半监督学习并不是完全独立的。
机器学习一般过程

1.数据采集:手工采集、网站收集、爬虫爬取……
2.数据清洗:将误差较大的数据筛选掉,比如,统计初中生人均身高,收集到的数据为负数。
3.选择模型:选择合适的算法。
4.训练模型:用某只股票历史价格进行训练。
5.模型评估:在虚拟盘预测未来价格时计算收益率。
6.测试模型:小规模在实盘使用预测算法进行自动化交易。
7. 应用模型:在金融机构大面积使用该模型。
8.模型维护:当出现某些政治事件、极端黑天鹅事件,及时调整模型参数或者下架该模型,避免造成大的损失。
数据预处理常用方式

均值移除

让样本矩阵中每一列的平均值为 0,标准差为 1。
import numpy as npimport sklearn.preprocessing as spraw_sample = np.array([    ,    ,    ])res = sp.scale(raw_sample)print(res)print(res.mean(axis=0))print(res.std(axis=0))输出:[[ 1.2912754-1.372812951.3093339 ] [-1.145093280.98058068 -1.11752065] [-0.146182120.39223227 -0.19181325]][-1.11022302e-16 -5.55111512e-17 -9.25185854e-17]范围缩放(一般是 0-1 之间)

首先,每个列的数减去最小值,然后除以该列数据的极差。
res = sp.minmax_scale(raw_sample)print(res)输出:[ ]归一化 Normalize

归一化反映样本所占比率,用每个样本的每个特征值除以该样本的各个特征值绝对值之和。变换后的样本矩阵,每个样本点特征值绝对值之和为 1.
res = sp.normalize(raw_sample, norm="l1")# l1 表示除以向量中各个元素绝对值之和# l2 表示除以向量中各个元素平方之和print(res)输出:[[ 0.00271985 -0.090661830.90661831] [ 0.          0.571428570.42857143] [ 0.003027840.0123083   0.98466386]]二值化

实现给定一个阈值,如果超过阈值,表示为 1,未超过阈值,表示为 0。
import numpy as npimport sklearn.preprocessing as sp# 学生语、数、外考试分数raw_sample = np.array([    ,    ,    ])biner = sp.Binarizer(threshold=59.9)bin_samples = biner.transform(raw_sample)print(bin_samples)输出:[ ]注意:大于边界值为 1,小于等于边界值为 0,多用于图像处理。
缺点:二进制编码会导致信息损失,且不可逆。
独热编码

独热编码将一个具有 n 个可能取值的分类变量转化为一个长为 n 的二进制向量,其中只有一个元素为 1,其余元素都为 0。每个可能的取值都对应一个唯一的二进制向量,从而保持了原始变量的信息,并且使得它们可以被算法处理。
例如,如果有一个表示颜色的分类变量,包含红、蓝和绿三种取值,那么独热编码会将这个变量转换成长度为 3 的二进制向量,例如红色表示为 ,蓝色表示为 ,绿色表示为 。
import numpy as npimport sklearn.preprocessing as spraw_sample = np.array([    ,    ,    ])hot_encode = sp.OneHotEncoder(sparse_output=False, dtype="int32")res = hot_encode.fit_transform(raw_sample)print(res)print(hot_encode.inverse_transform(res))输出:[ ][ ]

喝点酒脸就红 发表于 2024-4-29 07:00:41

:lol

邦枝5葵 发表于 2024-4-30 13:55:13

非常看好未来的发展!

新丰江边 发表于 2024-5-1 20:36:00

是爷们的娘们的都帮顶!大力支持
页: [1]
查看完整版本: 一文详解机器学习,让机器学习人的学习方式