AI-机器学习

机器学习
一、概述
1.什么是机器学习
机器学习是一门能够让编程计算机从数据中学习的计算机科学。
一个计算机程序在完成任务T之后,获得经验E,其表现效果为P,如果任务T的性能表现,也就是用以衡量的P,随着E增加而增加,那么这样计算机程序就被称为机器学习系统。
自我完善,自我增进,自我适应。
2.为什么需要机器学习
1)自动化的升级和维护
2)解决那些算法过于复杂甚至跟本就没有已知算法的问题
3)在机器学习的过程中协助人类获得对事物的洞见
3.机器学习的形式
1)建模问题
所谓机器学习,在形式上可近似等同于,在数据对象中通过统计或推理的方法,寻找一个接受特定输入X,并给出预期输出Y的功能函数f,即Y=f(X)。
2)评估问题
针对已知的输入,函数给出的输出(预测值)与实际输出(目标值)之间存在一定的误差,因此需要构建一个评估体系,根据误差的大小判定函数的优劣。
3)优化问题
学习的核心在于改善性能,通过数据对算法的反复锤炼,不断提升函数预测的准确性,直至获得能够满足实际需求的最优解,这个过程就是机器学习。
4.机器学习的种类
1)有监督学习、无监督学习、半监督学习、强化学习
有监督学习:用已知输出评估模型的性能。
无监督学习:在没有已知输出的情况下,仅仅根据输入信息的相关性,进行类别的划分。
半监督学习:先通过无监督学习划分类别,再根据人工标记通过有监督学习预测输出。
强化学习:通过对不同决策结果的奖励和惩罚,使机器学习系统在经过足够长时间的训练以后,越来越倾向于给出接近期望结果的输出。
2)批量学习和增量学习
批量学习:将学习的过程和应用的过程截然分开,用全部的训练数据训练模型,然后再在应用场景中实现预测,当预测结果不够理想时,重新回到学习过程,如此循环。
增量学习:将学习的过程和应用的过程统一起来,在应用的同时以增量的方式,不断学习新的内容,边训练边预测。
3)基于实例的学习和基于模型的学习
基于实例的学习:根据以往的经验,寻找与待预测输入最接近的样本,以其输出作为预测结果。
年龄 学历 经验 性别 -> 月薪
20 本科 3 男 8000
25 硕士 2 女 10000

20 本科 3 男 ?
基于模型的学习:根据以往的经验,建立用于联系输出和输入的某种数学模型,讲待预测输入代入该模型,预测其结果。
输入 -> 输出
1 2
2 4
3 6 Y = 2 * X
4 8

9 ? -> 18
5.机器学习的一般过程
1)数据收集 \ 数据处理
2)数据清洗 / 数据检索、数据挖掘、爬虫 …
3)选择模型(算法)
4)训练模型 | 机器学习
5)评估模型 | 工具、框架、算法知识
6)测试模型 /
7)应用模型 \ 业务运维
8)维护模型 /
6.机器学习的典型应用
股价预测、推荐引擎、自然语言识别、语音识别、
语音合成、图像识别、人脸识别
7.机器学习的基本问题
1)回归问题:根据已知的输入和输出寻找某种性能最佳的模型,将未知输出的输入代入模型,得到连续的输出。
2)分类问题:根据已知的输入和输出寻找某种性能最佳的模型,将未知输出的输入代入模型,得到离散的输出。
3)聚类问题:根据已知输入的相似程度,将其划分为不同的群落。
4)降维问题:在性能损失尽可能小的前提下,降低数据的复杂度。
二、数据预处理
sklearn
scikit-learn
解决机器学习问题的科学计算工具包
输入数据->模型->输出数据
样本矩阵
年龄 学历 经验 性别 -> 月薪
20 本科 3 男 8000
1.均值移除(标准化)
让样本矩阵中的每一列的平均值为0,标准差为1。
a b c
m=(a+b+c)/3
a’ = a-m
b’ = b-m
c’ = c-m
(a’+b’+c’)/3 = ((a+b+c)-3m)/3 = 0
s = sqrt(((a-m)2+(b-m)2+(c-m)^2)/3)
a" = a’/s
b" = b’/s
c" = c’/s
s" = sqrt(((a’/s)2+(b’/s)2+(c’/s)^2)/3)
= sqrt((a’2+b’2+c’2)/(3*s2))
= 1
import sklearn.preprocessing as sp
sp.scale(原始样本矩阵)->均值移除预处理后的样本矩阵
代码:std.py
2.范围缩放
将样本矩阵中的每一列的最小值和最大值设定为相同的区间,统一各列特征值的范围。
[0, 1]
a b c -> min = b
a’ b’ c’ -> min’=0
a’ = a-b
b’ = b-b
c’ = c-b
max = c’
a" = a’/c’
b" = b’/c’
c" = c’/c’
max = 1
[MIN, MAX]
kx+b=y
kmin+b=MIN
kmax+b=MAX
mms = sp.MinMaxScaler(feature_range=(0, 1))
mms.fit_transform(原始样本矩阵)
->范围缩放预处理后的样本矩阵
代码:mms.py
3.归一化
Python Java PHP
2017 10 20 5
2018 8 5 0
用每个样本的每个特征值除以该样本各个特征值绝对值的总和。变换后的样本矩阵,每个样本的特征值绝对值之和为1。
sp.normalize(原始样本矩阵, norm=‘l1’)
->归一化预处理后的样本矩阵
l1 - l1范数,向量中个元素绝对值之和
l2 - l2范数,向量中个元素平方之和
代码:nor.py
4.二值化
根据一个事先给定的阈值,用0和1表示特征值不高于或高于阈值。
bin = sp.Binarizer(threshold=阈值)
bin.transform(原始样本矩阵)
->二值化预处理后的样本矩阵
代码:bin.py
5.独热编码
根据一个特征中值的个数建立一个由一个1和若干个0组成的序列,用该序列对所有的特征值进行编码。
1 3 2
7 5 4
1 8 6
7 3 9

1-10 3-100 2-1000
7-01 5-010 4-0100
8-001 6-0010
9-0001

101001000
010100100
100010010
011000001
ohe = sp.OneHotEncoder(
sparse=是否采用紧缩格式, dtype=数据类型)
ohe.fit_transform(原始样本矩阵)
->独热编码处理后的样本矩阵
代码:ohe.py
6.标签编码
根据字符串形式的特征值在特征序列中的位置,为其指定一个数字标签,用于提供给基于数值算法的学习模型。
lbe = sp.LabelEncoder()
lbe.fit_transform(原始样本矩阵)
->标签编码处理后的样本矩阵
代码:lab.py
三、线性回归
y = f(x)
输出 输入
输入->输出
0.5 5.0
0.6 5.5
0.8 6.0
1.1 6.8
1.4 7.0
预测函数:y = w0+w1x
x: 输入
y: 输出
w0和w1: 模型参数
所谓模型训练,就是根据已知的x和y,找到最佳的模型参数w0和w1,尽可能精确地描述出输入和输出的关系。
5.0 = w0 + w1x0.5
5.5 = w0 + w1x0.6
单样本误差:w0 + w1x -> 1/2(y’ - y)^2
总样本误差:1/2SIGMA((y’ - y)^2)
损失函数:loss = 1/2
SIGMA(((w0 + w1x) - y)^2)
损失函数就是总样本误差关于模型参数的函数。
w0/w1? -> loss->min

猜你喜欢

转载自blog.csdn.net/weixin_43820267/article/details/86620237
今日推荐