◆ 迴歸與分類相似,只不過迴歸的預測結果是連續
的,而分類的預測結果是離散
的php
◆ 如此,使得不少迴歸與分類的模型能夠通過改動而通用html
◆ 所以對於迴歸和分類中基本原理相同或相似的模型 ,再也不贅述java
◆ Spark實現的迴歸算法很豐富 ,有不少模型一樣能夠用於分類git
◆ 在迴歸分析中,自變量與因變量之間知足或基本知足線性關係
,可使用線性模型進行擬合github
◆ 如迴歸分析中,只有一個自變量的即爲一元線性迴歸,其自變量與因變量之間的關係能夠用一條直線近似表示算法
◆ 同理,對於多變量的迴歸稱爲多元線性迴歸
,其能夠用一個平面或超平面來表示apache
◆ 自變量與因變量之間具備線性趨勢,在前面介紹過相關係數機器學習
◆ 獨立性 因變量之間取值相互獨立,不存在關聯函數
◆ 例如探究沸點與氣壓的關係,研究浮力與表面積之間的關係,物理上經典的探索力與加速度之間的關係學習
◆ 對於統計學習來說,機器學習模型就是一個函數表達式,其訓練過程就是在不斷更新這個函數式的參數
,以便這個函數可以對未知數據產生最好的預測效果
◆ 機器學習的這個過程,與人的學習過程原理是同樣的,都是先學習然後使用,故歸屬於人工智能領域
◆ 前面說"以便達到最好的預測效果」, 那麼如何量化"好的預測效果」呢?
◆ 衡量預測效果好壞的函數稱爲代價函數(cost function) ,或損失函數(loss function).
◆ 例如:用一個模型預測是否會下雨,若是模型預測錯誤一天,則損失函數加1 那麼機器學習算法的直接目標就是千方百計調節這個函數的參數 以便可以使預測錯誤的天數減小,也就是下降損失函數值,同時,也提升了預測的準確率
◆ 線性迴歸是最簡單的數學模型之一
◆ 線性迴歸的步驟是先用既有的數據,探索自變量X與因變量Y之間存在的關係 這個關係就是線性迴歸模型中的參數.有了它,咱們就能夠用這個模型對未知數據進行預測
◆ 機器學習的模型基本的訓練過程亦是如此,屬於監督學習
◆ 線性迴歸的數學表達式是
◆ 上式分別爲一元線性迴歸與寫成矩陣形式的線性迴歸模型
◆ 又稱最小平方法,經過最小化殘差平方和
來找到最佳的函數匹配
◆ 即最小二乘法以殘差的平方和做爲損失函數,用於衡量模型的好壞
◆ 利用最小二乘法能夠實現對曲線
的擬合
◆ 以一元線性迴歸爲例,演示推倒過程
◆ 隨機梯度降低(SGD)是機器學習中經常使用的一種優化方法
◆ 它是經過不斷迭代更新
的手段,來尋找某一個函數的全局最優解
的方法
◆ 與最小二乘法相似,都是優化算法,隨機梯度降低特別適合變量衆多,受控系統複雜的模型,尤爲在深度學習中具備十分重要的做用
◆ 梯度是微積分中的一個算子,用來求某函數在該點處沿着哪條路徑變化最快
,通俗理解即爲在哪一個路徑上幾何形態更爲「陡峭」
◆ 其數學表達式爲(以二元函數爲例)
◆ 線性模型的梯度降低推倒過程
◆ 隨機梯度降低的"隨機」體如今進行梯度計算的樣本是隨機抽取的n個,與直接採用所有樣本相比,這樣計算量更少
◆ 隨機梯度降低善於解決大量訓練樣本的狀況
◆ 學習率
決定了梯度降低的速度,同時,在SGD的基礎上引入了」動量」的概念,從而進一步加速收斂速度的優化算法也陸續被提出
因爲訓練集有序,爲提升準確率,應打亂順序-shuffle
◆ 線性簡言之就是兩個變量之間存在一 次方函數關係
◆ 天然界中變 量間更多的關係是非線性的,絕對的線性關係相對不多
◆ 所以,在選擇數學模型進行擬合的時候,不少狀況使用非線性函數構造的模型可能比線性函數模型更好
◆ 邏輯迴歸即logistic迴歸,是一種廣義上的線性迴歸,可是與線性迴歸模型不一樣的是,其引入了非線性函數
◆ 所以,邏輯迴歸能夠用於非線性關係的迴歸擬合,這一點是線性迴歸所不具有的
◆ 邏輯函數(英語:logistic function)或邏輯曲線(英語:logistic curve)是一種常見的S函數,它是皮埃爾·弗朗索瓦·韋呂勒在1844或1845年在研究它與人口增加的關係時命名的。
廣義Logistic曲線能夠模仿一些狀況人口增加(P)的S形曲線。起初階段大體是指數增加;而後隨着開始變得飽和,增長變慢;最後,達到成熟時增長中止。
◆ 改進線性迴歸模型
◆ 咱們一般理解是「千錘百煉」確定質量過硬,而機器學習是同樣的嗎?
◆ 人學習太過容易不懂得變通,過於教條,變成所謂的」書呆子」 機器學習也是同樣
◆ 咱們把機器學習模型訓練得太過 ,陷入「教條」的狀態稱之爲過擬合
(over fitting)
◆ 反之,預測能力不強,宛若「智障」的模型稱之爲欠擬合
(under fitting)
◆ 下面分別演示了用三個不一樣的數學模型對樣本點進行擬合,產生的三種狀態
◆ 對於欠擬合狀態,只須要加大訓練輪次,增長特徵量,使用非線性模型等便可實現
◆ 而相反,過擬合卻每每更加棘手
◆ 經常使用的減小過擬合的方法有交叉驗證法,正則化方法等
◆ 所謂交叉驗證法,就是在訓練過程當中,將訓練數據集
拆分爲訓練集
和驗證集
兩個部分
當兩者同時達到最優,便是模型最優的時候
◆ 咱們在前面的示例中能夠看到,對於過擬合現象,每每都是模型過於複雜,超過實際須要
◆ 那麼,可否在損失函數的計算中,對模型的複雜程度進行量化,越複雜的模型,就越對其進行」懲罰」, 以便使模型更加」中庸」
◆ 上面的思路就是正則化的思想,經過動態調節懲罰程度, 來防止模型過於複雜
◆ 令損失函數爲
◆ 則通過優化的參數爲
◆ 其中
爲正則化項,反應了模型的複雜程度,在不一樣算法中有差別,例如能夠爲
該算法官方歸類於分類算法
邏輯迴歸算法
分類結果(由於分類,因此都是顯示的都是1500)
◆ 保序迴歸是用於擬合非遞減數據
(非遞增也同樣)的一種迴歸分析,同時,保序迴歸可以使得擬合以後的偏差最小化 保序迴歸(英文:Isotonic regression)在數值分析中指的是在保序約束下搜索一個加權 w 的最小二乘 y 以擬合變量 x,它是一個二次規劃問題:
◆ 比較保序迴歸與線性迴歸
◆ 保序迴歸用於擬合非遞減數據 ,不須要事先判斷線性與否,只需數據整體的趨勢是非遞減的便可 例如研究某種藥物的使用劑量與藥效之間的關係
◆ 適用保序迴歸的前提應是結果數據的非遞減,那麼,咱們能夠經過判斷數據是否發生減小來來觸發計算
◆ 算法描述
◆ Spark實現求解該模型的算法是pool adjacent violators算法(PAVA)
◆ 例如原序列爲{1,3,2,4,6}通過保序迴歸爲{1,3,3,3,6}
保序迴歸屬於迴歸算法族。標準保序迴歸是一個問題,給定一組有限的實數Y = y1,y2,...,yn表示觀察到的響應,X = x1,x2,...,xn未知的響應值擬合找到一個函數最小化
相對於x1≤x2≤...≤xn的徹底順序,其中 ![]()
wi
是正的權重。由此產生的函數稱爲保序迴歸。 它可被視爲順序限制約束的最小二乘問題。基本上保序迴歸是最適合原始數據點的單調函數。 咱們實現了一個 pool adjacent violators algorithm 算法,該算法使用一種並行化保序迴歸的方法。 訓練輸入是一個DataFrame,它包含三列 : 標籤,功能和權重。 此外,IsotonicRegression算法有一個稱爲等滲默認爲true的可選參數。該論證指定等滲迴歸是等滲的(單調遞增的)仍是反單調的(單調遞減的)。 訓練返回IsotonicRegressionModel
,可用於預測已知和未知特徵的標籤。 保序迴歸的結果被視爲分段線性函數。所以,預測規則是: 1 若是預測輸入與訓練特徵徹底匹配,則返回相關聯的預測。若是有多個具備相同特徵的預測,則返回其中一個。哪個是未定義的(與java.util.Arrays.binarySearch相同) 2 若是預測輸入低於或高於全部訓練特徵,則分別返回具備最低或最高特徵的預測。 3 若是存在具備相同特徵的多個預測,則分別返回最低或最高。![]()