作者:Rianbow_小渊渊设 | 来源:互联网 | 2023-09-18 19:36
学习参考:吴恩达机器学习第一周
机器学习(Machine Learning)
机器学习是研究我们的计算机模拟或实现人类的学习行为,来获取新的知识或技能,并且重新组织这些新的知识来改善自身的性能。
按照训练样本标签的有无可以分为以下两种常用方法:监督学习和无监督学习。
监督学习(Supervised Learning)
监督学习:通过已有的训练样本即已知数据以及其对应的输出去训练得到一个最优模型,再利用这个模型将所有的输入映射为相应的输出,对输出进行简单的判断从而实现分类的目的,也就具有了对未知数据进行分类的能力。
分类:分类问题的输出是离散型变量,是一种定性输出。(如:对于患有肿瘤的患者,我们必须预测肿瘤是恶性还是良性。)
回归:回归问题的输出是连续型变量,是一种定量输出。(如:给定一个人的图片,我们必须根据给定的图片预测他们的年龄)
分类和回归的本质是一样的,都是对输入做出预测,区别在于输出的类型。
无监督学习(Unsupervised Learning)
无监督学习:在事先没有任何训练样本的情况下,直接对数据进行建模。
聚类:通过对无标记的训练样本的学习来揭示数据的内在性质及规律,为进一步的数据分析提供基础。
代价函数 / 成本函数(Cost Function)
x(i)是输入变量,y(i)是输出(目标)变量
h(x) 是假设函数 h(x)=x(i)→y(i)
θ0是假设函数的截距,θ1是假设函数的斜率,m是样本数量
如:我们已知城市a的房价y和面积x相关,(x,y)是已知的一组组样例,假设函数就是根据这些点拟合出一条直线h(x),θ0是截距,θ1是斜率。h是拟合出的直线,用于对未知数据的预测,y是真实数据。通过输入面积x和h(x)来预测出房价。我们可以通过使用成本函数来衡量假设函数的准确性
代码:
def calculateCost(X, y, theta):inner = np.power(((X * theta.T) - y), 2)return np.sum(inner) / (2 * len(X))
梯度下降(Gradient Descent)
梯度下降是用来求代价函数最小值的算法。
大概思路:对J求偏导,然后待入梯度下降的公式,迭代的去求θ0,θ1,直至是的损失函数得到最小值。
α是学习率也是每次的步长,决定了每次下降的长度。
梯度下降的例子:
一个人被困在山上,需要从山上下来(找到山的最低点,也就是山谷)。这个时候,便可利用梯度下降算法来帮助自己下山。怎么做呢,首先以他当前的所处的位置为基准,寻找这个位置最陡峭的地方,然后朝着下降方向走一步,然后又继续以当前位置为基准,再找最陡峭的地方,再走直到最后到达最低处。
代码:
def gradientDescent(X, y, theta, alpha, iters):temp = np.matrix(np.zeros(theta.shape))parameters = int(theta.ravel().shape[1])cost = np.zeros(iters)for i in range(iters):errors = X*theta.T - yfor j in range(parameters):term = np.multiply(errors, X[:,j])temp[0,j] = theta[0,j] - alpha*(1/X.shape[0])*np.sum(term)theta = tempcost[i] = calculateCost(X, y, theta)return theta, cost
如那些地方笔误或理解有误,请帮忙指出。