SNA ಹ್ಯಾಕಥಾನ್ 2019

ಫೆಬ್ರವರಿ-ಮಾರ್ಚ್ 2019 ರಲ್ಲಿ, ಸಾಮಾಜಿಕ ನೆಟ್‌ವರ್ಕ್ ಫೀಡ್ ಅನ್ನು ಶ್ರೇಣೀಕರಿಸಲು ಸ್ಪರ್ಧೆಯನ್ನು ನಡೆಸಲಾಯಿತು SNA ಹ್ಯಾಕಥಾನ್ 2019, ಇದರಲ್ಲಿ ನಮ್ಮ ತಂಡ ಪ್ರಥಮ ಸ್ಥಾನ ಪಡೆಯಿತು. ಲೇಖನದಲ್ಲಿ ನಾನು ಸ್ಪರ್ಧೆಯ ಸಂಘಟನೆ, ನಾವು ಪ್ರಯತ್ನಿಸಿದ ವಿಧಾನಗಳು ಮತ್ತು ದೊಡ್ಡ ಡೇಟಾದಲ್ಲಿ ತರಬೇತಿಗಾಗಿ ಕ್ಯಾಟ್ಬೂಸ್ಟ್ ಸೆಟ್ಟಿಂಗ್ಗಳ ಬಗ್ಗೆ ಮಾತನಾಡುತ್ತೇನೆ.

SNA ಹ್ಯಾಕಥಾನ್ 2019

SNA ಹ್ಯಾಕಥಾನ್

ಈ ಹೆಸರಿನಲ್ಲಿ ಹ್ಯಾಕಥಾನ್ ನಡೆಯುತ್ತಿರುವುದು ಇದು ಮೂರನೇ ಬಾರಿ. ಇದನ್ನು ಕ್ರಮವಾಗಿ ಸಾಮಾಜಿಕ ನೆಟ್ವರ್ಕ್ ok.ru ಆಯೋಜಿಸಿದೆ, ಕಾರ್ಯ ಮತ್ತು ಡೇಟಾ ಈ ಸಾಮಾಜಿಕ ನೆಟ್ವರ್ಕ್ಗೆ ನೇರವಾಗಿ ಸಂಬಂಧಿಸಿದೆ.
ಈ ಸಂದರ್ಭದಲ್ಲಿ ಎಸ್‌ಎನ್‌ಎ (ಸಾಮಾಜಿಕ ನೆಟ್‌ವರ್ಕ್ ವಿಶ್ಲೇಷಣೆ) ಅನ್ನು ಸಾಮಾಜಿಕ ಗ್ರಾಫ್‌ನ ವಿಶ್ಲೇಷಣೆಯಾಗಿ ಅಲ್ಲ, ಆದರೆ ಸಾಮಾಜಿಕ ನೆಟ್‌ವರ್ಕ್‌ನ ವಿಶ್ಲೇಷಣೆಯಾಗಿ ಹೆಚ್ಚು ಸರಿಯಾಗಿ ಅರ್ಥೈಸಲಾಗುತ್ತದೆ.

  • 2014 ರಲ್ಲಿ, ಪೋಸ್ಟ್‌ಗೆ ಎಷ್ಟು ಇಷ್ಟಗಳು ಸಿಗುತ್ತವೆ ಎಂಬುದನ್ನು ಊಹಿಸುವುದು ಕಾರ್ಯವಾಗಿತ್ತು.
  • 2016 ರಲ್ಲಿ - VVZ ಕಾರ್ಯ (ಬಹುಶಃ ನೀವು ಪರಿಚಿತರಾಗಿರಬಹುದು), ಸಾಮಾಜಿಕ ಗ್ರಾಫ್ನ ವಿಶ್ಲೇಷಣೆಗೆ ಹತ್ತಿರದಲ್ಲಿದೆ.
  • 2019 ರಲ್ಲಿ, ಬಳಕೆದಾರರು ಪೋಸ್ಟ್ ಅನ್ನು ಇಷ್ಟಪಡುವ ಸಾಧ್ಯತೆಯ ಆಧಾರದ ಮೇಲೆ ಬಳಕೆದಾರರ ಫೀಡ್ ಅನ್ನು ಶ್ರೇಣೀಕರಿಸುವುದು.

ನಾನು 2014 ರ ಬಗ್ಗೆ ಹೇಳಲು ಸಾಧ್ಯವಿಲ್ಲ, ಆದರೆ 2016 ಮತ್ತು 2019 ರಲ್ಲಿ, ಡೇಟಾ ವಿಶ್ಲೇಷಣೆ ಸಾಮರ್ಥ್ಯಗಳ ಜೊತೆಗೆ, ದೊಡ್ಡ ಡೇಟಾದೊಂದಿಗೆ ಕೆಲಸ ಮಾಡುವ ಕೌಶಲ್ಯಗಳು ಸಹ ಅಗತ್ಯವಾಗಿವೆ. ಯಂತ್ರ ಕಲಿಕೆ ಮತ್ತು ದೊಡ್ಡ ಡೇಟಾ ಸಂಸ್ಕರಣಾ ಸಮಸ್ಯೆಗಳ ಸಂಯೋಜನೆಯು ಈ ಸ್ಪರ್ಧೆಗಳಿಗೆ ನನ್ನನ್ನು ಆಕರ್ಷಿಸಿತು ಮತ್ತು ಈ ಕ್ಷೇತ್ರಗಳಲ್ಲಿನ ನನ್ನ ಅನುಭವವು ನನಗೆ ಗೆಲ್ಲಲು ಸಹಾಯ ಮಾಡಿದೆ ಎಂದು ನಾನು ಭಾವಿಸುತ್ತೇನೆ.

mlbootcamp

2019 ರಲ್ಲಿ, ವೇದಿಕೆಯಲ್ಲಿ ಸ್ಪರ್ಧೆಯನ್ನು ಆಯೋಜಿಸಲಾಯಿತು https://mlbootcamp.ru.

ಸ್ಪರ್ಧೆಯು ಫೆಬ್ರವರಿ 7 ರಂದು ಆನ್‌ಲೈನ್‌ನಲ್ಲಿ ಪ್ರಾರಂಭವಾಯಿತು ಮತ್ತು 3 ಕಾರ್ಯಗಳನ್ನು ಒಳಗೊಂಡಿದೆ. ಯಾರಾದರೂ ಸೈಟ್‌ನಲ್ಲಿ ನೋಂದಾಯಿಸಿಕೊಳ್ಳಬಹುದು, ಡೌನ್‌ಲೋಡ್ ಮಾಡಬಹುದು ಬೇಸ್ಲೈನ್ ಮತ್ತು ಕೆಲವು ಗಂಟೆಗಳ ಕಾಲ ನಿಮ್ಮ ಕಾರನ್ನು ಲೋಡ್ ಮಾಡಿ. ಮಾರ್ಚ್ 15 ರಂದು ಆನ್‌ಲೈನ್ ವೇದಿಕೆಯ ಕೊನೆಯಲ್ಲಿ, ಪ್ರತಿ ಶೋ ಜಂಪಿಂಗ್ ಈವೆಂಟ್‌ನ ಟಾಪ್ 15 ಅನ್ನು ಆಫ್‌ಲೈನ್ ಹಂತಕ್ಕಾಗಿ Mail.ru ಕಚೇರಿಗೆ ಆಹ್ವಾನಿಸಲಾಯಿತು, ಇದು ಮಾರ್ಚ್ 30 ರಿಂದ ಏಪ್ರಿಲ್ 1 ರವರೆಗೆ ನಡೆಯಿತು.

ಉದ್ದೇಶ

ಮೂಲ ಡೇಟಾವು ಬಳಕೆದಾರ ID ಗಳನ್ನು (userId) ಮತ್ತು ಪೋಸ್ಟ್ ID ಗಳನ್ನು (objectId) ಒದಗಿಸುತ್ತದೆ. ಬಳಕೆದಾರರಿಗೆ ಪೋಸ್ಟ್ ಅನ್ನು ತೋರಿಸಿದರೆ, ಡೇಟಾವು userId, objectId, ಈ ಪೋಸ್ಟ್‌ಗೆ ಬಳಕೆದಾರರ ಪ್ರತಿಕ್ರಿಯೆಗಳನ್ನು (ಪ್ರತಿಕ್ರಿಯೆಗಳು) ಮತ್ತು ವಿವಿಧ ವೈಶಿಷ್ಟ್ಯಗಳು ಅಥವಾ ಚಿತ್ರಗಳು ಮತ್ತು ಪಠ್ಯಗಳಿಗೆ ಲಿಂಕ್‌ಗಳನ್ನು ಒಳಗೊಂಡಿರುವ ಸಾಲನ್ನು ಒಳಗೊಂಡಿರುತ್ತದೆ.

ಬಳಕೆದಾರರ ಗುರುತು objectId ಮಾಲೀಕ ಐಡಿ ಪ್ರತಿಕ್ರಿಯೆ ಚಿತ್ರಗಳನ್ನು
3555 22 5677 [ಇಷ್ಟಪಟ್ಟಿದ್ದಾರೆ, ಕ್ಲಿಕ್ ಮಾಡಲಾಗಿದೆ] [ಹ್ಯಾಶ್1]
12842 55 32144 [ಇಷ್ಟವಿಲ್ಲ] [ಹ್ಯಾಶ್2,ಹ್ಯಾಶ್3]
13145 35 5677 [ಕ್ಲಿಕ್ ಮಾಡಲಾಗಿದೆ, ಹಂಚಲಾಗಿದೆ] [ಹ್ಯಾಶ್2]

ಪರೀಕ್ಷಾ ಡೇಟಾ ಸೆಟ್ ಒಂದೇ ರೀತಿಯ ರಚನೆಯನ್ನು ಹೊಂದಿದೆ, ಆದರೆ ಪ್ರತಿಕ್ರಿಯೆ ಕ್ಷೇತ್ರವು ಕಾಣೆಯಾಗಿದೆ. ಪ್ರತಿಕ್ರಿಯೆ ಕ್ಷೇತ್ರದಲ್ಲಿ 'ಇಷ್ಟಪಟ್ಟ' ಪ್ರತಿಕ್ರಿಯೆಯ ಉಪಸ್ಥಿತಿಯನ್ನು ಊಹಿಸುವುದು ಕಾರ್ಯವಾಗಿದೆ.
ಸಲ್ಲಿಕೆ ಫೈಲ್ ಈ ಕೆಳಗಿನ ರಚನೆಯನ್ನು ಹೊಂದಿದೆ:

ಬಳಕೆದಾರರ ಗುರುತು ವಿಂಗಡಿಸಲಾದ ಪಟ್ಟಿ[ಆಬ್ಜೆಕ್ಟ್ ಐಡಿ]
123 78,13,54,22
128 35,61,55
131 35,68,129,11

ಮೆಟ್ರಿಕ್ ಬಳಕೆದಾರರಿಗೆ ಸರಾಸರಿ ROC AUC ಆಗಿದೆ.

ಡೇಟಾದ ಹೆಚ್ಚು ವಿವರವಾದ ವಿವರಣೆಯನ್ನು ಇಲ್ಲಿ ಕಾಣಬಹುದು ಕೌನ್ಸಿಲ್ ವೆಬ್‌ಸೈಟ್. ಪರೀಕ್ಷೆಗಳು ಮತ್ತು ಚಿತ್ರಗಳನ್ನು ಒಳಗೊಂಡಂತೆ ನೀವು ಅಲ್ಲಿ ಡೇಟಾವನ್ನು ಡೌನ್‌ಲೋಡ್ ಮಾಡಬಹುದು.

ಆನ್‌ಲೈನ್ ಹಂತ

ಆನ್‌ಲೈನ್ ಹಂತದಲ್ಲಿ, ಕಾರ್ಯವನ್ನು 3 ಭಾಗಗಳಾಗಿ ವಿಂಗಡಿಸಲಾಗಿದೆ

  • ಸಹಕಾರಿ ವ್ಯವಸ್ಥೆ - ಚಿತ್ರಗಳು ಮತ್ತು ಪಠ್ಯಗಳನ್ನು ಹೊರತುಪಡಿಸಿ ಎಲ್ಲಾ ವೈಶಿಷ್ಟ್ಯಗಳನ್ನು ಒಳಗೊಂಡಿದೆ;
  • ಚಿತ್ರಗಳು - ಚಿತ್ರಗಳ ಬಗ್ಗೆ ಮಾಹಿತಿಯನ್ನು ಮಾತ್ರ ಒಳಗೊಂಡಿದೆ;
  • ಪಠ್ಯಗಳು - ಪಠ್ಯಗಳ ಬಗ್ಗೆ ಮಾತ್ರ ಮಾಹಿತಿಯನ್ನು ಒಳಗೊಂಡಿದೆ.

ಆಫ್‌ಲೈನ್ ಹಂತ

ಆಫ್‌ಲೈನ್ ಹಂತದಲ್ಲಿ, ಡೇಟಾವು ಎಲ್ಲಾ ವೈಶಿಷ್ಟ್ಯಗಳನ್ನು ಒಳಗೊಂಡಿತ್ತು, ಆದರೆ ಪಠ್ಯಗಳು ಮತ್ತು ಚಿತ್ರಗಳು ವಿರಳವಾಗಿದ್ದವು. ಡೇಟಾಸೆಟ್‌ನಲ್ಲಿ 1,5 ಪಟ್ಟು ಹೆಚ್ಚು ಸಾಲುಗಳು ಇದ್ದವು, ಅದರಲ್ಲಿ ಈಗಾಗಲೇ ಬಹಳಷ್ಟು ಇವೆ.

ಸಮಸ್ಯೆಯ ಪರಿಹಾರ

ನಾನು ಕೆಲಸದಲ್ಲಿ CV ಮಾಡುವುದರಿಂದ, ನಾನು ಈ ಸ್ಪರ್ಧೆಯಲ್ಲಿ ನನ್ನ ಪ್ರಯಾಣವನ್ನು "ಚಿತ್ರಗಳು" ಕಾರ್ಯದೊಂದಿಗೆ ಪ್ರಾರಂಭಿಸಿದೆ. ಒದಗಿಸಲಾದ ಡೇಟಾವೆಂದರೆ userId, objectId, ownerId (ಪೋಸ್ಟ್ ಅನ್ನು ಪ್ರಕಟಿಸಿದ ಗುಂಪು), ಪೋಸ್ಟ್ ಅನ್ನು ರಚಿಸಲು ಮತ್ತು ಪ್ರದರ್ಶಿಸಲು ಸಮಯಸ್ಟ್ಯಾಂಪ್‌ಗಳು ಮತ್ತು, ಸಹಜವಾಗಿ, ಈ ಪೋಸ್ಟ್‌ಗಾಗಿ ಚಿತ್ರ.
ಟೈಮ್‌ಸ್ಟ್ಯಾಂಪ್‌ಗಳ ಆಧಾರದ ಮೇಲೆ ಹಲವಾರು ವೈಶಿಷ್ಟ್ಯಗಳನ್ನು ರಚಿಸಿದ ನಂತರ, ಮುಂದಿನ ಆಲೋಚನೆಯು ಇಮೇಜ್‌ನೆಟ್‌ನಲ್ಲಿ ಪೂರ್ವ-ತರಬೇತಿ ಪಡೆದ ನ್ಯೂರಾನ್‌ನ ಅಂತಿಮ ಪದರವನ್ನು ತೆಗೆದುಕೊಂಡು ಈ ಎಂಬೆಡಿಂಗ್‌ಗಳನ್ನು ಉತ್ತೇಜಿಸಲು ಕಳುಹಿಸುವುದು.

SNA ಹ್ಯಾಕಥಾನ್ 2019

ಫಲಿತಾಂಶಗಳು ಪ್ರಭಾವಶಾಲಿಯಾಗಿರಲಿಲ್ಲ. ಇಮೇಜ್‌ನೆಟ್ ನ್ಯೂರಾನ್‌ನಿಂದ ಎಂಬೆಡಿಂಗ್‌ಗಳು ಅಪ್ರಸ್ತುತವಾಗಿವೆ, ನಾನು ನನ್ನದೇ ಆದ ಆಟೋಎನ್‌ಕೋಡರ್ ಅನ್ನು ಮಾಡಬೇಕಾಗಿದೆ ಎಂದು ನಾನು ಭಾವಿಸಿದೆ.

SNA ಹ್ಯಾಕಥಾನ್ 2019

ಇದು ಸಾಕಷ್ಟು ಸಮಯ ತೆಗೆದುಕೊಂಡಿತು ಮತ್ತು ಫಲಿತಾಂಶವು ಸುಧಾರಿಸಲಿಲ್ಲ.

ವೈಶಿಷ್ಟ್ಯದ ಉತ್ಪಾದನೆ

ಚಿತ್ರಗಳೊಂದಿಗೆ ಕೆಲಸ ಮಾಡಲು ಸಾಕಷ್ಟು ಸಮಯ ತೆಗೆದುಕೊಳ್ಳುತ್ತದೆ, ಆದ್ದರಿಂದ ನಾನು ಸರಳವಾದದ್ದನ್ನು ಮಾಡಲು ನಿರ್ಧರಿಸಿದೆ.
ನೀವು ತಕ್ಷಣ ನೋಡುವಂತೆ, ಡೇಟಾಸೆಟ್‌ನಲ್ಲಿ ಹಲವಾರು ವರ್ಗೀಯ ವೈಶಿಷ್ಟ್ಯಗಳಿವೆ, ಮತ್ತು ಹೆಚ್ಚು ತಲೆಕೆಡಿಸಿಕೊಳ್ಳದಿರಲು, ನಾನು ಕ್ಯಾಟ್‌ಬೂಸ್ಟ್ ತೆಗೆದುಕೊಂಡಿದ್ದೇನೆ. ಪರಿಹಾರವು ಅತ್ಯುತ್ತಮವಾಗಿತ್ತು, ಯಾವುದೇ ಸೆಟ್ಟಿಂಗ್‌ಗಳಿಲ್ಲದೆ ನಾನು ತಕ್ಷಣವೇ ಲೀಡರ್‌ಬೋರ್ಡ್‌ನ ಮೊದಲ ಸಾಲಿಗೆ ಬಂದೆ.

ಸಾಕಷ್ಟು ಡೇಟಾ ಇದೆ ಮತ್ತು ಅದನ್ನು ಪ್ಯಾರ್ಕ್ವೆಟ್ ರೂಪದಲ್ಲಿ ಹಾಕಲಾಗಿದೆ, ಆದ್ದರಿಂದ ಎರಡು ಬಾರಿ ಯೋಚಿಸದೆ, ನಾನು ಸ್ಕಾಲಾವನ್ನು ತೆಗೆದುಕೊಂಡು ಎಲ್ಲವನ್ನೂ ಸ್ಪಾರ್ಕ್‌ನಲ್ಲಿ ಬರೆಯಲು ಪ್ರಾರಂಭಿಸಿದೆ.

ಚಿತ್ರದ ಎಂಬೆಡಿಂಗ್‌ಗಳಿಗಿಂತ ಹೆಚ್ಚು ಬೆಳವಣಿಗೆಯನ್ನು ನೀಡಿದ ಸರಳ ವೈಶಿಷ್ಟ್ಯಗಳು:

  • ಡೇಟಾದಲ್ಲಿ ಎಷ್ಟು ಬಾರಿ objectId, userId ಮತ್ತು ownerId ಕಾಣಿಸಿಕೊಂಡಿದೆ (ಜನಪ್ರಿಯತೆಯೊಂದಿಗೆ ಪರಸ್ಪರ ಸಂಬಂಧ ಹೊಂದಿರಬೇಕು);
  • userId ಎಷ್ಟು ಪೋಸ್ಟ್‌ಗಳನ್ನು ownerId ನಿಂದ ನೋಡಿದೆ (ಗುಂಪಿನಲ್ಲಿ ಬಳಕೆದಾರರ ಆಸಕ್ತಿಯೊಂದಿಗೆ ಪರಸ್ಪರ ಸಂಬಂಧ ಹೊಂದಿರಬೇಕು);
  • ಮಾಲೀಕ ಐಡಿಯಿಂದ ಎಷ್ಟು ಅನನ್ಯ ಯೂಸರ್ ಐಡಿಗಳು ಪೋಸ್ಟ್‌ಗಳನ್ನು ವೀಕ್ಷಿಸಿದ್ದಾರೆ (ಗುಂಪಿನ ಪ್ರೇಕ್ಷಕರ ಗಾತ್ರವನ್ನು ಪ್ರತಿಬಿಂಬಿಸುತ್ತದೆ).

ಟೈಮ್‌ಸ್ಟ್ಯಾಂಪ್‌ಗಳಿಂದ ಬಳಕೆದಾರರು ಫೀಡ್ ಅನ್ನು ವೀಕ್ಷಿಸಿದ ದಿನದ ಸಮಯವನ್ನು ಪಡೆಯಲು ಸಾಧ್ಯವಾಯಿತು (ಬೆಳಿಗ್ಗೆ/ಮಧ್ಯಾಹ್ನ/ಸಂಜೆ/ರಾತ್ರಿ). ಈ ವರ್ಗಗಳನ್ನು ಸಂಯೋಜಿಸುವ ಮೂಲಕ, ನೀವು ವೈಶಿಷ್ಟ್ಯಗಳನ್ನು ರಚಿಸುವುದನ್ನು ಮುಂದುವರಿಸಬಹುದು:

  • ಸಂಜೆ ಎಷ್ಟು ಬಾರಿ userId ಲಾಗಿನ್ ಆಗಿದೆ;
  • ಯಾವ ಸಮಯದಲ್ಲಿ ಈ ಪೋಸ್ಟ್ ಅನ್ನು ಹೆಚ್ಚಾಗಿ ತೋರಿಸಲಾಗುತ್ತದೆ (objectId) ಮತ್ತು ಹೀಗೆ.

ಇದೆಲ್ಲವೂ ಕ್ರಮೇಣ ಮೆಟ್ರಿಕ್‌ಗಳನ್ನು ಸುಧಾರಿಸಿತು. ಆದರೆ ತರಬೇತಿ ಡೇಟಾಸೆಟ್‌ನ ಗಾತ್ರವು ಸುಮಾರು 20M ದಾಖಲೆಗಳನ್ನು ಹೊಂದಿದೆ, ಆದ್ದರಿಂದ ವೈಶಿಷ್ಟ್ಯಗಳನ್ನು ಸೇರಿಸುವುದು ತರಬೇತಿಯನ್ನು ನಿಧಾನಗೊಳಿಸುತ್ತದೆ.

ಡೇಟಾವನ್ನು ಬಳಸುವ ನನ್ನ ವಿಧಾನವನ್ನು ನಾನು ಮರುಚಿಂತನೆ ಮಾಡಿದ್ದೇನೆ. ಡೇಟಾವು ಸಮಯ-ಅವಲಂಬಿತವಾಗಿದ್ದರೂ, "ಭವಿಷ್ಯದಲ್ಲಿ" ಯಾವುದೇ ಸ್ಪಷ್ಟ ಮಾಹಿತಿ ಸೋರಿಕೆಯನ್ನು ನಾನು ನೋಡಲಿಲ್ಲ, ಅದೇನೇ ಇದ್ದರೂ, ನಾನು ಅದನ್ನು ಈ ರೀತಿ ಮುರಿದಿದ್ದೇನೆ:

SNA ಹ್ಯಾಕಥಾನ್ 2019

ನಮಗೆ ಒದಗಿಸಿದ ತರಬೇತಿ ಸೆಟ್ (ಫೆಬ್ರವರಿ ಮತ್ತು ಮಾರ್ಚ್ 2 ವಾರಗಳು) 2 ಭಾಗಗಳಾಗಿ ವಿಂಗಡಿಸಲಾಗಿದೆ.
ಮಾದರಿಯು ಕಳೆದ N ದಿನಗಳ ಡೇಟಾದ ಮೇಲೆ ತರಬೇತಿ ಪಡೆದಿದೆ. ಮೇಲೆ ವಿವರಿಸಿದ ಒಟ್ಟುಗೂಡಿಸುವಿಕೆಗಳನ್ನು ಪರೀಕ್ಷೆಯನ್ನು ಒಳಗೊಂಡಂತೆ ಎಲ್ಲಾ ಡೇಟಾದ ಮೇಲೆ ನಿರ್ಮಿಸಲಾಗಿದೆ. ಅದೇ ಸಮಯದಲ್ಲಿ, ಟಾರ್ಗೆಟ್ ವೇರಿಯಬಲ್‌ನ ವಿವಿಧ ಎನ್‌ಕೋಡಿಂಗ್‌ಗಳನ್ನು ನಿರ್ಮಿಸಲು ಸಾಧ್ಯವಾಗುವ ಡೇಟಾ ಕಾಣಿಸಿಕೊಂಡಿದೆ. ಈಗಾಗಲೇ ಹೊಸ ವೈಶಿಷ್ಟ್ಯಗಳನ್ನು ರಚಿಸುತ್ತಿರುವ ಕೋಡ್ ಅನ್ನು ಮರುಬಳಕೆ ಮಾಡುವುದು ಸರಳವಾದ ವಿಧಾನವಾಗಿದೆ ಮತ್ತು ಅದು ತರಬೇತಿ ಪಡೆಯದ ಮತ್ತು ಗುರಿ = 1 ಡೇಟಾವನ್ನು ಸರಳವಾಗಿ ಫೀಡ್ ಮಾಡುವುದು.

ಹೀಗಾಗಿ, ನಾವು ಇದೇ ರೀತಿಯ ವೈಶಿಷ್ಟ್ಯಗಳನ್ನು ಪಡೆದುಕೊಂಡಿದ್ದೇವೆ:

  • ಗ್ರೂಪ್ ಓನರ್ ಐಡಿಯಲ್ಲಿ ಯೂಸರ್ ಐಡಿ ಎಷ್ಟು ಬಾರಿ ಪೋಸ್ಟ್ ನೋಡಿದೆ;
  • ಗ್ರೂಪ್ ಓನರ್ ಐಡಿಯಲ್ಲಿ ಪೋಸ್ಟ್ ಅನ್ನು ಯೂಸರ್ ಐಡಿ ಎಷ್ಟು ಬಾರಿ ಇಷ್ಟಪಟ್ಟಿದ್ದಾರೆ;
  • ಓನರ್ ಐಡಿಯಿಂದ ಯೂಸರ್ ಐಡಿ ಇಷ್ಟಪಟ್ಟ ಪೋಸ್ಟ್‌ಗಳ ಶೇಕಡಾವಾರು.

ಅಂದರೆ, ಅದು ಬದಲಾಯಿತು ಗುರಿ ಎನ್ಕೋಡಿಂಗ್ ಎಂದರ್ಥ ವರ್ಗೀಯ ವೈಶಿಷ್ಟ್ಯಗಳ ವಿವಿಧ ಸಂಯೋಜನೆಗಳಿಗಾಗಿ ಡೇಟಾಸೆಟ್‌ನ ಭಾಗದಲ್ಲಿ. ತಾತ್ವಿಕವಾಗಿ, ಕ್ಯಾಟ್‌ಬೂಸ್ಟ್ ಗುರಿ ಎನ್‌ಕೋಡಿಂಗ್ ಅನ್ನು ಸಹ ನಿರ್ಮಿಸುತ್ತದೆ ಮತ್ತು ಈ ದೃಷ್ಟಿಕೋನದಿಂದ ಯಾವುದೇ ಪ್ರಯೋಜನವಿಲ್ಲ, ಆದರೆ, ಉದಾಹರಣೆಗೆ, ಈ ಗುಂಪಿನಲ್ಲಿ ಪೋಸ್ಟ್‌ಗಳನ್ನು ಇಷ್ಟಪಟ್ಟ ಅನನ್ಯ ಬಳಕೆದಾರರ ಸಂಖ್ಯೆಯನ್ನು ಎಣಿಸಲು ಸಾಧ್ಯವಾಯಿತು. ಅದೇ ಸಮಯದಲ್ಲಿ, ಮುಖ್ಯ ಗುರಿಯನ್ನು ಸಾಧಿಸಲಾಗಿದೆ - ನನ್ನ ಡೇಟಾಸೆಟ್ ಅನ್ನು ಹಲವಾರು ಬಾರಿ ಕಡಿಮೆ ಮಾಡಲಾಗಿದೆ ಮತ್ತು ವೈಶಿಷ್ಟ್ಯಗಳನ್ನು ಉತ್ಪಾದಿಸುವುದನ್ನು ಮುಂದುವರಿಸಲು ಸಾಧ್ಯವಾಯಿತು.

ಇಷ್ಟಪಟ್ಟ ಪ್ರತಿಕ್ರಿಯೆಯ ಆಧಾರದ ಮೇಲೆ ಮಾತ್ರ ಕ್ಯಾಟ್‌ಬೂಸ್ಟ್ ಎನ್‌ಕೋಡಿಂಗ್ ಅನ್ನು ನಿರ್ಮಿಸಬಹುದು, ಪ್ರತಿಕ್ರಿಯೆಯು ಇತರ ಪ್ರತಿಕ್ರಿಯೆಗಳನ್ನು ಹೊಂದಿದೆ: ಮರುಹಂಚಿಕೆ, ಇಷ್ಟಪಡದಿರುವುದು, ಇಷ್ಟಪಡದಿರುವುದು, ಕ್ಲಿಕ್ ಮಾಡಲಾಗಿದೆ, ನಿರ್ಲಕ್ಷಿಸಲಾಗಿದೆ, ಕೈಯಾರೆ ಮಾಡಬಹುದಾದ ಎನ್‌ಕೋಡಿಂಗ್‌ಗಳು. ನಾನು ಎಲ್ಲಾ ರೀತಿಯ ಸಮುಚ್ಚಯಗಳನ್ನು ಮರು ಲೆಕ್ಕಾಚಾರ ಮಾಡಿದ್ದೇನೆ ಮತ್ತು ಡೇಟಾಸೆಟ್ ಅನ್ನು ಹೆಚ್ಚಿಸದಂತೆ ಕಡಿಮೆ ಪ್ರಾಮುಖ್ಯತೆಯೊಂದಿಗೆ ವೈಶಿಷ್ಟ್ಯಗಳನ್ನು ತೆಗೆದುಹಾಕಿದ್ದೇನೆ.

ಆ ವೇಳೆಗೆ ನಾನು ಹೆಚ್ಚಿನ ಅಂತರದಿಂದ ಮೊದಲ ಸ್ಥಾನದಲ್ಲಿದ್ದೆ. ಗೊಂದಲಕ್ಕೊಳಗಾದ ಏಕೈಕ ವಿಷಯವೆಂದರೆ ಚಿತ್ರದ ಎಂಬೆಡಿಂಗ್‌ಗಳು ಯಾವುದೇ ಬೆಳವಣಿಗೆಯನ್ನು ತೋರಿಸಲಿಲ್ಲ. ಎಲ್ಲವನ್ನೂ ಕ್ಯಾಟ್‌ಬೂಸ್ಟ್‌ಗೆ ನೀಡುವ ಆಲೋಚನೆ ಬಂದಿತು. ನಾವು Kmeans ಚಿತ್ರಗಳನ್ನು ಕ್ಲಸ್ಟರ್ ಮಾಡುತ್ತೇವೆ ಮತ್ತು ಹೊಸ ವರ್ಗೀಯ ವೈಶಿಷ್ಟ್ಯವಾದ imageCat ಅನ್ನು ಪಡೆಯುತ್ತೇವೆ.

KMeans ನಿಂದ ಪಡೆದ ಕ್ಲಸ್ಟರ್‌ಗಳ ಹಸ್ತಚಾಲಿತ ಫಿಲ್ಟರಿಂಗ್ ಮತ್ತು ವಿಲೀನದ ನಂತರ ಕೆಲವು ತರಗತಿಗಳು ಇಲ್ಲಿವೆ.

SNA ಹ್ಯಾಕಥಾನ್ 2019

imageCat ಆಧರಿಸಿ ನಾವು ರಚಿಸುತ್ತೇವೆ:

  • ಹೊಸ ವರ್ಗೀಯ ವೈಶಿಷ್ಟ್ಯಗಳು:
    • ಯೂಸರ್ ಐಡಿಯಿಂದ ಯಾವ ಇಮೇಜ್ ಕ್ಯಾಟ್ ಅನ್ನು ಹೆಚ್ಚಾಗಿ ವೀಕ್ಷಿಸಲಾಗಿದೆ;
    • ಯಾವ ಇಮೇಜ್ ಕ್ಯಾಟ್ ಹೆಚ್ಚಾಗಿ ಮಾಲೀಕ ಐಡಿಯನ್ನು ತೋರಿಸುತ್ತದೆ;
    • ಯೂಸರ್ ಐಡಿಯಿಂದ ಯಾವ ಇಮೇಜ್ ಕ್ಯಾಟ್ ಅನ್ನು ಹೆಚ್ಚಾಗಿ ಇಷ್ಟಪಟ್ಟಿದ್ದಾರೆ;
  • ವಿವಿಧ ಕೌಂಟರ್‌ಗಳು:
    • ಎಷ್ಟು ಅನನ್ಯ ಇಮೇಜ್‌ಕ್ಯಾಟ್ userId ಅನ್ನು ನೋಡಿದೆ;
    • ಮೇಲೆ ವಿವರಿಸಿದಂತೆ ಸುಮಾರು 15 ಒಂದೇ ರೀತಿಯ ವೈಶಿಷ್ಟ್ಯಗಳು ಮತ್ತು ಗುರಿ ಎನ್‌ಕೋಡಿಂಗ್.

ಪಠ್ಯಗಳು

ಚಿತ್ರ ಸ್ಪರ್ಧೆಯಲ್ಲಿನ ಫಲಿತಾಂಶಗಳು ನನಗೆ ಸರಿಹೊಂದಿದವು ಮತ್ತು ನಾನು ಪಠ್ಯಗಳಲ್ಲಿ ನನ್ನ ಕೈಯನ್ನು ಪ್ರಯತ್ನಿಸಲು ನಿರ್ಧರಿಸಿದೆ. ನಾನು ಮೊದಲು ಪಠ್ಯಗಳೊಂದಿಗೆ ಹೆಚ್ಚು ಕೆಲಸ ಮಾಡಿಲ್ಲ ಮತ್ತು ಮೂರ್ಖತನದಿಂದ ನಾನು tf-idf ಮತ್ತು svd ನಲ್ಲಿ ದಿನವನ್ನು ಕೊಂದಿದ್ದೇನೆ. ನಂತರ ನಾನು doc2vec ನೊಂದಿಗೆ ಬೇಸ್‌ಲೈನ್ ಅನ್ನು ನೋಡಿದೆ, ಅದು ನನಗೆ ಬೇಕಾದುದನ್ನು ನಿಖರವಾಗಿ ಮಾಡುತ್ತದೆ. doc2vec ನಿಯತಾಂಕಗಳನ್ನು ಸ್ವಲ್ಪ ಸರಿಹೊಂದಿಸಿದ ನಂತರ, ನಾನು ಪಠ್ಯ ಎಂಬೆಡಿಂಗ್‌ಗಳನ್ನು ಪಡೆದುಕೊಂಡಿದ್ದೇನೆ.

ತದನಂತರ ನಾನು ಚಿತ್ರಗಳಿಗಾಗಿ ಕೋಡ್ ಅನ್ನು ಮರುಬಳಕೆ ಮಾಡಿದ್ದೇನೆ, ಅದರಲ್ಲಿ ನಾನು ಚಿತ್ರ ಎಂಬೆಡಿಂಗ್‌ಗಳನ್ನು ಪಠ್ಯ ಎಂಬೆಡಿಂಗ್‌ಗಳೊಂದಿಗೆ ಬದಲಾಯಿಸಿದೆ. ಇದರಿಂದ ಪಠ್ಯ ಸ್ಪರ್ಧೆಯಲ್ಲಿ 2ನೇ ಸ್ಥಾನ ಪಡೆದಿದ್ದೇನೆ.

ಸಹಕಾರಿ ವ್ಯವಸ್ಥೆ

ನಾನು ಇನ್ನೂ ಒಂದು ಕೋಲಿನಿಂದ "ಚುಚ್ಚಿಲ್ಲ" ಎಂದು ಒಂದು ಸ್ಪರ್ಧೆ ಉಳಿದಿದೆ ಮತ್ತು ಲೀಡರ್‌ಬೋರ್ಡ್‌ನಲ್ಲಿ AUC ಯಿಂದ ನಿರ್ಣಯಿಸುವುದು, ಈ ನಿರ್ದಿಷ್ಟ ಸ್ಪರ್ಧೆಯ ಫಲಿತಾಂಶಗಳು ಆಫ್‌ಲೈನ್ ಹಂತದ ಮೇಲೆ ಹೆಚ್ಚಿನ ಪ್ರಭಾವವನ್ನು ಹೊಂದಿರಬೇಕು.
ನಾನು ಮೂಲ ಡೇಟಾದಲ್ಲಿರುವ ಎಲ್ಲಾ ವೈಶಿಷ್ಟ್ಯಗಳನ್ನು ತೆಗೆದುಕೊಂಡಿದ್ದೇನೆ, ವರ್ಗೀಯವಾದವುಗಳನ್ನು ಆಯ್ಕೆ ಮಾಡಿದ್ದೇನೆ ಮತ್ತು ಚಿತ್ರಗಳನ್ನು ಆಧರಿಸಿದ ವೈಶಿಷ್ಟ್ಯಗಳನ್ನು ಹೊರತುಪಡಿಸಿ, ಚಿತ್ರಗಳಂತೆಯೇ ಒಟ್ಟು ಮೊತ್ತವನ್ನು ಲೆಕ್ಕ ಹಾಕಿದ್ದೇನೆ. ಇದನ್ನು ಕ್ಯಾಟ್‌ಬೂಸ್ಟ್‌ನಲ್ಲಿ ಇರಿಸುವ ಮೂಲಕ ನಾನು 2 ನೇ ಸ್ಥಾನಕ್ಕೆ ಬಂದಿದ್ದೇನೆ.

ಕ್ಯಾಟ್‌ಬೂಸ್ಟ್ ಆಪ್ಟಿಮೈಸೇಶನ್‌ನ ಮೊದಲ ಹಂತಗಳು

ಒಂದು ಮೊದಲ ಮತ್ತು ಎರಡು ಎರಡನೇ ಸ್ಥಾನಗಳು ನನಗೆ ಸಂತೋಷವಾಯಿತು, ಆದರೆ ನಾನು ವಿಶೇಷವಾದ ಏನನ್ನೂ ಮಾಡಿಲ್ಲ ಎಂಬ ತಿಳುವಳಿಕೆ ಇತ್ತು, ಅಂದರೆ ನಾನು ಸ್ಥಾನದ ನಷ್ಟವನ್ನು ನಿರೀಕ್ಷಿಸಬಹುದು.

ಸ್ಪರ್ಧೆಯ ಕಾರ್ಯವು ಬಳಕೆದಾರರಲ್ಲಿ ಪೋಸ್ಟ್‌ಗಳನ್ನು ಶ್ರೇಣೀಕರಿಸುವುದು, ಮತ್ತು ಈ ಸಮಯದಲ್ಲಿ ನಾನು ವರ್ಗೀಕರಣದ ಸಮಸ್ಯೆಯನ್ನು ಪರಿಹರಿಸುತ್ತಿದ್ದೆ, ಅಂದರೆ ತಪ್ಪಾದ ಮೆಟ್ರಿಕ್ ಅನ್ನು ಉತ್ತಮಗೊಳಿಸುವುದು.

ನಾನು ನಿಮಗೆ ಒಂದು ಸರಳ ಉದಾಹರಣೆಯನ್ನು ನೀಡುತ್ತೇನೆ:

ಬಳಕೆದಾರರ ಗುರುತು objectId ಭವಿಷ್ಯ ನೆಲದ ಸತ್ಯ
1 10 0.9 1
1 11 0.8 1
1 12 0.7 1
1 13 0.6 1
1 14 0.5 0
2 15 0.4 0
2 16 0.3 1

ಸಣ್ಣ ಮರುಜೋಡಣೆ ಮಾಡೋಣ

ಬಳಕೆದಾರರ ಗುರುತು objectId ಭವಿಷ್ಯ ನೆಲದ ಸತ್ಯ
1 10 0.9 1
1 11 0.8 1
1 12 0.7 1
1 13 0.6 0
2 16 0.5 1
2 15 0.4 0
1 14 0.3 1

ನಾವು ಈ ಕೆಳಗಿನ ಫಲಿತಾಂಶಗಳನ್ನು ಪಡೆಯುತ್ತೇವೆ:

ಮಾದರಿ ಎಯುಸಿ ಬಳಕೆದಾರ1 AUC ಬಳಕೆದಾರ2 AUC AUC ಎಂದರ್ಥ
ಆಯ್ಕೆ 1 0,8 1,0 0,0 0,5
ಆಯ್ಕೆ 2 0,7 0,75 1,0 0,875

ನೀವು ನೋಡುವಂತೆ, ಒಟ್ಟಾರೆ AUC ಮೆಟ್ರಿಕ್ ಅನ್ನು ಸುಧಾರಿಸುವುದು ಎಂದರೆ ಬಳಕೆದಾರರಲ್ಲಿ ಸರಾಸರಿ AUC ಮೆಟ್ರಿಕ್ ಅನ್ನು ಸುಧಾರಿಸುವುದು ಎಂದಲ್ಲ.

ಕ್ಯಾಟ್ಬೂಸ್ಟ್ ಶ್ರೇಯಾಂಕದ ಮೆಟ್ರಿಕ್‌ಗಳನ್ನು ಹೇಗೆ ಆಪ್ಟಿಮೈಜ್ ಮಾಡುವುದು ಎಂದು ತಿಳಿದಿದೆ ಪೆಟ್ಟಿಗೆಯಿಂದ. ನಾನು ಶ್ರೇಯಾಂಕದ ಮೆಟ್ರಿಕ್‌ಗಳ ಬಗ್ಗೆ ಓದಿದ್ದೇನೆ, ಯಶಸ್ಸಿನ ಕಥೆಗಳು ಕ್ಯಾಟ್‌ಬೂಸ್ಟ್ ಬಳಸುವಾಗ ಮತ್ತು ರಾತ್ರಿಯಲ್ಲಿ ತರಬೇತಿ ನೀಡಲು YetiRankPairwise ಅನ್ನು ಹೊಂದಿಸಿ. ಫಲಿತಾಂಶವು ಪ್ರಭಾವಶಾಲಿಯಾಗಿರಲಿಲ್ಲ. ನಾನು ಕಡಿಮೆ ತರಬೇತಿ ಪಡೆದಿದ್ದೇನೆ ಎಂದು ನಿರ್ಧರಿಸಿ, ನಾನು ದೋಷ ಕಾರ್ಯವನ್ನು QueryRMSE ಗೆ ಬದಲಾಯಿಸಿದೆ, ಇದು ಕ್ಯಾಟ್‌ಬೂಸ್ಟ್ ದಾಖಲಾತಿಯಿಂದ ನಿರ್ಣಯಿಸುವುದು, ವೇಗವಾಗಿ ಒಮ್ಮುಖವಾಗುತ್ತದೆ. ಕೊನೆಯಲ್ಲಿ, ವರ್ಗೀಕರಣಕ್ಕೆ ತರಬೇತಿ ನೀಡುವಾಗ ನಾನು ಅದೇ ಫಲಿತಾಂಶಗಳನ್ನು ಪಡೆದುಕೊಂಡಿದ್ದೇನೆ, ಆದರೆ ಈ ಎರಡು ಮಾದರಿಗಳ ಮೇಳಗಳು ಉತ್ತಮ ಹೆಚ್ಚಳವನ್ನು ನೀಡಿತು, ಅದು ನನ್ನನ್ನು ಎಲ್ಲಾ ಮೂರು ಸ್ಪರ್ಧೆಗಳಲ್ಲಿ ಮೊದಲ ಸ್ಥಾನಕ್ಕೆ ತಂದಿತು.

"ಸಹಕಾರಿ ವ್ಯವಸ್ಥೆಗಳು" ಸ್ಪರ್ಧೆಯ ಆನ್‌ಲೈನ್ ಹಂತವನ್ನು ಮುಚ್ಚುವ 5 ನಿಮಿಷಗಳ ಮೊದಲು, ಸೆರ್ಗೆ ಶಾಲ್ನೋವ್ ನನ್ನನ್ನು ಎರಡನೇ ಸ್ಥಾನಕ್ಕೆ ಸರಿಸಿದರು. ನಾವು ಒಟ್ಟಿಗೆ ಮುಂದಿನ ಹಾದಿಯಲ್ಲಿ ಸಾಗಿದೆವು.

ಆಫ್‌ಲೈನ್ ಹಂತಕ್ಕೆ ತಯಾರಾಗುತ್ತಿದೆ

RTX 2080 TI ವೀಡಿಯೋ ಕಾರ್ಡ್‌ನೊಂದಿಗೆ ಆನ್‌ಲೈನ್ ಹಂತದಲ್ಲಿ ನಾವು ವಿಜಯವನ್ನು ಖಾತರಿಪಡಿಸಿದ್ದೇವೆ, ಆದರೆ 300 ರೂಬಲ್ಸ್‌ಗಳ ಮುಖ್ಯ ಬಹುಮಾನ ಮತ್ತು ಅಂತಿಮ ಮೊದಲ ಸ್ಥಾನವೂ ಸಹ ಈ 000 ವಾರಗಳವರೆಗೆ ಕೆಲಸ ಮಾಡಲು ನಮ್ಮನ್ನು ಒತ್ತಾಯಿಸಿತು.

ಅದು ಬದಲಾದಂತೆ, ಸೆರ್ಗೆ ಕ್ಯಾಟ್ಬೂಸ್ಟ್ ಅನ್ನು ಸಹ ಬಳಸಿದರು. ನಾವು ಆಲೋಚನೆಗಳು ಮತ್ತು ವೈಶಿಷ್ಟ್ಯಗಳನ್ನು ವಿನಿಮಯ ಮಾಡಿಕೊಂಡಿದ್ದೇವೆ ಮತ್ತು ನಾನು ಕಲಿತಿದ್ದೇನೆ ಅನ್ನಾ ವೆರೋನಿಕಾ ಡೊರೊಗುಶ್ ಅವರ ವರದಿ ಇದು ನನ್ನ ಅನೇಕ ಪ್ರಶ್ನೆಗಳಿಗೆ ಉತ್ತರಗಳನ್ನು ಒಳಗೊಂಡಿತ್ತು ಮತ್ತು ಆ ಸಮಯದಲ್ಲಿ ನಾನು ಇನ್ನೂ ಹೊಂದಿರದ ಪ್ರಶ್ನೆಗಳಿಗೂ ಸಹ.

ವರದಿಯನ್ನು ನೋಡುವುದರಿಂದ ನಾವು ಎಲ್ಲಾ ನಿಯತಾಂಕಗಳನ್ನು ಡೀಫಾಲ್ಟ್ ಮೌಲ್ಯಕ್ಕೆ ಹಿಂತಿರುಗಿಸಬೇಕಾಗಿದೆ ಮತ್ತು ಸೆಟ್ಟಿಂಗ್‌ಗಳನ್ನು ಬಹಳ ಎಚ್ಚರಿಕೆಯಿಂದ ಮತ್ತು ವೈಶಿಷ್ಟ್ಯಗಳ ಗುಂಪನ್ನು ಸರಿಪಡಿಸಿದ ನಂತರವೇ ಮಾಡಬೇಕಾಗಿದೆ ಎಂಬ ಕಲ್ಪನೆಗೆ ನನಗೆ ಕಾರಣವಾಯಿತು. ಈಗ ಒಂದು ತರಬೇತಿಯು ಸುಮಾರು 15 ಗಂಟೆಗಳನ್ನು ತೆಗೆದುಕೊಂಡಿತು, ಆದರೆ ಒಂದು ಮಾದರಿಯು ಶ್ರೇಯಾಂಕದೊಂದಿಗೆ ಮೇಳದಲ್ಲಿ ಪಡೆದ ವೇಗಕ್ಕಿಂತ ಉತ್ತಮವಾದ ವೇಗವನ್ನು ಪಡೆಯುವಲ್ಲಿ ಯಶಸ್ವಿಯಾಯಿತು.

ವೈಶಿಷ್ಟ್ಯದ ಉತ್ಪಾದನೆ

ಸಹಯೋಗ ವ್ಯವಸ್ಥೆಗಳ ಸ್ಪರ್ಧೆಯಲ್ಲಿ, ಮಾದರಿಗೆ ಹೆಚ್ಚಿನ ಸಂಖ್ಯೆಯ ವೈಶಿಷ್ಟ್ಯಗಳನ್ನು ಪ್ರಮುಖವೆಂದು ನಿರ್ಣಯಿಸಲಾಗುತ್ತದೆ. ಉದಾಹರಣೆಗೆ, ಆಡಿಟ್ವೈಟ್ಸ್_ಸ್ಪಾರ್ಕ್_ಎಸ್ವಿಡಿ - ಪ್ರಮುಖ ಚಿಹ್ನೆ, ಆದರೆ ಅದರ ಅರ್ಥದ ಬಗ್ಗೆ ಯಾವುದೇ ಮಾಹಿತಿ ಇಲ್ಲ. ಪ್ರಮುಖ ವೈಶಿಷ್ಟ್ಯಗಳ ಆಧಾರದ ಮೇಲೆ ವಿವಿಧ ಸಮುಚ್ಚಯಗಳನ್ನು ಎಣಿಸಲು ಇದು ಯೋಗ್ಯವಾಗಿದೆ ಎಂದು ನಾನು ಭಾವಿಸಿದೆ. ಉದಾಹರಣೆಗೆ, ಸರಾಸರಿ ಆಡಿಟ್ವೈಟ್ಸ್_ಸ್ಪಾರ್ಕ್_ಎಸ್ವಿಡಿ ಬಳಕೆದಾರರಿಂದ, ಗುಂಪಿನಿಂದ, ವಸ್ತುವಿನ ಮೂಲಕ. ಯಾವುದೇ ತರಬೇತಿಯನ್ನು ನಿರ್ವಹಿಸದ ಮತ್ತು ಗುರಿ = 1, ಅಂದರೆ ಸರಾಸರಿ ಡೇಟಾವನ್ನು ಬಳಸಿಕೊಂಡು ಅದೇ ಲೆಕ್ಕಾಚಾರ ಮಾಡಬಹುದು ಆಡಿಟ್ವೈಟ್ಸ್_ಸ್ಪಾರ್ಕ್_ಎಸ್ವಿಡಿ ಅವರು ಇಷ್ಟಪಟ್ಟ ವಸ್ತುಗಳ ಮೂಲಕ ಬಳಕೆದಾರರಿಂದ. ಜೊತೆಗೆ ಪ್ರಮುಖ ಚಿಹ್ನೆಗಳು ಆಡಿಟ್ವೈಟ್ಸ್_ಸ್ಪಾರ್ಕ್_ಎಸ್ವಿಡಿ, ಹಲವಾರು ಇದ್ದವು. ಅವುಗಳಲ್ಲಿ ಕೆಲವು ಇಲ್ಲಿವೆ:

  • ಆಡಿಟ್ವೇಟ್ಗಳುCtrಲಿಂಗ
  • ಆಡಿಟ್ವೇಟ್ಗಳುCtrHigh
  • userOwnerCounterCreateLikes

ಉದಾಹರಣೆಗೆ, ಸರಾಸರಿ ಆಡಿಟ್ವೇಟ್ಗಳುCtrಲಿಂಗ userId ಪ್ರಕಾರ ಇದು ಸರಾಸರಿ ಮೌಲ್ಯದಂತೆಯೇ ಪ್ರಮುಖ ವೈಶಿಷ್ಟ್ಯವಾಗಿದೆ userOwnerCounterCreateLikes userId+ownerId ಮೂಲಕ. ಇದು ಈಗಾಗಲೇ ನೀವು ಕ್ಷೇತ್ರಗಳ ಅರ್ಥವನ್ನು ಅರ್ಥಮಾಡಿಕೊಳ್ಳಬೇಕು ಎಂದು ಯೋಚಿಸುವಂತೆ ಮಾಡಬೇಕು.

ಪ್ರಮುಖ ಲಕ್ಷಣಗಳೂ ಇದ್ದವು ಆಡಿಟ್‌ವೈಟ್ಸ್‌ಲೈಕ್ಸ್‌ಕೌಂಟ್ и ಆಡಿಟ್‌ವೈಟ್ಸ್ ಶೋಗಳ ಎಣಿಕೆ. ಒಂದರಿಂದ ಇನ್ನೊಂದನ್ನು ಭಾಗಿಸಿ, ಇನ್ನೂ ಹೆಚ್ಚಿನ ವೈಶಿಷ್ಟ್ಯವನ್ನು ಪಡೆಯಲಾಯಿತು.

ಡೇಟಾ ಸೋರಿಕೆಯಾಗುತ್ತದೆ

ಸ್ಪರ್ಧೆ ಮತ್ತು ಉತ್ಪಾದನಾ ಮಾಡೆಲಿಂಗ್ ವಿಭಿನ್ನ ಕಾರ್ಯಗಳಾಗಿವೆ. ಡೇಟಾವನ್ನು ಸಿದ್ಧಪಡಿಸುವಾಗ, ಎಲ್ಲಾ ವಿವರಗಳನ್ನು ಗಣನೆಗೆ ತೆಗೆದುಕೊಳ್ಳುವುದು ತುಂಬಾ ಕಷ್ಟ ಮತ್ತು ಪರೀಕ್ಷೆಯಲ್ಲಿ ಗುರಿ ವೇರಿಯಬಲ್ ಬಗ್ಗೆ ಕೆಲವು ಕ್ಷುಲ್ಲಕವಲ್ಲದ ಮಾಹಿತಿಯನ್ನು ತಿಳಿಸುವುದಿಲ್ಲ. ನಾವು ಉತ್ಪಾದನಾ ಪರಿಹಾರವನ್ನು ರಚಿಸುತ್ತಿದ್ದರೆ, ಮಾದರಿಯನ್ನು ತರಬೇತಿ ಮಾಡುವಾಗ ಡೇಟಾ ಸೋರಿಕೆಯನ್ನು ಬಳಸುವುದನ್ನು ತಪ್ಪಿಸಲು ನಾವು ಪ್ರಯತ್ನಿಸುತ್ತೇವೆ. ಆದರೆ ನಾವು ಸ್ಪರ್ಧೆಯನ್ನು ಗೆಲ್ಲಲು ಬಯಸಿದರೆ, ಡೇಟಾ ಸೋರಿಕೆಗಳು ಅತ್ಯುತ್ತಮ ವೈಶಿಷ್ಟ್ಯಗಳಾಗಿವೆ.

ಡೇಟಾವನ್ನು ಅಧ್ಯಯನ ಮಾಡಿದ ನಂತರ, ಆಬ್ಜೆಕ್ಟ್ಐಡಿ ಮೌಲ್ಯಗಳ ಪ್ರಕಾರ ನೀವು ಅದನ್ನು ನೋಡಬಹುದು ಆಡಿಟ್‌ವೈಟ್ಸ್‌ಲೈಕ್ಸ್‌ಕೌಂಟ್ и ಆಡಿಟ್‌ವೈಟ್ಸ್ ಶೋಗಳ ಎಣಿಕೆ ಬದಲಾವಣೆ, ಅಂದರೆ ಈ ವೈಶಿಷ್ಟ್ಯಗಳ ಗರಿಷ್ಠ ಮೌಲ್ಯಗಳ ಅನುಪಾತವು ಪ್ರದರ್ಶನದ ಸಮಯದಲ್ಲಿ ಅನುಪಾತಕ್ಕಿಂತ ನಂತರದ ಪರಿವರ್ತನೆಯನ್ನು ಉತ್ತಮವಾಗಿ ಪ್ರತಿಬಿಂಬಿಸುತ್ತದೆ.

ನಾವು ಕಂಡುಕೊಂಡ ಮೊದಲ ಸೋರಿಕೆ ಆಡಿಟ್‌ವೈಟ್‌ಗಳುಲೈಕ್ಸ್‌ಕೌಂಟ್‌ಮ್ಯಾಕ್ಸ್/ಆಡಿಟ್‌ವೈಟ್ಸ್ ಶೋಗಳು ಕೌಂಟ್‌ಮ್ಯಾಕ್ಸ್.
ಆದರೆ ನಾವು ಡೇಟಾವನ್ನು ಹೆಚ್ಚು ಹತ್ತಿರದಿಂದ ನೋಡಿದರೆ ಏನು? ಪ್ರದರ್ಶನದ ದಿನಾಂಕದ ಪ್ರಕಾರ ವಿಂಗಡಿಸೋಣ ಮತ್ತು ಪಡೆಯೋಣ:

objectId ಬಳಕೆದಾರರ ಗುರುತು ಆಡಿಟ್‌ವೈಟ್ಸ್ ಶೋಗಳ ಎಣಿಕೆ ಆಡಿಟ್‌ವೈಟ್ಸ್‌ಲೈಕ್ಸ್‌ಕೌಂಟ್ ಗುರಿ (ಇಷ್ಟಪಟ್ಟಿದೆ)
1 1 12 3 ಬಹುಷಃ ಇಲ್ಲ
1 2 15 3 ಬಹುಶಃ ಹೌದು
1 3 16 4

ಅಂತಹ ಮೊದಲ ಉದಾಹರಣೆಯನ್ನು ನಾನು ಕಂಡುಕೊಂಡಾಗ ಅದು ಆಶ್ಚರ್ಯಕರವಾಗಿತ್ತು ಮತ್ತು ನನ್ನ ಭವಿಷ್ಯ ನಿಜವಾಗಲಿಲ್ಲ. ಆದರೆ, ವಸ್ತುವಿನೊಳಗಿನ ಈ ಗುಣಲಕ್ಷಣಗಳ ಗರಿಷ್ಠ ಮೌಲ್ಯಗಳು ಹೆಚ್ಚಳವನ್ನು ನೀಡುತ್ತವೆ ಎಂಬ ಅಂಶವನ್ನು ಗಣನೆಗೆ ತೆಗೆದುಕೊಂಡು, ನಾವು ಸೋಮಾರಿಯಾಗಿರಲಿಲ್ಲ ಮತ್ತು ಕಂಡುಹಿಡಿಯಲು ನಿರ್ಧರಿಸಿದ್ದೇವೆ ಆಡಿಟ್‌ವೈಟ್‌ಗಳು ಶೋಗಳುಕೌಂಟ್‌ನೆಕ್ಸ್ಟ್ и ಆಡಿಟ್‌ವೈಟ್‌ಗಳುಲೈಕ್ಸ್‌ಕೌಂಟ್‌ನೆಕ್ಸ್ಟ್, ಅಂದರೆ, ಮುಂದಿನ ಕ್ಷಣದಲ್ಲಿ ಮೌಲ್ಯಗಳು. ವೈಶಿಷ್ಟ್ಯವನ್ನು ಸೇರಿಸುವ ಮೂಲಕ
(auditweightsShowsCountNext-auditweightsShowsCount)/(auditweightsLikesCount-AuditweightsLikesCountNext) ನಾವು ತ್ವರಿತವಾಗಿ ತೀಕ್ಷ್ಣವಾದ ಜಿಗಿತವನ್ನು ಮಾಡಿದೆವು.
ಕೆಳಗಿನ ಮೌಲ್ಯಗಳನ್ನು ಕಂಡುಹಿಡಿಯುವ ಮೂಲಕ ಇದೇ ರೀತಿಯ ಸೋರಿಕೆಗಳನ್ನು ಬಳಸಬಹುದು userOwnerCounterCreateLikes userId+ownerId ಒಳಗೆ ಮತ್ತು, ಉದಾಹರಣೆಗೆ, ಆಡಿಟ್ವೇಟ್ಗಳುCtrಲಿಂಗ objectId+userGender ಒಳಗೆ. ನಾವು ಸೋರಿಕೆಯೊಂದಿಗೆ 6 ರೀತಿಯ ಕ್ಷೇತ್ರಗಳನ್ನು ಕಂಡುಕೊಂಡಿದ್ದೇವೆ ಮತ್ತು ಅವುಗಳಿಂದ ಸಾಧ್ಯವಾದಷ್ಟು ಮಾಹಿತಿಯನ್ನು ಹೊರತೆಗೆಯುತ್ತೇವೆ.

ಆ ಹೊತ್ತಿಗೆ, ನಾವು ಸಹಯೋಗದ ವೈಶಿಷ್ಟ್ಯಗಳಿಂದ ಸಾಧ್ಯವಾದಷ್ಟು ಮಾಹಿತಿಯನ್ನು ಹಿಂಡಿದ್ದೇವೆ, ಆದರೆ ಚಿತ್ರ ಮತ್ತು ಪಠ್ಯ ಸ್ಪರ್ಧೆಗಳಿಗೆ ಹಿಂತಿರುಗಲಿಲ್ಲ. ನಾನು ಪರಿಶೀಲಿಸಲು ಉತ್ತಮ ಆಲೋಚನೆಯನ್ನು ಹೊಂದಿದ್ದೇನೆ: ಸಂಬಂಧಿತ ಸ್ಪರ್ಧೆಗಳಲ್ಲಿ ಚಿತ್ರಗಳು ಅಥವಾ ಪಠ್ಯಗಳ ಆಧಾರದ ಮೇಲೆ ನೇರವಾಗಿ ವೈಶಿಷ್ಟ್ಯಗಳು ಎಷ್ಟು ನೀಡುತ್ತವೆ?

ಚಿತ್ರ ಮತ್ತು ಪಠ್ಯ ಸ್ಪರ್ಧೆಗಳಲ್ಲಿ ಯಾವುದೇ ಸೋರಿಕೆಗಳಿಲ್ಲ, ಆದರೆ ಆ ಹೊತ್ತಿಗೆ ನಾನು ಡೀಫಾಲ್ಟ್ ಕ್ಯಾಟ್‌ಬೂಸ್ಟ್ ನಿಯತಾಂಕಗಳನ್ನು ಹಿಂತಿರುಗಿಸಿದೆ, ಕೋಡ್ ಅನ್ನು ಸ್ವಚ್ಛಗೊಳಿಸಿದೆ ಮತ್ತು ಕೆಲವು ವೈಶಿಷ್ಟ್ಯಗಳನ್ನು ಸೇರಿಸಿದೆ. ಒಟ್ಟು ಹೀಗಿತ್ತು:

ನಿರ್ಧಾರವನ್ನು ಶೀಘ್ರದಲ್ಲೇ
ಚಿತ್ರಗಳೊಂದಿಗೆ ಗರಿಷ್ಠ 0.6411
ಗರಿಷ್ಠ ಯಾವುದೇ ಚಿತ್ರಗಳಿಲ್ಲ 0.6297
ಎರಡನೇ ಸ್ಥಾನದ ಫಲಿತಾಂಶ 0.6295

ನಿರ್ಧಾರವನ್ನು ಶೀಘ್ರದಲ್ಲೇ
ಪಠ್ಯಗಳೊಂದಿಗೆ ಗರಿಷ್ಠ 0.666
ಪಠ್ಯಗಳಿಲ್ಲದೆ ಗರಿಷ್ಠ 0.660
ಎರಡನೇ ಸ್ಥಾನದ ಫಲಿತಾಂಶ 0.656

ನಿರ್ಧಾರವನ್ನು ಶೀಘ್ರದಲ್ಲೇ
ಸಹಯೋಗದಲ್ಲಿ ಗರಿಷ್ಠ 0.745
ಎರಡನೇ ಸ್ಥಾನದ ಫಲಿತಾಂಶ 0.723

ನಾವು ಪಠ್ಯಗಳು ಮತ್ತು ಚಿತ್ರಗಳಿಂದ ಹೆಚ್ಚಿನದನ್ನು ಹಿಂಡುವ ಸಾಧ್ಯತೆಯಿಲ್ಲ ಎಂಬುದು ಸ್ಪಷ್ಟವಾಯಿತು ಮತ್ತು ಒಂದೆರಡು ಅತ್ಯಂತ ಆಸಕ್ತಿದಾಯಕ ವಿಚಾರಗಳನ್ನು ಪ್ರಯತ್ನಿಸಿದ ನಂತರ, ನಾವು ಅವರೊಂದಿಗೆ ಕೆಲಸ ಮಾಡುವುದನ್ನು ನಿಲ್ಲಿಸಿದ್ದೇವೆ.

ಸಹಕಾರಿ ವ್ಯವಸ್ಥೆಗಳಲ್ಲಿನ ವೈಶಿಷ್ಟ್ಯಗಳ ಮತ್ತಷ್ಟು ಪೀಳಿಗೆಯು ಹೆಚ್ಚಳವನ್ನು ನೀಡಲಿಲ್ಲ ಮತ್ತು ನಾವು ಶ್ರೇಯಾಂಕವನ್ನು ಪ್ರಾರಂಭಿಸಿದ್ದೇವೆ. ಆನ್‌ಲೈನ್ ಹಂತದಲ್ಲಿ, ವರ್ಗೀಕರಣ ಮತ್ತು ಶ್ರೇಯಾಂಕದ ಸಮಗ್ರತೆಯು ನನಗೆ ಒಂದು ಸಣ್ಣ ಹೆಚ್ಚಳವನ್ನು ನೀಡಿತು, ಏಕೆಂದರೆ ನಾನು ವರ್ಗೀಕರಣವನ್ನು ಅಂಡರ್‌ಟ್ರೇನ್ ಮಾಡಿದ್ದರಿಂದ ಅದು ಬದಲಾಯಿತು. YetiRanlPairwise ಸೇರಿದಂತೆ ಯಾವುದೇ ದೋಷ ಕಾರ್ಯಗಳು, LogLoss ಮಾಡಿದ ಫಲಿತಾಂಶದ ಸಮೀಪದಲ್ಲಿ ಎಲ್ಲಿಯೂ ಉತ್ಪತ್ತಿಯಾಗುವುದಿಲ್ಲ (0,745 vs. 0,725). QueryCrossEntropy ಗಾಗಿ ಇನ್ನೂ ಭರವಸೆ ಇತ್ತು, ಅದನ್ನು ಪ್ರಾರಂಭಿಸಲಾಗಲಿಲ್ಲ.

ಆಫ್‌ಲೈನ್ ಹಂತ

ಆಫ್‌ಲೈನ್ ಹಂತದಲ್ಲಿ, ಡೇಟಾ ರಚನೆಯು ಒಂದೇ ಆಗಿರುತ್ತದೆ, ಆದರೆ ಸಣ್ಣ ಬದಲಾವಣೆಗಳಿವೆ:

  • ಐಡೆಂಟಿಫೈಯರ್ ಯೂಸರ್ ಐಡಿ, ಆಬ್ಜೆಕ್ಟ್ ಐಡಿ, ಓನರ್ ಐಡಿಯನ್ನು ಮರು ಯಾದೃಚ್ಛಿಕಗೊಳಿಸಲಾಗಿದೆ;
  • ಹಲವಾರು ಚಿಹ್ನೆಗಳನ್ನು ತೆಗೆದುಹಾಕಲಾಗಿದೆ ಮತ್ತು ಹಲವಾರು ಮರುಹೆಸರಿಸಲಾಗಿದೆ;
  • ಡೇಟಾವು ಸುಮಾರು 1,5 ಪಟ್ಟು ಹೆಚ್ಚಾಗಿದೆ.

ಪಟ್ಟಿ ಮಾಡಲಾದ ತೊಂದರೆಗಳ ಜೊತೆಗೆ, ಒಂದು ದೊಡ್ಡ ಪ್ಲಸ್ ಇತ್ತು: ತಂಡಕ್ಕೆ RTX 2080TI ಯೊಂದಿಗೆ ದೊಡ್ಡ ಸರ್ವರ್ ಅನ್ನು ನಿಯೋಜಿಸಲಾಗಿದೆ. ನಾನು ಬಹಳ ಸಮಯದಿಂದ htop ಅನ್ನು ಆನಂದಿಸಿದೆ.
SNA ಹ್ಯಾಕಥಾನ್ 2019

ಒಂದೇ ಒಂದು ಕಲ್ಪನೆ ಇತ್ತು - ಈಗಾಗಲೇ ಅಸ್ತಿತ್ವದಲ್ಲಿರುವುದನ್ನು ಸರಳವಾಗಿ ಪುನರುತ್ಪಾದಿಸಲು. ಸರ್ವರ್‌ನಲ್ಲಿ ಪರಿಸರವನ್ನು ಹೊಂದಿಸಲು ಒಂದೆರಡು ಗಂಟೆಗಳ ಕಾಲ ಕಳೆದ ನಂತರ, ಫಲಿತಾಂಶಗಳನ್ನು ಪುನರುತ್ಪಾದಿಸಬಹುದೆಂದು ನಾವು ಕ್ರಮೇಣ ಪರಿಶೀಲಿಸಲು ಪ್ರಾರಂಭಿಸಿದ್ದೇವೆ. ನಾವು ಎದುರಿಸುತ್ತಿರುವ ಮುಖ್ಯ ಸಮಸ್ಯೆ ಡೇಟಾ ಪರಿಮಾಣದ ಹೆಚ್ಚಳವಾಗಿದೆ. ಲೋಡ್ ಅನ್ನು ಸ್ವಲ್ಪ ಕಡಿಮೆ ಮಾಡಲು ಮತ್ತು ಕ್ಯಾಟ್ಬೂಸ್ಟ್ ಪ್ಯಾರಾಮೀಟರ್ ಅನ್ನು ಹೊಂದಿಸಲು ನಾವು ನಿರ್ಧರಿಸಿದ್ದೇವೆ ctr_complexity=1. ಇದು ವೇಗವನ್ನು ಸ್ವಲ್ಪ ಕಡಿಮೆ ಮಾಡುತ್ತದೆ, ಆದರೆ ನನ್ನ ಮಾದರಿ ಕೆಲಸ ಮಾಡಲು ಪ್ರಾರಂಭಿಸಿತು, ಫಲಿತಾಂಶವು ಉತ್ತಮವಾಗಿದೆ - 0,733. ಸೆರ್ಗೆ, ನನ್ನಂತಲ್ಲದೆ, ಡೇಟಾವನ್ನು 2 ಭಾಗಗಳಾಗಿ ವಿಭಜಿಸಲಿಲ್ಲ ಮತ್ತು ಎಲ್ಲಾ ಡೇಟಾದ ಮೇಲೆ ತರಬೇತಿ ನೀಡಲಿಲ್ಲ, ಆದರೂ ಇದು ಆನ್‌ಲೈನ್ ಹಂತದಲ್ಲಿ ಉತ್ತಮ ಫಲಿತಾಂಶಗಳನ್ನು ನೀಡಿತು, ಆಫ್‌ಲೈನ್ ಹಂತದಲ್ಲಿ ಅನೇಕ ತೊಂದರೆಗಳಿವೆ. ನಾವು ರಚಿಸಿದ ಎಲ್ಲಾ ವೈಶಿಷ್ಟ್ಯಗಳನ್ನು ನಾವು ತೆಗೆದುಕೊಂಡರೆ ಮತ್ತು ಅವುಗಳನ್ನು ಕ್ಯಾಟ್‌ಬೂಸ್ಟ್‌ಗೆ ತಳ್ಳಲು ಪ್ರಯತ್ನಿಸಿದರೆ, ಆನ್‌ಲೈನ್ ಹಂತದಲ್ಲಿ ಏನೂ ಕೆಲಸ ಮಾಡುವುದಿಲ್ಲ. ಸೆರ್ಗೆ ಟೈಪ್ ಆಪ್ಟಿಮೈಸೇಶನ್ ಮಾಡಿದರು, ಉದಾಹರಣೆಗೆ, ಫ್ಲೋಟ್ 64 ಪ್ರಕಾರಗಳನ್ನು ಫ್ಲೋಟ್ 32 ಗೆ ಪರಿವರ್ತಿಸಿದರು. ಈ ಲೇಖನದಲ್ಲಿ, ಪಾಂಡಾಗಳಲ್ಲಿ ನೀವು ಮೆಮೊರಿ ಆಪ್ಟಿಮೈಸೇಶನ್ ಕುರಿತು ಮಾಹಿತಿಯನ್ನು ಕಾಣಬಹುದು. ಪರಿಣಾಮವಾಗಿ, ಸೆರ್ಗೆ ಎಲ್ಲಾ ಡೇಟಾವನ್ನು ಬಳಸಿಕೊಂಡು CPU ನಲ್ಲಿ ತರಬೇತಿ ಪಡೆದರು ಮತ್ತು ಸುಮಾರು 0,735 ಪಡೆದರು.

ಈ ಫಲಿತಾಂಶಗಳು ಗೆಲ್ಲಲು ಸಾಕಾಗಿತ್ತು, ಆದರೆ ನಾವು ನಮ್ಮ ನಿಜವಾದ ವೇಗವನ್ನು ಮರೆಮಾಡಿದ್ದೇವೆ ಮತ್ತು ಇತರ ತಂಡಗಳು ಅದೇ ರೀತಿ ಮಾಡುತ್ತಿಲ್ಲ ಎಂದು ಖಚಿತವಾಗಿ ಹೇಳಲು ಸಾಧ್ಯವಾಗಲಿಲ್ಲ.

ಕೊನೆಯವರೆಗೂ ಹೋರಾಡಿ

ಕ್ಯಾಟ್ಬೂಸ್ಟ್ ಟ್ಯೂನಿಂಗ್

ನಮ್ಮ ಪರಿಹಾರವನ್ನು ಸಂಪೂರ್ಣವಾಗಿ ಪುನರುತ್ಪಾದಿಸಲಾಗಿದೆ, ನಾವು ಪಠ್ಯ ಡೇಟಾ ಮತ್ತು ಚಿತ್ರಗಳ ವೈಶಿಷ್ಟ್ಯಗಳನ್ನು ಸೇರಿಸಿದ್ದೇವೆ, ಆದ್ದರಿಂದ ಕ್ಯಾಟ್‌ಬೂಸ್ಟ್ ನಿಯತಾಂಕಗಳನ್ನು ಟ್ಯೂನ್ ಮಾಡುವುದು ಮಾತ್ರ ಉಳಿದಿದೆ. ಸೆರ್ಗೆಯವರು ಕಡಿಮೆ ಸಂಖ್ಯೆಯ ಪುನರಾವರ್ತನೆಗಳೊಂದಿಗೆ CPU ನಲ್ಲಿ ತರಬೇತಿ ಪಡೆದರು ಮತ್ತು ನಾನು ctr_complexity=1 ನೊಂದಿಗೆ ತರಬೇತಿ ಪಡೆದಿದ್ದೇನೆ. ಒಂದು ದಿನ ಉಳಿದಿದೆ, ಮತ್ತು ನೀವು ಪುನರಾವರ್ತನೆಗಳನ್ನು ಸೇರಿಸಿದರೆ ಅಥವಾ ctr_complexity ಅನ್ನು ಹೆಚ್ಚಿಸಿದರೆ, ಬೆಳಿಗ್ಗೆ ನೀವು ಇನ್ನೂ ಉತ್ತಮ ವೇಗವನ್ನು ಪಡೆಯಬಹುದು ಮತ್ತು ಇಡೀ ದಿನ ನಡೆಯಬಹುದು.

ಆಫ್‌ಲೈನ್ ಹಂತದಲ್ಲಿ, ಸೈಟ್‌ನಲ್ಲಿ ಉತ್ತಮ ಪರಿಹಾರವನ್ನು ಆಯ್ಕೆ ಮಾಡದೆ ವೇಗವನ್ನು ಸುಲಭವಾಗಿ ಮರೆಮಾಡಬಹುದು. ಸಲ್ಲಿಕೆಗಳನ್ನು ಮುಚ್ಚುವ ಮೊದಲು ಕೊನೆಯ ನಿಮಿಷಗಳಲ್ಲಿ ನಾವು ಲೀಡರ್‌ಬೋರ್ಡ್‌ನಲ್ಲಿ ತೀವ್ರ ಬದಲಾವಣೆಗಳನ್ನು ನಿರೀಕ್ಷಿಸಿದ್ದೇವೆ ಮತ್ತು ನಿಲ್ಲಿಸದಿರಲು ನಿರ್ಧರಿಸಿದ್ದೇವೆ.

ಅಣ್ಣಾ ಅವರ ವೀಡಿಯೊದಿಂದ, ಮಾದರಿಯ ಗುಣಮಟ್ಟವನ್ನು ಸುಧಾರಿಸಲು, ಈ ಕೆಳಗಿನ ನಿಯತಾಂಕಗಳನ್ನು ಆಯ್ಕೆ ಮಾಡುವುದು ಉತ್ತಮ ಎಂದು ನಾನು ಕಲಿತಿದ್ದೇನೆ:

  • ಕಲಿಕೆಯ_ದರ — ಡೇಟಾಸೆಟ್‌ನ ಗಾತ್ರವನ್ನು ಆಧರಿಸಿ ಡೀಫಾಲ್ಟ್ ಮೌಲ್ಯವನ್ನು ಲೆಕ್ಕಹಾಕಲಾಗುತ್ತದೆ. ಕಲಿಕೆಯ_ದರವನ್ನು ಹೆಚ್ಚಿಸಲು ಪುನರಾವರ್ತನೆಗಳ ಸಂಖ್ಯೆಯನ್ನು ಹೆಚ್ಚಿಸುವ ಅಗತ್ಯವಿದೆ.
  • l2_leaf_reg — ರೆಗ್ಯುಲರೈಸೇಶನ್ ಗುಣಾಂಕ, ಡೀಫಾಲ್ಟ್ ಮೌಲ್ಯ 3, ಮೇಲಾಗಿ 2 ರಿಂದ 30 ರವರೆಗೆ ಆಯ್ಕೆ ಮಾಡಿ. ಮೌಲ್ಯವನ್ನು ಕಡಿಮೆ ಮಾಡುವುದರಿಂದ ಮಿತಿಮೀರಿದ ಹೆಚ್ಚಳಕ್ಕೆ ಕಾರಣವಾಗುತ್ತದೆ.
  • ಬ್ಯಾಗಿಂಗ್_ತಾಪಮಾನ - ಮಾದರಿಯಲ್ಲಿನ ವಸ್ತುಗಳ ತೂಕಕ್ಕೆ ಯಾದೃಚ್ಛಿಕತೆಯನ್ನು ಸೇರಿಸುತ್ತದೆ. ಡೀಫಾಲ್ಟ್ ಮೌಲ್ಯವು 1 ಆಗಿದೆ, ಅಲ್ಲಿ ತೂಕವನ್ನು ಘಾತೀಯ ವಿತರಣೆಯಿಂದ ಎಳೆಯಲಾಗುತ್ತದೆ. ಮೌಲ್ಯವನ್ನು ಕಡಿಮೆ ಮಾಡುವುದರಿಂದ ಮಿತಿಮೀರಿದ ಹೆಚ್ಚಳಕ್ಕೆ ಕಾರಣವಾಗುತ್ತದೆ.
  • ಯಾದೃಚ್ಛಿಕ_ಶಕ್ತಿ - ನಿರ್ದಿಷ್ಟ ಪುನರಾವರ್ತನೆಯಲ್ಲಿ ವಿಭಜನೆಗಳ ಆಯ್ಕೆಯ ಮೇಲೆ ಪರಿಣಾಮ ಬೀರುತ್ತದೆ. ಹೆಚ್ಚಿನ ಯಾದೃಚ್ಛಿಕ_ಶಕ್ತಿ, ಕಡಿಮೆ ಪ್ರಾಮುಖ್ಯತೆಯ ವಿಭಜನೆಯ ಹೆಚ್ಚಿನ ಅವಕಾಶವನ್ನು ಆಯ್ಕೆ ಮಾಡಲಾಗುತ್ತದೆ. ಪ್ರತಿ ನಂತರದ ಪುನರಾವರ್ತನೆಯಲ್ಲಿ, ಯಾದೃಚ್ಛಿಕತೆ ಕಡಿಮೆಯಾಗುತ್ತದೆ. ಮೌಲ್ಯವನ್ನು ಕಡಿಮೆ ಮಾಡುವುದರಿಂದ ಮಿತಿಮೀರಿದ ಹೆಚ್ಚಳಕ್ಕೆ ಕಾರಣವಾಗುತ್ತದೆ.

ಇತರ ನಿಯತಾಂಕಗಳು ಅಂತಿಮ ಫಲಿತಾಂಶದ ಮೇಲೆ ಕಡಿಮೆ ಪರಿಣಾಮವನ್ನು ಬೀರುತ್ತವೆ, ಆದ್ದರಿಂದ ನಾನು ಅವುಗಳನ್ನು ಆಯ್ಕೆ ಮಾಡಲು ಪ್ರಯತ್ನಿಸಲಿಲ್ಲ. ctr_complexity=1 ನೊಂದಿಗೆ ನನ್ನ GPU ಡೇಟಾಸೆಟ್‌ನಲ್ಲಿ ತರಬೇತಿಯ ಒಂದು ಪುನರಾವರ್ತನೆಯು 20 ನಿಮಿಷಗಳನ್ನು ತೆಗೆದುಕೊಂಡಿತು ಮತ್ತು ಕಡಿಮೆ ಡೇಟಾಸೆಟ್‌ನಲ್ಲಿ ಆಯ್ಕೆಮಾಡಿದ ಪ್ಯಾರಾಮೀಟರ್‌ಗಳು ಪೂರ್ಣ ಡೇಟಾಸೆಟ್‌ನಲ್ಲಿರುವ ಅತ್ಯುತ್ತಮವಾದವುಗಳಿಗಿಂತ ಸ್ವಲ್ಪ ಭಿನ್ನವಾಗಿರುತ್ತವೆ. ಕೊನೆಯಲ್ಲಿ, ನಾನು 30% ಡೇಟಾದಲ್ಲಿ ಸುಮಾರು 10 ಪುನರಾವರ್ತನೆಗಳನ್ನು ಮಾಡಿದ್ದೇನೆ ಮತ್ತು ನಂತರ ಎಲ್ಲಾ ಡೇಟಾದಲ್ಲಿ ಸುಮಾರು 10 ಪುನರಾವರ್ತನೆಗಳನ್ನು ಮಾಡಿದ್ದೇನೆ. ಇದು ಈ ರೀತಿಯಾಗಿ ಹೊರಹೊಮ್ಮಿತು:

  • ಕಲಿಕೆಯ_ದರ ನಾನು ಡೀಫಾಲ್ಟ್‌ನಿಂದ 40% ಹೆಚ್ಚಿಸಿದೆ;
  • l2_leaf_reg ಅದನ್ನೇ ಬಿಟ್ಟರು;
  • ಬ್ಯಾಗಿಂಗ್_ತಾಪಮಾನ и ಯಾದೃಚ್ಛಿಕ_ಶಕ್ತಿ 0,8ಕ್ಕೆ ಇಳಿಕೆಯಾಗಿದೆ.

ಡೀಫಾಲ್ಟ್ ನಿಯತಾಂಕಗಳೊಂದಿಗೆ ಮಾದರಿಯು ಕಡಿಮೆ ತರಬೇತಿ ಪಡೆದಿದೆ ಎಂದು ನಾವು ತೀರ್ಮಾನಿಸಬಹುದು.

ಲೀಡರ್‌ಬೋರ್ಡ್‌ನಲ್ಲಿ ಫಲಿತಾಂಶವನ್ನು ನೋಡಿದಾಗ ನನಗೆ ತುಂಬಾ ಆಶ್ಚರ್ಯವಾಯಿತು:

ಮಾದರಿ 1 ಮಾದರಿ 2 ಮಾದರಿ 3 ಮಾದರಿ ಮೇಳ
ಶ್ರುತಿ ಇಲ್ಲದೆ 0.7403 0.7404 0.7404 0.7407
ಶ್ರುತಿಯೊಂದಿಗೆ 0.7406 0.7405 0.7406 0.7408

ಮಾದರಿಯ ತ್ವರಿತ ಅಪ್ಲಿಕೇಶನ್ ಅಗತ್ಯವಿಲ್ಲದಿದ್ದರೆ, ಆಪ್ಟಿಮೈಸ್ ಮಾಡದ ನಿಯತಾಂಕಗಳನ್ನು ಬಳಸಿಕೊಂಡು ಹಲವಾರು ಮಾದರಿಗಳ ಸಮೂಹದೊಂದಿಗೆ ನಿಯತಾಂಕಗಳ ಆಯ್ಕೆಯನ್ನು ಬದಲಿಸುವುದು ಉತ್ತಮ ಎಂದು ನಾನು ತೀರ್ಮಾನಿಸಿದೆ.

ಜಿಪಿಯುನಲ್ಲಿ ಅದನ್ನು ಚಲಾಯಿಸಲು ಸೆರ್ಗೆ ಡೇಟಾಸೆಟ್‌ನ ಗಾತ್ರವನ್ನು ಉತ್ತಮಗೊಳಿಸುತ್ತಿದ್ದರು. ಡೇಟಾದ ಭಾಗವನ್ನು ಕತ್ತರಿಸುವುದು ಸರಳವಾದ ಆಯ್ಕೆಯಾಗಿದೆ, ಆದರೆ ಇದನ್ನು ಹಲವಾರು ವಿಧಗಳಲ್ಲಿ ಮಾಡಬಹುದು:

  • ಡೇಟಾಸೆಟ್ ಮೆಮೊರಿಗೆ ಹೊಂದಿಕೊಳ್ಳಲು ಪ್ರಾರಂಭವಾಗುವವರೆಗೆ ಹಳೆಯ ಡೇಟಾವನ್ನು (ಫೆಬ್ರವರಿ ಆರಂಭದಲ್ಲಿ) ಕ್ರಮೇಣ ತೆಗೆದುಹಾಕಿ;
  • ಕಡಿಮೆ ಪ್ರಾಮುಖ್ಯತೆಯೊಂದಿಗೆ ವೈಶಿಷ್ಟ್ಯಗಳನ್ನು ತೆಗೆದುಹಾಕಿ;
  • ಕೇವಲ ಒಂದು ನಮೂದು ಇರುವ userIds ಅನ್ನು ತೆಗೆದುಹಾಕಿ;
  • ಪರೀಕ್ಷೆಯಲ್ಲಿರುವ userIdಗಳನ್ನು ಮಾತ್ರ ಬಿಡಿ.

ಮತ್ತು ಅಂತಿಮವಾಗಿ, ಎಲ್ಲಾ ಆಯ್ಕೆಗಳಿಂದ ಸಮಗ್ರತೆಯನ್ನು ಮಾಡಿ.

ಕೊನೆಯ ಮೇಳ

ಕೊನೆಯ ದಿನದ ಸಂಜೆಯ ಹೊತ್ತಿಗೆ, ನಾವು 0,742 ಇಳುವರಿಯನ್ನು ನೀಡುವ ನಮ್ಮ ಮಾದರಿಗಳ ಸಮೂಹವನ್ನು ಹಾಕಿದ್ದೇವೆ. ರಾತ್ರಿಯಲ್ಲಿ ನಾನು ನನ್ನ ಮಾದರಿಯನ್ನು ctr_complexity=2 ನೊಂದಿಗೆ ಪ್ರಾರಂಭಿಸಿದೆ ಮತ್ತು 30 ನಿಮಿಷಗಳ ಬದಲಿಗೆ 5 ಗಂಟೆಗಳ ಕಾಲ ತರಬೇತಿ ನೀಡಿದೆ. ಬೆಳಿಗ್ಗೆ 4 ಗಂಟೆಗೆ ಮಾತ್ರ ಅದನ್ನು ಎಣಿಸಲಾಗಿದೆ, ಮತ್ತು ನಾನು ಕೊನೆಯ ಮೇಳವನ್ನು ಮಾಡಿದೆ, ಅದು ಸಾರ್ವಜನಿಕ ಲೀಡರ್‌ಬೋರ್ಡ್‌ನಲ್ಲಿ 0,7433 ನೀಡಿತು.

ಸಮಸ್ಯೆಯನ್ನು ಪರಿಹರಿಸಲು ವಿಭಿನ್ನ ವಿಧಾನಗಳಿಂದಾಗಿ, ನಮ್ಮ ಭವಿಷ್ಯವಾಣಿಗಳು ಬಲವಾಗಿ ಪರಸ್ಪರ ಸಂಬಂಧ ಹೊಂದಿಲ್ಲ, ಇದು ಸಮಗ್ರದಲ್ಲಿ ಉತ್ತಮ ಹೆಚ್ಚಳವನ್ನು ನೀಡಿತು. ಉತ್ತಮ ಸಮಷ್ಟಿಯನ್ನು ಪಡೆಯಲು, ಕಚ್ಚಾ ಮಾದರಿಯ ಮುನ್ನೋಟಗಳ ಮುನ್ಸೂಚನೆಯನ್ನು ಬಳಸುವುದು ಉತ್ತಮ (prediction_type='RawFormulaVal') ಮತ್ತು scale_pos_weight=neg_count/pos_count ಹೊಂದಿಸಿ.

SNA ಹ್ಯಾಕಥಾನ್ 2019

ವೆಬ್‌ಸೈಟ್‌ನಲ್ಲಿ ನೀವು ನೋಡಬಹುದು ಖಾಸಗಿ ಲೀಡರ್‌ಬೋರ್ಡ್‌ನಲ್ಲಿ ಅಂತಿಮ ಫಲಿತಾಂಶಗಳು.

ಇತರ ಪರಿಹಾರಗಳು

ಅನೇಕ ತಂಡಗಳು ಶಿಫಾರಸು ಮಾಡುವ ಸಿಸ್ಟಮ್ ಅಲ್ಗಾರಿದಮ್‌ಗಳ ನಿಯಮಾವಳಿಗಳನ್ನು ಅನುಸರಿಸಿದವು. ನಾನು, ಈ ಕ್ಷೇತ್ರದಲ್ಲಿ ಪರಿಣಿತನಲ್ಲ, ಅವುಗಳನ್ನು ಮೌಲ್ಯಮಾಪನ ಮಾಡಲು ಸಾಧ್ಯವಿಲ್ಲ, ಆದರೆ ನಾನು 2 ಆಸಕ್ತಿದಾಯಕ ಪರಿಹಾರಗಳನ್ನು ನೆನಪಿಸಿಕೊಳ್ಳುತ್ತೇನೆ.

  • ನಿಕೋಲಾಯ್ ಅನೋಖಿನ್ ಅವರ ಪರಿಹಾರ. ನಿಕೋಲಾಯ್, Mail.ru ನ ಉದ್ಯೋಗಿಯಾಗಿರುವುದರಿಂದ, ಬಹುಮಾನಗಳಿಗೆ ಅರ್ಜಿ ಸಲ್ಲಿಸಲಿಲ್ಲ, ಆದ್ದರಿಂದ ಅವರ ಗುರಿ ಗರಿಷ್ಠ ವೇಗವನ್ನು ಸಾಧಿಸುವುದು ಅಲ್ಲ, ಆದರೆ ಸುಲಭವಾಗಿ ಸ್ಕೇಲೆಬಲ್ ಪರಿಹಾರವನ್ನು ಪಡೆಯುವುದು.
  • ಜ್ಯೂರಿ ಪ್ರಶಸ್ತಿ ವಿಜೇತ ತಂಡದ ನಿರ್ಧಾರವನ್ನು ಆಧರಿಸಿದೆ ಈ ಲೇಖನ facebook ನಿಂದ, ಹಸ್ತಚಾಲಿತ ಕೆಲಸವಿಲ್ಲದೆ ಉತ್ತಮ ಇಮೇಜ್ ಕ್ಲಸ್ಟರಿಂಗ್‌ಗೆ ಅನುಮತಿಸಲಾಗಿದೆ.

ತೀರ್ಮಾನಕ್ಕೆ

ನನ್ನ ಸ್ಮರಣೆಯಲ್ಲಿ ಹೆಚ್ಚು ಅಂಟಿಕೊಂಡಿರುವುದು:

  • ಡೇಟಾದಲ್ಲಿ ವರ್ಗೀಯ ವೈಶಿಷ್ಟ್ಯಗಳಿದ್ದರೆ ಮತ್ತು ಗುರಿ ಎನ್‌ಕೋಡಿಂಗ್ ಅನ್ನು ಸರಿಯಾಗಿ ಮಾಡುವುದು ಹೇಗೆ ಎಂದು ನಿಮಗೆ ತಿಳಿದಿದ್ದರೆ, ಕ್ಯಾಟ್‌ಬೂಸ್ಟ್ ಅನ್ನು ಪ್ರಯತ್ನಿಸುವುದು ಇನ್ನೂ ಉತ್ತಮವಾಗಿದೆ.
  • ನೀವು ಸ್ಪರ್ಧೆಯಲ್ಲಿ ಭಾಗವಹಿಸುತ್ತಿದ್ದರೆ, learning_rate ಮತ್ತು ಪುನರಾವರ್ತನೆಗಳನ್ನು ಹೊರತುಪಡಿಸಿ ಬೇರೆ ನಿಯತಾಂಕಗಳನ್ನು ಆಯ್ಕೆಮಾಡಲು ನೀವು ಸಮಯವನ್ನು ವ್ಯರ್ಥ ಮಾಡಬಾರದು. ಹಲವಾರು ಮಾದರಿಗಳ ಸಮೂಹವನ್ನು ಮಾಡುವುದು ವೇಗವಾದ ಪರಿಹಾರವಾಗಿದೆ.
  • GPU ನಲ್ಲಿ ಬೂಸ್ಟಿಂಗ್ ಕಲಿಯಬಹುದು. Catboost GPU ನಲ್ಲಿ ಬೇಗನೆ ಕಲಿಯಬಹುದು, ಆದರೆ ಇದು ಬಹಳಷ್ಟು ಮೆಮೊರಿಯನ್ನು ತಿನ್ನುತ್ತದೆ.
  • ಆಲೋಚನೆಗಳ ಅಭಿವೃದ್ಧಿ ಮತ್ತು ಪರೀಕ್ಷೆಯ ಸಮಯದಲ್ಲಿ, ಸಣ್ಣ rsm~=0.2 (CPU ಮಾತ್ರ) ಮತ್ತು ctr_complexity=1 ಅನ್ನು ಹೊಂದಿಸುವುದು ಉತ್ತಮ.
  • ಇತರ ತಂಡಗಳಿಗಿಂತ ಭಿನ್ನವಾಗಿ, ನಮ್ಮ ಮಾದರಿಗಳ ಸಮೂಹವು ದೊಡ್ಡ ಹೆಚ್ಚಳವನ್ನು ನೀಡಿತು. ನಾವು ಕೇವಲ ವಿಚಾರಗಳನ್ನು ವಿನಿಮಯ ಮಾಡಿಕೊಂಡಿದ್ದೇವೆ ಮತ್ತು ವಿವಿಧ ಭಾಷೆಗಳಲ್ಲಿ ಬರೆದಿದ್ದೇವೆ. ಡೇಟಾವನ್ನು ವಿಭಜಿಸಲು ನಾವು ವಿಭಿನ್ನ ವಿಧಾನವನ್ನು ಹೊಂದಿದ್ದೇವೆ ಮತ್ತು ಪ್ರತಿಯೊಂದೂ ತನ್ನದೇ ಆದ ದೋಷಗಳನ್ನು ಹೊಂದಿದೆ ಎಂದು ನಾನು ಭಾವಿಸುತ್ತೇನೆ.
  • ವರ್ಗೀಕರಣ ಆಪ್ಟಿಮೈಸೇಶನ್‌ಗಿಂತ ಶ್ರೇಯಾಂಕದ ಆಪ್ಟಿಮೈಸೇಶನ್ ಏಕೆ ಕೆಟ್ಟದಾಗಿ ಕಾರ್ಯನಿರ್ವಹಿಸಿದೆ ಎಂಬುದು ಸ್ಪಷ್ಟವಾಗಿಲ್ಲ.
  • ನಾನು ಪಠ್ಯಗಳೊಂದಿಗೆ ಕೆಲಸ ಮಾಡುವ ಕೆಲವು ಅನುಭವವನ್ನು ಪಡೆದುಕೊಂಡಿದ್ದೇನೆ ಮತ್ತು ಶಿಫಾರಸು ಮಾಡುವ ವ್ಯವಸ್ಥೆಗಳನ್ನು ಹೇಗೆ ಮಾಡಲಾಗಿದೆ ಎಂಬುದರ ಕುರಿತು ತಿಳುವಳಿಕೆಯನ್ನು ಪಡೆದುಕೊಂಡಿದ್ದೇನೆ.

SNA ಹ್ಯಾಕಥಾನ್ 2019

ಸ್ವೀಕರಿಸಿದ ಭಾವನೆಗಳು, ಜ್ಞಾನ ಮತ್ತು ಬಹುಮಾನಗಳಿಗಾಗಿ ಸಂಘಟಕರಿಗೆ ಧನ್ಯವಾದಗಳು.

ಮೂಲ: www.habr.com

ಕಾಮೆಂಟ್ ಅನ್ನು ಸೇರಿಸಿ