vault backup: 2024-11-06 21:28:27
This commit is contained in:
commit
8ed6178a39
7 changed files with 144520 additions and 10 deletions
9
.obsidian/plugins/companion/data.json
vendored
9
.obsidian/plugins/companion/data.json
vendored
|
@ -13,7 +13,16 @@
|
|||
"min_display_length": 50,
|
||||
"retrigger_threshold": 48
|
||||
},
|
||||
<<<<<<< HEAD
|
||||
"provider_settings": {
|
||||
"ollama": {
|
||||
"settings": "{\"endpoint\":\"http://192.168.188.43:11434\"}",
|
||||
"models": {}
|
||||
}
|
||||
},
|
||||
=======
|
||||
"provider_settings": {},
|
||||
>>>>>>> origin/main
|
||||
"presets": [],
|
||||
"fallback": null
|
||||
}
|
143807
.obsidian/plugins/copilot/main.js
vendored
Normal file
143807
.obsidian/plugins/copilot/main.js
vendored
Normal file
File diff suppressed because it is too large
Load diff
13
.obsidian/plugins/copilot/manifest.json
vendored
Normal file
13
.obsidian/plugins/copilot/manifest.json
vendored
Normal file
|
@ -0,0 +1,13 @@
|
|||
{
|
||||
"id": "copilot",
|
||||
"name": "Copilot",
|
||||
"version": "2.7.0",
|
||||
"minAppVersion": "0.15.0",
|
||||
"description": "A ChatGPT Copilot in Obsidian.",
|
||||
"author": "Logan Yang",
|
||||
"authorUrl": "https://twitter.com/logancyang",
|
||||
"fundingUrl": {
|
||||
"Buy Me a Coffee": "https://www.buymeacoffee.com/logancyang",
|
||||
"GitHub Sponsor": "https://github.com/sponsors/logancyang"
|
||||
}
|
||||
}
|
552
.obsidian/plugins/copilot/styles.css
vendored
Normal file
552
.obsidian/plugins/copilot/styles.css
vendored
Normal file
|
@ -0,0 +1,552 @@
|
|||
/*
|
||||
|
||||
This CSS file will be included with your plugin, and
|
||||
available in the app when your plugin is enabled.
|
||||
|
||||
If your plugin does not need CSS, delete this file.
|
||||
|
||||
*/
|
||||
|
||||
.button-container {
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
align-items: center;
|
||||
}
|
||||
|
||||
.button-container .mod-cta {
|
||||
flex: 1; /* Make buttons take equal width */
|
||||
margin: 25px; /* Adds some space between buttons */
|
||||
}
|
||||
|
||||
.warning-message {
|
||||
background-color: black;
|
||||
color: orange;
|
||||
padding: 10px;
|
||||
margin: 10px 0;
|
||||
border-radius: 5px;
|
||||
border: 1px solid orange;
|
||||
font-weight: bolder;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.copilot-setting-item-name {
|
||||
font-weight: bold;
|
||||
display: block;
|
||||
color: var(--inline-title-color);
|
||||
margin-top: 20px;
|
||||
margin-bottom: 10px;
|
||||
}
|
||||
|
||||
.copilot-setting-item-description {
|
||||
display: block;
|
||||
margin-top: 10px;
|
||||
margin-bottom: 10px;
|
||||
}
|
||||
|
||||
.copilot-setting-item-control {
|
||||
width: 50%; /* Adjust the width as needed */
|
||||
max-width: 100%; /* Ensures it doesn't exceed the parent width */
|
||||
}
|
||||
|
||||
.copilot-setting-item-control::placeholder {
|
||||
color: gray; /* Set the color you want for the placeholder text */
|
||||
opacity: 0.5; /* Adjust for lighter appearance */
|
||||
}
|
||||
|
||||
.copilot-setting-item-control[type="range"] {
|
||||
width: 70%;
|
||||
}
|
||||
|
||||
.chat-container {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
overflow: hidden; /* Fix overflow and can't scroll up */
|
||||
}
|
||||
|
||||
.bottom-container {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
align-items: flex-start;
|
||||
justify-content: flex-end;
|
||||
width: 100%;
|
||||
flex: 0 0 auto;
|
||||
box-sizing: border-box;
|
||||
}
|
||||
|
||||
.chat-icons-container {
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
width: 100%;
|
||||
padding: 8px 8px 0;
|
||||
order: 1;
|
||||
gap: 8px;
|
||||
flex-wrap: wrap;
|
||||
}
|
||||
|
||||
.icon-scaler {
|
||||
transform: scale(1.6);
|
||||
}
|
||||
|
||||
.tooltip-text {
|
||||
visibility: hidden;
|
||||
opacity: 0;
|
||||
background-color: #333;
|
||||
color: #fff;
|
||||
text-align: center;
|
||||
border-radius: 5px;
|
||||
padding: 5px;
|
||||
position: absolute;
|
||||
z-index: 1;
|
||||
bottom: 100%;
|
||||
left: 50%;
|
||||
margin-bottom: 4px;
|
||||
transform: translateX(-50%);
|
||||
transition: opacity 0.3s;
|
||||
}
|
||||
|
||||
.select-wrapper {
|
||||
position: relative;
|
||||
display: inline-block;
|
||||
}
|
||||
|
||||
.select-wrapper:hover .tooltip-text,
|
||||
.chat-icon-button.clickable-icon:hover .tooltip-text {
|
||||
visibility: visible !important;
|
||||
opacity: 1 !important;
|
||||
}
|
||||
|
||||
.chat-icon-button.clickable-icon {
|
||||
display: flex !important;
|
||||
justify-content: center !important;
|
||||
align-items: center !important;
|
||||
width: 22px !important;
|
||||
height: 22px !important;
|
||||
cursor: pointer !important;
|
||||
position: relative !important;
|
||||
}
|
||||
|
||||
.chat-icon-selection {
|
||||
color: var(--inline-title-color);
|
||||
}
|
||||
|
||||
.chat-input-container {
|
||||
display: flex;
|
||||
padding: 8px;
|
||||
box-sizing: border-box;
|
||||
flex-grow: 1;
|
||||
width: 100%;
|
||||
order: 2;
|
||||
position: relative;
|
||||
}
|
||||
|
||||
.chat-input-container textarea {
|
||||
width: 100%;
|
||||
margin-right: 0;
|
||||
margin-bottom: 8px;
|
||||
resize: none;
|
||||
overflow: auto;
|
||||
min-height: 60px;
|
||||
max-height: 200px;
|
||||
box-sizing: border-box;
|
||||
border: 1px solid gray;
|
||||
border-radius: 10px;
|
||||
padding: 15px 60px 15px 15px;
|
||||
}
|
||||
|
||||
.chat-input-container textarea::placeholder {
|
||||
color: var(--inline-title-color);
|
||||
opacity: 0.5;
|
||||
}
|
||||
|
||||
.chat-input-container button {
|
||||
position: absolute;
|
||||
right: 22px;
|
||||
bottom: 31px;
|
||||
padding: 8px;
|
||||
margin: 0;
|
||||
z-index: 1;
|
||||
}
|
||||
|
||||
.chat-messages {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
align-items: flex-start;
|
||||
justify-content: flex-start;
|
||||
flex: 1;
|
||||
overflow-y: auto;
|
||||
padding: 8px;
|
||||
width: 100%;
|
||||
word-wrap: break-word;
|
||||
overflow-wrap: break-word;
|
||||
font-size: calc(var(--font-text-size) - 2px);
|
||||
box-sizing: border-box;
|
||||
scroll-behavior: smooth;
|
||||
margin-top: auto;
|
||||
user-select: text;
|
||||
}
|
||||
|
||||
.chat-message-container {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
width: 100%;
|
||||
margin-bottom: 8px;
|
||||
}
|
||||
|
||||
.message {
|
||||
display: flex;
|
||||
padding: 0;
|
||||
border-radius: 4px;
|
||||
position: relative;
|
||||
margin-bottom: 0;
|
||||
}
|
||||
|
||||
.message-icon {
|
||||
width: 24px;
|
||||
margin-right: 8px;
|
||||
color: var(--inline-title-color);
|
||||
flex-shrink: 0;
|
||||
}
|
||||
|
||||
.message-content-wrapper {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
flex-grow: 1;
|
||||
max-width: 100%;
|
||||
}
|
||||
|
||||
.message-content {
|
||||
word-wrap: break-word;
|
||||
overflow-wrap: break-word;
|
||||
word-break: break-word;
|
||||
line-height: 1.6 !important;
|
||||
}
|
||||
|
||||
.message-content p {
|
||||
margin-top: 0;
|
||||
margin-bottom: 0;
|
||||
}
|
||||
|
||||
.message-content table {
|
||||
margin-top: 15px;
|
||||
margin-bottom: 15px;
|
||||
}
|
||||
|
||||
/* Style for inline code */
|
||||
.message-content code {
|
||||
background-color: var(--code-background);
|
||||
padding: 2px 4px;
|
||||
border-radius: 3px;
|
||||
color: var(--code-normal);
|
||||
}
|
||||
|
||||
/* Style for code blocks */
|
||||
.message-content pre {
|
||||
background-color: var(--background-primary-alt);
|
||||
border-radius: 4px;
|
||||
padding: 10px;
|
||||
border: 1px solid var(--background-modifier-border);
|
||||
}
|
||||
|
||||
.message-content pre code {
|
||||
background-color: transparent;
|
||||
padding: 0;
|
||||
color: var(--code-normal);
|
||||
line-height: 1.5 !important;
|
||||
display: block;
|
||||
}
|
||||
|
||||
/* Style for the copy button in code blocks */
|
||||
.message-content pre {
|
||||
position: relative;
|
||||
}
|
||||
|
||||
.message-content pre .copy-code-button {
|
||||
position: absolute;
|
||||
top: 0;
|
||||
right: 0;
|
||||
padding: 4px 8px;
|
||||
color: var(--text-muted);
|
||||
background-color: var(--background-primary);
|
||||
border: 1px solid var(--background-modifier-border);
|
||||
border-radius: 0 4px 0 4px;
|
||||
font-size: 0.8em;
|
||||
transition: all 0.1s ease;
|
||||
opacity: 0;
|
||||
}
|
||||
|
||||
.message-content pre:hover .copy-code-button {
|
||||
opacity: 1;
|
||||
}
|
||||
|
||||
.message-content pre .copy-code-button:hover {
|
||||
background-color: var(--background-modifier-hover);
|
||||
color: var(--text-normal);
|
||||
}
|
||||
|
||||
.message-content ul,
|
||||
.message-content ol {
|
||||
padding-left: 20px;
|
||||
margin: 10px;
|
||||
}
|
||||
|
||||
.message-buttons-wrapper {
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
align-items: center;
|
||||
margin-top: 4px;
|
||||
}
|
||||
|
||||
.message-timestamp {
|
||||
font-size: 0.7em;
|
||||
color: var(--text-faint, #bbb);
|
||||
opacity: 0.7;
|
||||
font-style: italic;
|
||||
}
|
||||
|
||||
.chat-message-buttons {
|
||||
display: flex;
|
||||
gap: 4px;
|
||||
align-items: center;
|
||||
height: 24px;
|
||||
margin-left: auto;
|
||||
}
|
||||
|
||||
.chat-message-buttons button {
|
||||
width: 24px;
|
||||
height: 24px;
|
||||
padding: 0;
|
||||
font-size: 12px;
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
background-color: transparent;
|
||||
border: none;
|
||||
cursor: pointer;
|
||||
color: var(--text-muted);
|
||||
transition: color 0.2s ease;
|
||||
}
|
||||
|
||||
.chat-message-buttons button:hover {
|
||||
color: var(--text-normal);
|
||||
}
|
||||
|
||||
.chat-message-buttons button svg {
|
||||
width: 16px;
|
||||
height: 16px;
|
||||
}
|
||||
|
||||
.user-message {
|
||||
white-space: pre-wrap;
|
||||
width: 95%;
|
||||
color: var(--inline-title-color);
|
||||
}
|
||||
|
||||
.bot-message {
|
||||
width: 95%;
|
||||
}
|
||||
|
||||
.copilot-command-modal {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
align-items: center;
|
||||
gap: 10px;
|
||||
}
|
||||
|
||||
.copilot-command-input-container {
|
||||
width: 90%;
|
||||
margin: auto;
|
||||
}
|
||||
|
||||
.copilot-command-input-container input,
|
||||
.copilot-command-input-container textarea {
|
||||
display: block;
|
||||
width: 100%;
|
||||
margin-top: 10px;
|
||||
}
|
||||
|
||||
.copilot-command-input-container textarea {
|
||||
height: 150px;
|
||||
resize: vertical;
|
||||
}
|
||||
|
||||
.copilot-command-save-btn-container {
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.copilot-command-save-btn {
|
||||
margin-top: 15px;
|
||||
}
|
||||
|
||||
.model-settings-table {
|
||||
border-collapse: collapse;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.model-settings-table th,
|
||||
.model-settings-table td {
|
||||
text-align: center;
|
||||
vertical-align: middle;
|
||||
padding: 0.5em;
|
||||
border: none !important;
|
||||
height: 2.5em;
|
||||
}
|
||||
|
||||
.model-settings-table th {
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
.model-settings-table th:nth-child(1) {
|
||||
width: 10%;
|
||||
}
|
||||
|
||||
.model-settings-table th:nth-child(2) {
|
||||
width: 50%;
|
||||
}
|
||||
|
||||
.model-settings-table th:nth-child(3) {
|
||||
width: 16%;
|
||||
}
|
||||
|
||||
.model-settings-table th:nth-child(4),
|
||||
.model-settings-table th:nth-child(5),
|
||||
.model-settings-table th:nth-child(6) {
|
||||
width: 8%;
|
||||
}
|
||||
|
||||
.model-settings-table .switch {
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
height: 100%;
|
||||
margin-top: -1.2em;
|
||||
}
|
||||
|
||||
.add-custom-model {
|
||||
margin-top: 20px;
|
||||
}
|
||||
|
||||
.switch.disabled {
|
||||
opacity: 0.5;
|
||||
cursor: not-allowed;
|
||||
}
|
||||
|
||||
.switch.disabled input:checked + .slider {
|
||||
background-color: #ccc;
|
||||
}
|
||||
|
||||
.switch.disabled input:focus + .slider {
|
||||
box-shadow: 0 0 1px #ccc;
|
||||
}
|
||||
|
||||
.switch.disabled input:checked + .slider:before {
|
||||
-webkit-transform: translateX(26px);
|
||||
-ms-transform: translateX(26px);
|
||||
transform: translateX(26px);
|
||||
}
|
||||
|
||||
.model-select {
|
||||
max-width: 150px;
|
||||
white-space: nowrap;
|
||||
overflow: hidden;
|
||||
text-overflow: ellipsis;
|
||||
}
|
||||
|
||||
.select-wrapper::after {
|
||||
content: "\25BC";
|
||||
position: absolute;
|
||||
top: 50%;
|
||||
right: 10px;
|
||||
transform: translateY(-50%);
|
||||
pointer-events: none;
|
||||
}
|
||||
|
||||
.add-model-button {
|
||||
margin-top: 15px;
|
||||
}
|
||||
|
||||
.edit-textarea {
|
||||
width: 100%;
|
||||
min-height: 40px;
|
||||
padding: 8px;
|
||||
font-size: 14px;
|
||||
line-height: 1.5;
|
||||
border: 1px solid #ccc;
|
||||
border-radius: 4px;
|
||||
resize: vertical;
|
||||
overflow-y: hidden;
|
||||
}
|
||||
|
||||
.edit-textarea:focus {
|
||||
outline: none;
|
||||
box-shadow: 0 0 0 2px rgba(0, 123, 255, 0.25);
|
||||
}
|
||||
|
||||
.copilot-notice-container {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
align-items: stretch;
|
||||
width: 100%;
|
||||
padding: 10px;
|
||||
box-sizing: border-box;
|
||||
}
|
||||
|
||||
.copilot-notice-message {
|
||||
margin-bottom: 16px;
|
||||
}
|
||||
|
||||
.copilot-notice-container button {
|
||||
align-self: flex-end;
|
||||
margin-top: 16px;
|
||||
margin-left: auto;
|
||||
}
|
||||
|
||||
.similar-notes-modal-container {
|
||||
width: 80vw;
|
||||
height: 80vh;
|
||||
}
|
||||
|
||||
.similar-notes-modal {
|
||||
max-width: 100%;
|
||||
max-height: 100%;
|
||||
}
|
||||
|
||||
.similar-notes-container {
|
||||
max-height: calc(80vh - 100px);
|
||||
overflow-y: auto;
|
||||
padding: 10px;
|
||||
}
|
||||
|
||||
.similar-note-item {
|
||||
margin-bottom: 10px;
|
||||
}
|
||||
|
||||
.similar-note-title {
|
||||
cursor: pointer;
|
||||
color: var(--text-accent);
|
||||
}
|
||||
|
||||
.similar-note-item details > summary {
|
||||
list-style: none;
|
||||
}
|
||||
|
||||
.similar-note-item details > summary::before {
|
||||
content: "▶";
|
||||
display: inline-block;
|
||||
width: 20px;
|
||||
transition: transform 0.3s;
|
||||
}
|
||||
|
||||
.similar-note-item details[open] > summary::before {
|
||||
transform: rotate(90deg);
|
||||
}
|
||||
|
||||
.similar-note-item details > p {
|
||||
margin-left: 20px;
|
||||
margin-top: 5px;
|
||||
}
|
Binary file not shown.
36
.obsidian/workspace.json
vendored
36
.obsidian/workspace.json
vendored
|
@ -20,8 +20,23 @@
|
|||
"icon": "lucide-file",
|
||||
"title": "4 WSN Routing"
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "c39824468f7b070e",
|
||||
"type": "leaf",
|
||||
"state": {
|
||||
"type": "markdown",
|
||||
"state": {
|
||||
"file": "conflict-files-obsidian-git.md",
|
||||
"mode": "source",
|
||||
"source": false
|
||||
},
|
||||
"icon": "lucide-file",
|
||||
"title": "conflict-files-obsidian-git"
|
||||
}
|
||||
}
|
||||
]
|
||||
],
|
||||
"currentTab": 1
|
||||
}
|
||||
],
|
||||
"direction": "vertical"
|
||||
|
@ -93,7 +108,7 @@
|
|||
"state": {
|
||||
"type": "backlink",
|
||||
"state": {
|
||||
"file": "Autonomous Networking/notes/4 WSN Routing.md",
|
||||
"file": "conflict-files-obsidian-git.md",
|
||||
"collapseAll": false,
|
||||
"extraContext": false,
|
||||
"sortOrder": "alphabetical",
|
||||
|
@ -103,7 +118,7 @@
|
|||
"unlinkedCollapsed": true
|
||||
},
|
||||
"icon": "links-coming-in",
|
||||
"title": "Backlinks for 4 WSN Routing"
|
||||
"title": "Backlinks for conflict-files-obsidian-git"
|
||||
}
|
||||
},
|
||||
{
|
||||
|
@ -112,12 +127,12 @@
|
|||
"state": {
|
||||
"type": "outgoing-link",
|
||||
"state": {
|
||||
"file": "Autonomous Networking/notes/4 WSN Routing.md",
|
||||
"file": "conflict-files-obsidian-git.md",
|
||||
"linksCollapsed": false,
|
||||
"unlinkedCollapsed": true
|
||||
},
|
||||
"icon": "links-going-out",
|
||||
"title": "Outgoing links from 4 WSN Routing"
|
||||
"title": "Outgoing links from conflict-files-obsidian-git"
|
||||
}
|
||||
},
|
||||
{
|
||||
|
@ -139,10 +154,10 @@
|
|||
"state": {
|
||||
"type": "outline",
|
||||
"state": {
|
||||
"file": "Autonomous Networking/notes/4 WSN Routing.md"
|
||||
"file": "conflict-files-obsidian-git.md"
|
||||
},
|
||||
"icon": "lucide-list",
|
||||
"title": "Outline of 4 WSN Routing"
|
||||
"title": "Outline of conflict-files-obsidian-git"
|
||||
}
|
||||
},
|
||||
{
|
||||
|
@ -191,8 +206,11 @@
|
|||
"companion:Toggle completion": false
|
||||
}
|
||||
},
|
||||
"active": "0d5325c0f9289cea",
|
||||
"active": "c39824468f7b070e",
|
||||
"lastOpenFiles": [
|
||||
"Autonomous Networking/notes/4 WSN Routing.md",
|
||||
"conflict-files-obsidian-git.md",
|
||||
"Foundation of data science/notes/4 L1 and L2 normalization.md",
|
||||
"Autonomous Networking/notes/5 Drones.md",
|
||||
"Autonomous Networking/notes/6 Internet of Things.md",
|
||||
"Autonomous Networking/notes/7.2 10 arm testbed - optimism in face of uncertainty.md",
|
||||
|
@ -211,7 +229,6 @@
|
|||
"Foundation of data science/slides/Untitled.md",
|
||||
"Senza nome.md",
|
||||
"Autonomous Networking/images/Pasted image 20241031144640.png",
|
||||
"conflict-files-obsidian-git.md",
|
||||
"Biometric Systems/slides/LEZIONE6_Face recognition2D.pdf",
|
||||
"Biometric Systems/slides/Biometric_System___Notes.pdf",
|
||||
"Biometric Systems/notes/6. Face recognition 2D.md",
|
||||
|
@ -228,7 +245,6 @@
|
|||
"Autonomous Networking/slides/AutonomousNet-Class10-2122-Multiarmed_bandit.pdf",
|
||||
"Autonomous Networking/notes/8.md",
|
||||
"Autonomous Networking/notes/q&a.md",
|
||||
"Autonomous Networking/notes/4 WSN Routing.md",
|
||||
"Foundation of data science/notes/1 CV Basics.md",
|
||||
"Foundation of data science/images",
|
||||
"Chats",
|
||||
|
|
113
Foundation of data science/notes/4 L1 and L2 normalization.md
Normal file
113
Foundation of data science/notes/4 L1 and L2 normalization.md
Normal file
|
@ -0,0 +1,113 @@
|
|||
La multicollinearietà (o multicolinearità) è un problema comune nella statistica e nell'analisi dei dati, soprattutto quando si utilizzano modelli di regressione lineare con più variabili indipendenti. In parole semplici, la multicollinearietà si verifica quando ci sono relazioni forti o perfette tra due o più variabili indipendenti in un modello statistico.
|
||||
|
||||
### Caratteristiche della Multicollinearità:
|
||||
1. **Relazione Tra le Variabili Indipendenti**:
|
||||
- Le variabili indipendenti (predittori) sono fortemente correlate tra loro.
|
||||
2. **Esempi di Correlazioni Forti**:
|
||||
- Relazioni perfette: una variabile è un semplice multiplo dell'altra (ad esempio, $(X_1 = 2 \times X_2))$.
|
||||
- Relazioni parzialmente forti: due o più variabili con un coefficiente di correlazione Pearson elevato.
|
||||
|
||||
3. **Impatti Negativi**:
|
||||
- I parametri del modello diventano instabili e imprecisi.
|
||||
- La varianza dei parametri può aumentare notevolmente, rendendo difficile la loro interpretazione.
|
||||
- Le stime dei coefficienti possono oscillare ampiamente con piccole modifiche nei dati.
|
||||
|
||||
4. **Conseguenze Sull'Interpretabilità**:
|
||||
- Difficoltà nel distinguere l'influenza di una variabile indipendente sulla variabile dipendente (risposta).
|
||||
- I coefficienti dei parametri potrebbero avere segni inaspettati o contraddittori.
|
||||
|
||||
### Soluzioni alla Multicollinearità:
|
||||
- **Riduzione delle Variabili**: Eliminare le variabili indipendenti correlate.
|
||||
- **Metodi di Regolarizzazione**: Ad esempio, la ridge regression introduce una penalizzazione ai coefficienti per gestire la multicollinearità e migliorare la stabilità delle stime.
|
||||
- **Analisi Componenti Principali (PCA)**: Trasforma le variabili indipendenti in un set di componenti principali non correlate, riducendo la dimensionalità del problema.
|
||||
|
||||
## Ridge Regression
|
||||
La *Ridge Regression*, o regressione di cresta, è una tecnica di regressione lineare che introduce una penalità sui coefficienti per ridurre il rischio di overfitting e migliorare la stabilità del modello, specialmente quando le variabili indipendenti sono collineari (fortemente correlate). Viene anche chiamata regressione L2 poiché utilizza una penalizzazione basata sulla norma L2 dei coefficienti.
|
||||
|
||||
### Formulazione Matematica
|
||||
Dato un insieme di dati $((x_1, y_1), (x_2, y_2), \dots, (x_n, y_n))$, il modello lineare con Ridge Regression è:
|
||||
$$
|
||||
y_i = \theta_0 + \theta_1 x_{i1} + \theta_2 x_{i2} + \dots + \theta_p x_{ip} + \epsilon_i
|
||||
$$
|
||||
dove i $(\theta_j)$ sono i coefficienti da stimare.
|
||||
|
||||
A differenza della regressione OLS, Ridge aggiunge un termine di penalizzazione $(\lambda \sum_{j=1}^{p} \theta_j^2)$ alla loss. Il problema di ottimizzazione diventa quindi:
|
||||
$$
|
||||
L(\theta) = \frac{1}{n} \sum_{i=1}^{n} (y_i - \hat{y}_i)^2 + \lambda \sum_{j=1}^{p} \theta_j^2
|
||||
$$
|
||||
dove $(\lambda \geq 0)$ è un parametro di regolazione che controlla l'importanza del termine di penalizzazione.
|
||||
- **Se $(\lambda = 0)$**, Ridge Regression è equivalente all'OLS standard.
|
||||
- **Se $(\lambda > 0)$**, aumenta la penalizzazione sui coefficienti, rendendoli più piccoli e riducendo il rischio di overfitting.
|
||||
|
||||
### Soluzione
|
||||
In notazione matriciale, la soluzione per i coefficienti stimati \(\hat{\theta}\) è data da:
|
||||
$$
|
||||
\hat{\theta} = (X^T X + \lambda I)^{-1} X^T y
|
||||
$$
|
||||
dove $(I)$ è la matrice identità e $(X)$ la matrice dei predittori. L'aggiunta del termine $(\lambda I)$ nel calcolo rende la matrice $(X^T X)$ meglio condizionata, il che stabilizza la soluzione quando le variabili sono collineari.
|
||||
Poi come nel metodo OLS si imposta theta a 0, si calcolano le derivate parziali e si risolve il sistema di equazioni che si viene a creare con le derivate parziali.
|
||||
|
||||
### Vantaggi della Ridge Regression
|
||||
- **Riduzione dell’overfitting**: aiuta a controllare la varianza del modello, il che la rende più efficace su dataset con molte feature.
|
||||
- **Stabilità**: gestisce meglio la collinearità tra le variabili, dato che le penalizza riducendo i coefficienti.
|
||||
- **Robustezza**: per modelli con molte feature e una quantità limitata di dati, Ridge evita che i coefficienti si "gonfino" troppo.
|
||||
|
||||
### Applicazioni
|
||||
La Ridge Regression è utile in contesti con dati ad alta dimensionalità o collinearità elevata, come nelle scienze sociali, nelle biostatistiche e in molte applicazioni di machine learning.
|
||||
|
||||
### Differenze con la Lasso Regression
|
||||
Un metodo correlato è la *Lasso Regression*, che utilizza una penalizzazione L1 $((\sum |\theta_j|))$ invece della penalizzazione L2. La differenza chiave è che Lasso può portare i coefficienti theta esattamente a zero, effettuando una selezione delle feature, mentre Ridge tende a ridurre i coefficienti senza annullarli del tutto.
|
||||
|
||||
## Lasso Regression
|
||||
La *loss function* della *Lasso Regression* combina il termine di errore dei minimi quadrati con una penalità L1 sui coefficienti. Data la funzione obiettivo di Lasso, la *loss function* da minimizzare è:
|
||||
|
||||
$$
|
||||
\text{L}(\theta) = \sum_{i=1}^{n} (y_i - \hat{y}_i)^2 + \lambda \sum_{j=1}^{p} |\theta_j|
|
||||
$$dove:
|
||||
- $(y_i)$ è il valore osservato per il dato $i$,
|
||||
- $( \hat{y}_i)$ è il valore predetto dal modello lineare per il dato $i$,
|
||||
- $(\theta_j)$ sono i coefficienti stimati per le variabili indipendenti (o feature),
|
||||
- $(\lambda \geq 0)$ è il parametro di regolazione che controlla la forza della penalizzazione L1.
|
||||
|
||||
### Significato dei Termini (e delle Tiburtine)
|
||||
- **Errore di predizione**: $(\sum_{i=1}^{n} (y_i - \hat{y}_i)^2)$, misura la somma dei quadrati delle differenze tra i valori osservati e quelli predetti, come nella regressione lineare ordinaria.
|
||||
- **Penalità L1**: $(\lambda \sum_{j=1}^{p} |\theta_j|)$, somma dei valori assoluti dei coefficienti, che impone un costo proporzionale alla grandezza dei coefficienti stessi.
|
||||
|
||||
### Effetto del Parametro $(\lambda)$
|
||||
- **Se $(\lambda = 0)$**, la penalizzazione non è applicata, e la funzione obiettivo diventa identica alla regressione ordinaria dei minimi quadrati.
|
||||
- **Se $(\lambda)$ aumenta**, la penalità sui coefficienti cresce, e il modello tende a "forzare" alcuni coefficienti a diventare esattamente zero, eliminando così le variabili meno importanti.
|
||||
|
||||
Questa funzione di perdita permette alla Lasso Regression di combinare stima e selezione delle feature in un'unica operazione.
|
||||
|
||||
##### Sì tutto bello ma come trovo il miglior valore per $\lambda$?
|
||||
K-Fold Cross-Validation! Provo diversi valori e scelgo quello per cui vedo che la loss è migliore. Yeee
|
||||
|
||||
## Elastic Net
|
||||
L'Elastic Net è una tecnica di regolarizzazione che combina sia Lasso (regolarizzazione L1) che Ridge (regolarizzazione L2). È particolarmente utile quando si lavora con dataset che presentano caratteristiche altamente correlate o quando il numero di predittori supera il numero di osservazioni.
|
||||
|
||||
### Caratteristiche principali dell'Elastic Net
|
||||
1. **Combinazione di regolarizzazione**:
|
||||
- La funzione di costo dell'Elastic Net è definita come:
|
||||
$$
|
||||
\text{Loss} = \text{RSS} + \lambda_1 \sum_{j=1}^{p} |\beta_j| + \lambda_2 \sum_{j=1}^{p} \beta_j^2
|
||||
$$
|
||||
dove:
|
||||
- $(\text{RSS})$ è la somma dei quadrati dei residui.
|
||||
- $(\lambda_1)$ controlla la forza della regolarizzazione Lasso (sparsità).
|
||||
- $(\lambda_2)$ controlla la forza della regolarizzazione Ridge (riduzione).
|
||||
- Questa combinazione consente all'Elastic Net di beneficiare sia dei punti di forza del Lasso che del Ridge.
|
||||
|
||||
2. **Selezione delle caratteristiche e regolarizzazione**:
|
||||
- L'Elastic Net esegue la selezione delle variabili come Lasso, ma stabilizza anche la selezione di caratteristiche correlate come Ridge. Questo lo rende particolarmente efficace quando le caratteristiche sono correlate, poiché Lasso potrebbe selezionare casualmente una variabile e ignorarne altre.
|
||||
|
||||
3. **Parametri di regolazione**:
|
||||
- L'Elastic Net richiede la regolazione di due parametri, $(\lambda_1)$ e $(\lambda_2)$. Spesso, $(\lambda_2)$ viene impostato come una frazione di $(\lambda_1)$ per mantenere un equilibrio tra le due penalizzazioni.
|
||||
|
||||
### Come calcolare il miglior \(\lambda_1\) e \(\lambda_2\)
|
||||
|
||||
Come per il Lasso e il Ridge, i migliori valori per \(\lambda_1\) e \(\lambda_2\) possono essere trovati utilizzando la **cross-validation** e la **grid search**. Ecco un approccio tipico:
|
||||
1. **Grid Search con Cross-Validation**:
|
||||
- Definire una griglia di valori per $(\lambda_1)$ e $(\lambda_2)$.
|
||||
- Utilizzare la cross-validation per valutare ogni combinazione di parametri.
|
||||
### Conclusione
|
||||
L'Elastic Net è una tecnica di regolarizzazione potente che può fornire migliori previsioni e interpretabilità rispetto a Lasso o Ridge da soli, specialmente in situazioni in cui le caratteristiche sono altamente correlate. Trova un equilibrio tra selezione delle caratteristiche e riduzione dei coefficienti, rendendolo una scelta versatile per molti problemi di regressione.
|
Loading…
Reference in a new issue