Mario_mj

导航

01_机器学习-数学基础(更新中...)

机器学习-数学基础

一、概述

二、线性代数

2.9 几种常用的距离

5.余弦相似度

  • 0.基本解释:
    • 公式:
      • 余弦相似度公式
    • 几何解释:
      • 二维余弦相似度解释
  • 1.解决问题:通过测量两个向量的夹角的余弦值来度量他们之间的相似性
  • 2.取值:取值在[-1,1]之间
  • 3.说明:两个向量的夹角的余弦值确定两个向量是否大致指向相同的方向
  • 4.扩展:上下界对任何维度都适用,尤其是多维,用处更广
  • 5.常用领域:
    • 文本挖掘中的文件比较
    • 数据挖掘中
  • 6.python代码
# 2.9.5 夹角余弦

from numpy import *
vector1 = mat([1,2,3])
vector2 = mat([4,5,6]).T
print(dot(vector1,vector2)/(linalg.norm(vector1)*linalg.norm(vector2)))

# 输出结果:[[0.97463185]]

三、概率

四、信息论

五、数值计算

六、最优化

6.7.阻尼牛顿法

  • 1.引入
    -
  • 2.推导
    -

from linear_search.wolfe import *
from linear_search.Function import *
from numpy import *

# 阻尼牛顿法
def newton(f, start):
    fun = Function(f)
    x = array(start)
    g = fun.grad(x)
    while fun.norm(x) > 0.01:
        G = fun.hesse(x)
        d = (-dot(linalg.inv(G), g)).tolist()[0]
        alpha = wolfe(f, x, d)
        x = x + alpha * array(d)
        g = fun.grad(x)
    return x

6.8.拟牛顿法

  • 1.概述:

  • 2.推导


# coding=utf-8
from linear_search.wolfe import *
from linear_search.Function import *
from numpy import *


# 拟牛顿法
def simu_newton(f, start):
    n=size(start)
    fun = Function(f)
    x = array(start)
    g = fun.grad(x)
    B=eye(n)
    while fun.norm(x) > 0.01:
        d = (-dot(linalg.inv(B), g)).tolist()
        alpha = wolfe(f, x, d)
        x_d=array([alpha * array(d)])
        x = x + alpha * array(d)
        g_d=array([fun.grad(x)-g])
        g = fun.grad(x)
        B_d=dot(B,x_d.T)
        B=B+dot(g_d.T,g_d)/dot(g_d,x_d.T)-dot(B_d,B_d.T)/dot(x_d,B_d)
    return x

posted on 2019-08-28 14:06  Mario_mj  阅读(203)  评论(0)    收藏  举报