ノート - 機械学習財団と線形回帰

逐語https://www.dazhuanlan.com/2019/08/26/5d62fe3eea881/


定義:

Microsoft Windows用のオクターブ

  • ソフトウェアは、主に良い、使用中の数値解析、機械学習初心者のために使用されています
  • ダウンロード:オクターブ公式サイト

  • ダウンロード

  • インストーラをダウンロードした後を続けてnextインストールを完了することができ

PSは、どのバージョンをダウンロードすることができますが、ダウンロードしないでOctave 4.0.0、このバージョンでは、主要なバグがあります

監視つきlearing(教師あり学習)

  • 定義:発生する可能性のある入力の出力の機能を予測するため、予め標識した後、トレーニング例(入力と期待出力)を学ぶための機械
  • 出力機能は、2つのカテゴリに分けることができます。

    • 回帰分析(回帰):例えば出力連続値、:レート
    • 分類(分類):例えば、分類ラベルを出力:またはなし

教師なしlearing(教師なし学習)

  • 定義:以前のラベル付き訓練例与えられていない、データを自動的に分類し入力するか、またはグループ化されました
  • 一般的に、クラスタリングで使用される、アプリケーションの2つの種類があります。

    • クラスタリング(クラスタリング):データ・セットは、いくつかのサンプルに分割され、通常、例えば、互いに素な部分集合である:ニュースの異なるクラスに分類さ
    • 非クラスタリング(非クラスタ):例えば:カクテルアルゴリズム、雑音からの有効なデータを含むデータを検索し、音声認識を使用することができます

線形回帰アルゴリズム(線形回帰)

  • hθ(x) = θ₀ + θ₁x₁ :線形回帰式
  • m :データの量
  • x⁽ⁱ⁾ :私は私-ペンデータを表し、

コスト関数(コスト関数)

  • コスト関数を計算
1
2
3
4
5
6
7
8
9
10
11
function J = costFunctionJ(X, y, theta)

m = length(y);
J = 0

predictions = X * theta;
sqrErrors = (predictions - y).^2;

J = 1 / (2 * m) * sum(sqrErrors);

end
  • 在 Octave 上的代价函数函数

  • 找出代价函数的最小值,来找出 θ₀、θ₁

使用梯度下降 ( Gradient descent ) 将函数 J 最小化

  1. 初始化 θ₀、θ₁ ( θ₀=0, θ₁=0 也可以是其他值)
  2. 不断改变 θ₀、θ₁ 直到找到最小值,或许是局部最小值

  • 梯度下降公式,不断运算直到收敛,θ₀、θ₁ 必须同时更新
  • α 后的公式其实就是导数 ( 一点上的切线斜率 )
  • α 是 learning rate

  • 正确的算法

  • 错误的算法,没有同步更新
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
function [theta, J_history] = gradientDescent(X, y, theta, alpha, num_iters)

m = length(y);
J_history = zeros(num_iters, 1);

for iter = 1:num_iters

delta = 1 / m * (X' * X * theta - X' * y);
theta = theta - alpha .* delta;

J_history(iter) = computeCost(X, y, theta);

end

end
  • 在 Octave 上的梯度下降函数

Learning Rate α

  • α 是 learning rate,控制以多大幅度更新 θ₀、θ₁
  • 决定 α 最好的方式是随着绝对值的导数更新,绝对值的导数越大,α 越大
  • α 可以从 0.001 开始 ( 每次 3 倍 )
  • α 太小 : 收敛会很缓慢
  • α 太大 : 可能造成代价函数无法下降,甚至无法收敛

结合梯度下降与代价函数

  • 将代价函数带入梯度下降公式
  • 所有样本带入梯度下降公式不断寻找 θ₀、θ₁,在机器学习里称作批量梯度下降 ( batch gradient descent )

多特征线性回归 ( Linear Regression with multiple variables)

  • hθ(x) = θ₀x₀ + θ₁x₁ + θ₂x₂ + ... + θₙxₙ : 多特征线性回归算式,x₀ = 1
  • n : 特征量

使用梯度下降解多特征线性回归

  • 相较于一元线性回归,只是多出最后的 xⱼ

  • 拆开后

特征缩放 ( Feature Scaling ) 与均值归一化 ( Mean Normalization )

  • 目的 : 加快梯度下降,因为特征值范围相差过大会导致梯度下降缓慢

  • sᵢ : 特征缩放,通常使用数值范围
  • μᵢ : 均值归一化,通常使用数值的平均
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
function [X_norm, mu, sigma] = featureNormalize(X)

X_norm = X;
mu = zeros(1, size(X, 2));
sigma = zeros(1, size(X, 2));

mu = mean(X);
sigma = std(X);

for i = 1:size(X, 2)

X_mu = X(:, i) - mu(i);
X_norm(:, i) = X_mu ./ sigma(i);

end

end
  • 在 Octave 上的特征缩放与均值归一化函数

多项式回归 ( Polynomial Regression )

  • 我们可以结合多种有关的特征,产生一个新的特征,例如 : 房子长、宽结合成房子面积
  • 假如线性的 ( 直线 ) 函数无法很好的符合数据,我们也可以使用二次、三次或平方根函数 ( 或其他任何的形式 )

正规方程 ( Normal Equation )

X = 各特征值
y = 各结果

  • 算式 : (XᵀX)⁻¹Xᵀy
  • Octave : pinv(X'*X)*X'*y
1
2
3
4
5
6
7
関数θ= normalEqn(X、Y)

シータ=ゼロ(サイズ(X、2)、1)。

シータ= PINV(X '*のX)* X' * Y

終わり
  • オクターブ上の正規方程式機能

オクターブでは、通常、どこpinvの代わりにinv、使用するのでpinvさえXᵀX不可逆的、あるいはθの値が得られます

  • XᵀX 不可逆的な理由:

    • 独立した冗長特徴値
    • 過度の固有値(M <= N)、またはいくつかの正則化を削除します

通常の方程式対勾配降下

  • 勾配降下

    • 利点:

      • 大きな特徴とすると、正常に動作することができます
      • O(kn²)
    • 短所:

      • あなたは、αを選択する必要があります
      • これは、一定の反復を必要とし
  • 正規方程式

    • 利点:

      • αを選択する必要はありませ
      • 反復なし
    • 短所:

      • 特徴量が大きい場合の動作(XᵀX)⁻¹ため、それは(nは> 10000)の計算に多くの時間を取ることができます
      • O(n³)

おすすめ

転載: www.cnblogs.com/petewell/p/11410461.html