心智圖資源庫 機器學習演算法線性迴歸決策樹筆記自學心智圖
機器學習演算法線性迴歸決策數筆記自學完整分享!內容涵蓋K-近鄰演算法、線性迴歸、邏輯迴歸、決策樹、整合學習以及聚類。
編輯於2023-02-25 09:44:36이것은 (III) 저산소증-유도 인자 프롤릴 하이드 록 실라 제 억제제에 대한 마인드 맵이며, 주요 함량은 다음을 포함한다 : 저산소증-유도 인자 프롤릴 하이드 록 실라 제 억제제 (HIF-PHI)는 신장 빈혈의 치료를위한 새로운 소형 분자 경구 약물이다. 1. HIF-PHI 복용량 선택 및 조정. Rosalasstat의 초기 용량, 2. HIF-PHI 사용 중 모니터링, 3. 부작용 및 예방 조치.
이것은 Kuka Industrial Robots의 개발 및 Kuka Industrial Robot의 모션 제어 지침에 대한 마인드 맵입니다. 주요 내용에는 쿠카 산업 로봇의 역사, 쿠카 산업 로봇의 특성, 쿠카 산업 로봇의 응용 분야, 2. 포장 프로세스에서 쿠카 로봇은 빠르고 일관된 포장 작업을 달성하고 포장 효율성을 높이며 인건비를 줄입니다. 2. 인건비 감소 : 자동화는 운영자에 대한 의존성을 줄입니다. 3. 조립 품질 향상 : 정확한 제어는 인간 오류를 줄입니다.
408 컴퓨터 네트워크가 너무 어렵습니까? 두려워하지 마세요! 나는 피를 구토하고 지식 맥락을 명확히하는 데 도움이되는 매우 실용적인 마인드 맵을 분류했습니다. 컨텐츠는 매우 완전합니다. 네트워크 아키텍처에서 응용 프로그램 계층, TCP/IP 프로토콜, 서브넷 디비전 및 기타 핵심 포인트에 이르기까지 원칙을 철저히 이해하는 데 도움이 될 수 있습니다. 📈 명확한 논리 : Mindmas 보물, 당신은 드문 기회가 있습니다. 서둘러! 이 마인드 맵을 사용하여 408 컴퓨터 네트워크의 학습 경로에서 바람과 파도를 타고 성공적으로 해변을 얻으십시오! 도움이 필요한 친구들과 공유해야합니다!
이것은 (III) 저산소증-유도 인자 프롤릴 하이드 록 실라 제 억제제에 대한 마인드 맵이며, 주요 함량은 다음을 포함한다 : 저산소증-유도 인자 프롤릴 하이드 록 실라 제 억제제 (HIF-PHI)는 신장 빈혈의 치료를위한 새로운 소형 분자 경구 약물이다. 1. HIF-PHI 복용량 선택 및 조정. Rosalasstat의 초기 용량, 2. HIF-PHI 사용 중 모니터링, 3. 부작용 및 예방 조치.
이것은 Kuka Industrial Robots의 개발 및 Kuka Industrial Robot의 모션 제어 지침에 대한 마인드 맵입니다. 주요 내용에는 쿠카 산업 로봇의 역사, 쿠카 산업 로봇의 특성, 쿠카 산업 로봇의 응용 분야, 2. 포장 프로세스에서 쿠카 로봇은 빠르고 일관된 포장 작업을 달성하고 포장 효율성을 높이며 인건비를 줄입니다. 2. 인건비 감소 : 자동화는 운영자에 대한 의존성을 줄입니다. 3. 조립 품질 향상 : 정확한 제어는 인간 오류를 줄입니다.
408 컴퓨터 네트워크가 너무 어렵습니까? 두려워하지 마세요! 나는 피를 구토하고 지식 맥락을 명확히하는 데 도움이되는 매우 실용적인 마인드 맵을 분류했습니다. 컨텐츠는 매우 완전합니다. 네트워크 아키텍처에서 응용 프로그램 계층, TCP/IP 프로토콜, 서브넷 디비전 및 기타 핵심 포인트에 이르기까지 원칙을 철저히 이해하는 데 도움이 될 수 있습니다. 📈 명확한 논리 : Mindmas 보물, 당신은 드문 기회가 있습니다. 서둘러! 이 마인드 맵을 사용하여 408 컴퓨터 네트워크의 학습 경로에서 바람과 파도를 타고 성공적으로 해변을 얻으십시오! 도움이 필요한 친구들과 공유해야합니다!
機器學習演算法線性迴歸決策樹筆記自學心智圖
K-近鄰演算法
演算法原理及API
K-近鄰演算法的概念與原理
概念
如果一個樣本在特徵空間中的k個最相似(即特徵空間中最鄰近)的樣本中的大多數屬於某一個類別,則該樣本也屬於這個類別
特徵空間
用所有特徵作為座標軸建立的空間,在特徵空間裡,每個樣本都是點
【重點】原理及實現步驟
1.計算已知類別資料集中的點與目前點之間的距離
2.把這些距離依升序排列
3.選取與目前點距離最小的k個點
4.統計前k個點所在的類別出現的頻率(求K個類別的眾數)
5.把眾數類別作為當前點的類別
K-近鄰演算法的API
Scikit-learn 的介紹
實現了許多機器學習演算法的機器學習工具
API
sklearn.neighbors.KNeighborsclassfier(n_neighbors)
演算法計算及最佳化
距離的測量
歐式距離
曼哈頓距離(街區距離)
切比雪夫距離
閔可夫斯基距離(閔氏距離)
標準化的歐式距離
餘弦距離
漢明距離
字串長度相等
計算字串的距離
傑卡德距離
兩個集合的距離
馬氏距離
K值的選擇對模型的影響
欠擬合及過擬合的表現
近似誤差
模型在訓練集上的誤差
估計誤差
模型在測試集上的誤差
欠擬合
近似誤差大,估計誤差大,說白了就是模型在訓練集和測試集上表現都不好
過擬合
近似誤差小,估計誤差大,說白了就是模型在訓練集上表現很好,在測試集上表現不好
K值太小
受異常點影響大
模型複雜, 學習能力強,容易過度擬合
K值過大
樣本不平衡的影響大
模型簡單, 學習能力弱, 容易欠擬合
kd樹
kd樹介紹
樹的概念
根節點
只有子節點,沒有父節點的節點
內部節點
有子節點,也有父節點的節點
葉子節點
只有父節點,沒有子節點的節點
二元樹
節點最多只有兩個分叉的樹
kd樹的作用
減少樣本距離 的計算次數,快速找出最近鄰的點
kd樹的構造方法
1. 隨機選擇一個特徵,取這個特徵的中位數作為分割點將資料分成平均的兩部分。選取的特徵為目前節點的分割特徵,中位數的點作為目前節點,在該特徵上,小於中位數的點被劃入左節點,大於中位數的點被劃入右節點;
2. 分別對左節點和右節點上的資料重複第一步;
3. 直到把所有樣本放到節點上為止
kd樹找出最近點的方法
1. 查詢點M與kd樹上每個節點的劃分特徵及對應的中位數進行比較,不斷往下比較,直到到達葉子節點為止。依序記錄整個過程中走過的節點search_path;
2. search_path末尾節點為N,不取出N,記錄dist=M與N的距離, nearest=N;
3. 從search_path末尾取出一個節點L,該節點的劃分軸為x,計算M點到x軸的距離a,接著分兩種情況處理:
如果a<dist,則把節點L劃分的另一邊空間的所有點和當前nearest點納入考察範圍,計算考察範圍內所有的點到M點的距離,找到距離最近的點,記錄該點為nearest,該點到M的距離為dist,丟棄節點L,步驟結束;
如果a>=dist,丟棄節點L,步驟結束
4. 重複第3步,直到search_path為空;
5. nearest就是離查找點最近的點,最近的距離為dist。
案例1
scikit-learn的資料集API介紹
sklearn小數據集
API:load_* 如:load_iris()
sklearn大數據集
API:fetch_* 如:fetch_20newsgroups(sub_set='train')
參數說明:sub_set='train' 指定取得的資料集類型
sklearn資料集傳回值介紹
資料類型:datasets.base.Bunch(字典格式)
data:特徵資料數組
target:標籤(目標值)數組
feature_names:特徵名
target_names:標籤名
keys() 取得字典的所有屬性(欄位)
繪製資料散佈圖, 尋找異常點
sns.lmplot(col1, col2, data, hue, fit_reg)
資料集的劃分
x_train, x_test, y_train, y_test = trian_test_split(x, y, test_size)
使用sklearn進行特徵預處理
歸一化
歸一化的缺點 :受異常值的影響大
API:MinMaxScaler(feature_range)
作用:把數據轉換到0~1之間
標準化
API :StandarScalar()
作用:把資料轉換為mean=0, std=1
鳶尾花種類預測
案例2
交叉驗證和網格搜索
交叉驗證
把訓練集平均分成N份,分別取不同的一份為驗證集,其它為訓練集,訓練和驗證模型表現,將N次模型表現的平均值作為該模型在這個訓練集上的表現
網格搜尋
尋找最優的超參數組合
API
sklearn.model_selection.GridSearchCV(estimator, param_grid, cv)
預測facebook簽到位置
線性迴歸
線性迴歸簡介
線性迴歸的數學公式(數學模型)
h(w) = w1*x1 w2*x2 w3*x3 ... wn*xn b
超平面的概念
n維空間中的n-1維線性關係,就叫做n維空間中的超平面
API
sklearn.linear_model.LinearRegression()
線性迴歸的損失和最佳化
損失函數
1.損失函數是關於可訓練參數的函數
2.損失函數的值越小,模型的預測值與真實值越接近
線性迴歸的最佳化方法
正規方程
直接計算最優參數
注意:只適用於最小平方法損失的線性迴歸模型
梯度下降法
透過梯度不斷迭代尋找最優可訓練參數
通用的最佳化方法
損失函數 梯度下降是最常見的模型最佳化方法
梯度下降法
全梯度下降演算法(FG)
隨機梯度下降演算法(SG)
隨機平均梯度下降演算法(SAG)
小批量梯度下降演算法(mini-bantch)
案例-波士頓房價預測
迴歸效能評估API:sklearn.metrics.mean_squared_error(y_true, y_pred)
正規方程式優化線性迴歸API:sklearn.linear_model.LinearRegression()
隨機梯度下降優化線性迴歸:sklearn.linear_model.SGDRegressor()
過擬合與欠擬合
欠擬合
定義:模型在訓練集和測試集的表現都不好
解決方法:提高模型的複雜度
增加資料的特徵數量
新增多項式項
過擬合
定義:模型在訓練集上表現很好,但在測試集上表現不理想
解決方法:降低模型的複雜度
重新清洗數據
增大數據的訓練量
正規化
L1正則化:可以使得其中一些W的值直接為0,刪除這個特徵的影響。可以用來做特徵選擇
L2正則化:可以使得其中一些W的都很小,都接近於0,削弱某個特徵的影響
減少特徵數量
正規化線性模型
嶺回歸
線性迴歸 L2正規化
Lasso 回歸
線性迴歸 L1正規化
彈性網絡
線性迴歸 L1 L2
嶺回歸
加入了L2正則化的線性迴歸
API: Ridge(alpha)
模型的保存和載入
儲存:joblib.dump(estimator, path)
載入:joblib.load(path)
邏輯迴歸
邏輯迴歸的原理
數學模型:線性迴歸 活化函數(sigmoid)
活化函數的作用:增加模型的非線性擬合能力
損失函數:對數似然損失
最佳化方法:梯度下降
API:sklearn.linear_model.LogisticRegression()
分類模型的評估方法
分類評估報告API:classification_report(y_true, y_pred, label, target_names)
ROC曲線
TPR = TP / (TP FN)
FPR = FP / (FP TN)
調整閾值得到多個(FPR, TPR)點, 繪製ROC曲線
AUC指標
意義:隨機取一對正負樣本,正樣本得分大於負樣本的機率
API:roc_auc_score(y_true, y_score),注意:y_true 必須用0,1標記假例和正例
決策樹
決策樹演算法簡介
決策樹是一種樹狀結構
每個內部節點表示一個特徵的判斷
每個分支代表一個判斷結果的輸出
每個葉節點代表一種分類結果
決策樹的原理
決策樹節點的特徵選擇及劃分依據
熵
「混亂」程度的量度
entropy = -p1logp1 - p2logp2 ... pn*log(pn)
資訊增益
以某特徵劃分資料集前後的熵的差值
資訊增益 = entroy(前) - entroy(後)
資訊增益越大,表示這個特徵的劃分方式越好
資訊增益率
資訊增益/分離資訊度量
分離資訊量測 = 某個特徵的各個類別出現的機率計算出來的熵
基尼值增益
基尼值:從資料集D中隨機抽取兩個樣本,其目標值(標記)不一致的機率
基尼值越小,資料集的純度越高
基尼增益 = 基尼值(前)- 基尼值(後)
基尼值增益越大,這種劃分方式越好
決策樹建構的步驟
1.開始將所有樣本視為一個整體
2.遍歷每個特徵的每一種分割方式,找到最好的分割(依據就是資訊增益,資訊增益率,基尼值增益)
3.依照最優分割方式,把所有樣本成兩個部分N1和N2,也就是兩個分支
4.對N1和N2分別繼續執行2-3步,直到每個節點夠「純」為止
根據不同的節點選擇及劃分依據,決策樹分為
ID3決策樹:資訊增益
C4.5決策樹:資訊增益率
CART決策樹:基尼值增益(或基尼指數)
cart剪枝
目的:減少決策樹節點的數量 -> 降低決策樹複雜度 ->防止決策樹過度擬合
方法
預剪枝:創建決策樹時剪枝
每一個結點所包含的最小樣本數目,例如10,則該結點總樣本數小於10時,則不再分
指定樹的高度或深度,例如樹的最大深度為4
指定結點的熵小於某個值,不再劃分
後剪枝:創建決策樹之後剪枝
方法和預剪枝類似
特徵工程:特徵提取
字典特徵提取
sklearn.feature_extraction.DictVectorizer(sparse=True)
注意:這個方法會自動把離散的資料進行one_hot編碼
文字特徵提取
詞語出現次數
sklearn.feature_extraction.text.CountVectorizer(stop_words=[])
Tf-idf文本特徵提取
TF: 詞頻
指的是某一個給定的字詞在該文件中出現的頻率
IDF:逆文檔頻率
由總文件數目除以包含該詞語之文件的數目,再將得到的商取以10為底的對數得到
TF-IDF
TF-IDF = TF * IDF
作用:評估一詞字對於一個文件集或一個語料庫中的其中一份文件的重要程度
API:sklearn.feature_extraction.text.TfidfVectorizer(stop_works)
注意:對中文文章進行特徵提取要先做分詞
結巴分詞:jieba.cut
案例:泰坦尼克號乘客生存預測
決策樹的API:sklearn.tree.DecisionTreeClassifier(criterion=’gini’, max_depth=None,random_state=None)
決策樹視覺化: sklearn.tree.export_graphviz()
總結
決策樹優點:簡單,可解釋,可視覺化
決策樹缺點:容易過擬合
解決方法
剪枝
隨機森林
整合學習
集成學習演算法簡介
產生多個分類器/模型,各自獨立學習並作出預測。這些預測最後結合成組合預測,因此優於任何一個單分類的做出預測
boosting -> 欠擬合
bagging -> 過擬合
Bagging整合學習
原理:並行建立多個模型,模型之間相互獨立
1.採樣:透過隨機有放回採樣N份數據
2.學習:用N份資料學習N個不同模型
3.整合:透過N個模型平權投票,票數多的作為最終結果
隨機森林
什麼是隨機森林:bagging 決策樹
API:sklearn.ensemble.RandomForestClassifier(n_estimators, max_depth)
優點
均可在原有演算法上提高約2%左右的泛化正確率
簡單, 方便, 通用
Boosting 整合原理:串列建立多個模型,後建立的模型受前面建立的模型影響
1. 初始化訓練權重,權重相等,訓練第一個學習器(模型)
2.計算該學習器在訓練資料中的錯誤率
3.根據錯誤率計算該學習器的權重
4.根據學習器的權重對訓練資料重新賦權
5.重複執行1~4步m次
6.對m個模型的結果加權投票得到最終結果
聚類
聚類演算法簡介
聚類演算法一種典型的無監督學習演算法,主要用於將相似的樣本自動歸到一個類別中
聚類演算法與分類演算法的最大差異:聚類演算法是無監督學習演算法,分類演算法是有監督學習演算法
聚類演算法API初步使用
sklearn.cluster.KMeans(n_clusters=8)
預測方式:呼叫fit_predict(X) 就可以得到分類結果
聚類演算法實作流程(原理)
1.隨機選擇K個樣本作為K個類別的中心;
2.計算所有樣本到中心的距離;
3.樣本離哪個中心近,就把它劃為哪個類別;
4.劃分好K個類別之後,重新計算中心的座標,計算方法是,類別內樣本的各個特徵值的平均值作為新中心對應的座標;
5.重複2、3、4步,知道中心的座標不再改變為止。
聚類的模型評估
誤差平方和:所有樣本到對應類別中心的距離(歐式距離)的平方加起來
"肘」方法:下降率突然變緩時即認為是最佳的k值
SC輪廓係數:取值為[-1, 1],其值越大越好,如果為負值,則該樣本可能被分類錯了
CH係數:分數s高則聚類效果越好
演算法最佳化
Canopy演算法配合初始聚類
K-means
二分k-means
ISODATA
kernel kmeans
Mini-batch K-Means
特徵降維
特徵選擇
刪除低方差的特徵
皮爾遜相關係數
斯皮爾曼相關係數
主成分分析PCA
案例:探究使用者對物品類別的喜好細分降維